Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions R/DataPrepFunctions.R
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,19 @@ if(!require(install.load)) install.packages('install.load'); library(install.loa
install.load::install_load("maptools",'move',"circular","RCurl","dplyr","readr","caTools","adehabitatLT","rgl",
"lubridate","raster","amt","tibble","ezknitr","lattice","rgdal","sp")

## Add 2000 to years
## WE SHOULD CHECK AND KEEP ONLY THE PACKAGES REALLY USED HERE!!

#' Get year from the original dates
#' @param time.stamp string with the timestamp (date and time) of each location
get.year <- function(time.stamp) {
init <- gregexpr('/', time.stamp, fixed = T)[[1]][2] + 1
end <- gregexpr(' ', time.stamp, fixed = T)[[1]][1] - 1
substr(time.stamp, init, end)
}

## New dates
#' Function to add 2000 to years and define new dates
#' @param time.stamp string with the timestamp (date and time) of each location
#' @param year string with new to be replaced to the original year (e.g. 2014 to replace 14)
set.year <- function(time.stamp, year) {
init <- gregexpr('/', time.stamp, fixed = T)[[1]][2]
end <- gregexpr(' ', time.stamp, fixed = T)[[1]][1]
Expand Down
2,118 changes: 2,118 additions & 0 deletions R/JaguarDataPrep.R

Large diffs are not rendered by default.

145 changes: 145 additions & 0 deletions R/landscape_metrics.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
#' ---
#' title: 'Calculating landscape metrics for jaguars in the Neotropics'
#' author: Bernardo Niebuhr <bernardo_brandaum@yahoo.com.br>
#' ---

#' This script aims at calculating landscape metrics for the landscapes inhabited by
#' jaguars in the Neotropics. These jaguars have been monitored with GPS collars.

# packages
library(install.load)
install.load::install_load("tidyverse")
install.load::install_load("landscapemetrics", "landscapetools")

# data
env.data <- read.csv2(file = "maps/table_akde.csv", header = T) %>%
dplyr::as_tibble() %>%
dplyr::mutate(kernel = as.numeric(kernel),
id = as.character(id) %>% ifelse(grepl("J", .), paste(., "per", sep = "_"), .))

jaguar.data <- read.csv2(file = "HR_year_2d.csv", header = T) %>%
dplyr::as_tibble() %>%
tidyr::pivot_longer(cols = starts_with("area_sq_km"),
names_to = "kernel",
names_prefix = "area_sq_km_",
values_to = "akde_area_sq_km") %>%
dplyr::mutate(kernel = as.numeric(kernel),
id = as.character(id),
ID = as.numeric(as.character(ID)))

jaguar.data$ID[(length(jaguar.data$ID)-3):length(jaguar.data$ID)] <- c(118, 118, 119, 119)

# merge
jaguar.env.data <- jaguar.data %>%
dplyr::left_join(env.data, by = c("id", "kernel")) %>%
dplyr::mutate(ID = as.numeric(as.character(ID))) %>%
dplyr::arrange(ID, kernel)

# check
jaguar.env.data %>% print(n = 300)

unique(jaguar.env.data$id)

# landscape metrics
maps.names <- list.files("maps", pattern = "forest_year", full.names = T)

maps <- list()

for(i in 1:nrow(jaguar.env.data)) {

print(i)

id <- str_remove(jaguar.env.data$id[i], pattern = "_per")
kern <- jaguar.env.data$kernel[i]
id_kern <- paste0("ind", id, "_", kern, sep = "")

map.open <- maps.names %>% grep(pattern = id_kern, value = T)

if(length(map.open) == 0) {
maps[[i]] <- NULL
} else {
maps[[i]] <- raster::raster(map.open)
}

}
names(maps) <- paste(jaguar.env.data$id, jaguar.env.data$kernel, sep = "_")

maps

la01 <- landscapetools::show_landscape(maps$`01_95`, discrete = TRUE) +
scale_fill_manual(values = c("blue", "orange", "forestgreen")) +
labs(title = "Paisagem 01") +
theme(legend.position = "none",
axis.text.x = element_text(size = 7),
axis.text.y = element_text(size = 7, angle = 90, hjust = .5))
la01

# function to convert latlong to UTM zone
long2UTM <- function(rast) {
center.long <- sum(raster::extent(rast)[1:2])/2
zone <- (floor((center.long + 180)/6) %% 60) + 1

ifelse(zone > 19,
paste0("+proj=utm +zone=", zone, " +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"),
paste0("+proj=utm +zone=", zone, " +ellps=WGS84 +datum=WGS84 +units=m +no_defs"))
}

# test to find the utm zone
long2UTM(maps[[97]])

# for one landscape
metric <- raster::projectRaster(maps[[2]], crs = long2UTM(maps[[2]]))
metric[] <- ifelse(metric[] != 0, 1, 0)
plot(metric)

landscapemetrics::check_landscape(metric)

class_metrics <- landscapemetrics::list_lsm() %>%
dplyr::filter(level == "class") %>%
dplyr::arrange(type)
class_metrics %>%
print(n = 100)

landscapemetrics::calculate_lsm(landscape = metric,
what = c("lsm_c_area_mn", "lsm_c_area_sd", "lsm_c_area_cv",
"lsm_c_pland", "lsm_c_te", "lsm_c_ed",
"lsm_c_para_mn", "lsm_c_para_sd", "lsm_c_para_cv")) %>%
dplyr::filter(class == 1)

# for all landscapes
jaguar.env.data <- jaguar.env.data %>%
dplyr::mutate(patch_area_hectares_CV = NA,
patch_area_hectares_avg = NA,
patch_area_hectares_sd = NA,
edge_density_m_sqm = NA,
perimeter_area_ratio_m_sqm_CV = NA,
perimeter_area_ratio_m_sqm_avg = NA,
perimeter_area_ratio_m_sqm_sd = NA,
p_landscape = NA,
total_edge_m = NA)

for(i in 1:length(maps)) {

print(i)

if(!is.null(maps[[i]])) {
metric <- raster::projectRaster(maps[[i]], crs = long2UTM(maps[[i]]))
metric[] <- ifelse(metric[] != 0, 1, 0)

vals <- landscapemetrics::calculate_lsm(landscape = metric,
what = c("lsm_c_area_mn", "lsm_c_area_sd", "lsm_c_area_cv",
"lsm_c_pland", "lsm_c_te", "lsm_c_ed",
"lsm_c_para_mn", "lsm_c_para_sd", "lsm_c_para_cv")) %>%
dplyr::filter(class == 1) %>%
pull(value)

jaguar.env.data[i,20:ncol(jaguar.env.data)] <- vals
}

}

jaguar.env.data

# export
jaguar.env.data %>%
readr::write_csv2(path = "jaguar_env_data_complete.csv")
3 changes: 3 additions & 0 deletions _gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.RData
*.RHistory
*~
Binary file not shown.
121 changes: 121 additions & 0 deletions src/YEARS_JAGUAR_FINAL.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
ID;Sex;Year;nPoints;Year_2d
1;Female;2010;279;10
2;Female;2010;84;10
3;Male;2009;148;9
4;Female;2011;500;11
5;Female;2009;280;9
6;Male;2009;983;9
7;Male;2011;621;11
8;Male;2009;332;9
9;Female;2014;1018;14
10;Female;2014;1134;14
11;Female;2014;631;14
12;Female;2015;2058;15
13;Male;2015;4576;15
14;Male;2012;185;12
15;Male;2013;1221;13
16;Male;2011;1843;11
17;Male;2014;537;14
18;Male;2015;1654;15
19;Female;2011;704;11
20;Male;2015;2115;15
21;Female;2011;237;11
22;Male;2014;1719;14
23;Male;2014;572;14
24;Male;2012;124;12
25;Female;2012;842;12
25_2015;female;2015;2232;15
26;Female;2015;3811;15
27;Female;2010;303;10
28;Female;2010;205;10
29;Female;2011;67;11
30;Female;2012;461;12
31;Female;2013;69;13
32;Female;2012;121;12
33;Female;2013;99;13
34;Female;2003;92;3
35;Female;2001;10;1
36;Female;2000;16;0
37;Female;2002;211;2
38;Female;2002;18;2
39;Female;2005;169;5
40;Female;2004;183;4
41;Female;2015;4577;15
42;Male;2009;7667;9
43;Female;2013;574;13
44;Female;2012;88;12
45;Female;2012;39;12
46;Female;2012;230;12
47;Male;2012;561;12
48;Male;2012;72;12
49;Male;2015;544;15
50;Male;2014;1127;14
51;Male;2010;727;10
52;Female;2014;615;14
53;Male;2010;132;10
53_2013;Male;2013;167;13
54;Male;2010;128;10
55;Male;2011;141;11
56;Male;2011;109;11
57;Male;2011;28;11
58;Male;2003;159;3
59;Male;2013;301;13
60;Male;2013;610;13
61;Male;2013;109;13
62;Male;2003;156;3
63;Male;2005;609;5
64;Male;2012;1613;12
65;Female;2014;1010;14
66;Female;2013;53;13
67;Female;2014;131;14
68;Male;2011;996;11
69;Female;2013;1022;13
70;Male;2002;594;2
71;Female;2003;614;3
72;Male;2003;556;3
73;Male;2004;620;4
74;Female;2005;713;5
75;Female;2006;940;6
76;Female;2006;887;6
77;Male;2006;861;6
78;Female;2008;404;8
79;Female;2015;2202;15
80;Male;2010;479;10
81;Male;2014;6821;14
82;Male;2015;687;15
83;Male;2012;112;12
84;Female;2013;4295;13
85;Male;2014;671;14
86;Female;2013;1111;13
87;Female;2012;398;12
88;Female;2014;650;14
89;Male;2013;1152;13
89_2015;Male;2015;799;15
90;Female;2012;188;12
91;Male;2011;50;11
92;Female;2012;59;12
93;Male;2014;903;14
94;Male;2015;516;15
95;Male;2013;61;13
96;Female;2013;491;13
97;Male;2014;260;14
98;Female;2011;746;11
99;Female;2013;3216;13
100;Female;2015;42;15
101;Male;2015;296;15
102;Female;2016;151;16
103;Female;2014;20;14
104;Male;2015;118;15
105;Female;2009;1355;9
106;Male;2009;225;9
107;Male;2008;287;8
108;Male;2008;481;8
109;Female;2008;165;8
110;Male;2010;166;10
111;Female;2009;1051;9
112;Female;2008;202;8
113;Female;2008;481;8
114;Female;2008;873;8
115;Female;2008;848;8
116;Male;2015;1549;15
117;Female;2015;1888;15
Loading