# resample and scaled values for POenv_100k_unscaled <- terra::resample(env, latam_raster, method='bilinear') %>%classify(cbind(NaN, NA))env_100k_resampled <- env_100k_unscaled %>%scale() # scaled values to 0 mean and sd of 1
# calculate area in each raster cellPO_ebarbara.area <- terra::cellSize(PO_ebarbara_time1_raster[[1]], unit='m', transform=F) %>%classify(cbind(NaN, NA)) %>% terra::values()# calculate coordinates for each raster cellPO_ebarbara.coords <- terra::xyFromCell(PO_ebarbara_time1_raster, cell=1:ncell(PO_ebarbara_time1_raster)) %>%as.data.frame()names(PO_ebarbara.coords) <-c('X', 'Y')# number of cells in the rasters (both the same)PO_ebarbara.cell <-1:ncell(PO_ebarbara_time1_raster)# with the environmental variables values for each cellPO_ebarbara.env <- env_100k_resampled[] # scaled values# with the mean accessibility value for each cellPO_ebarbara.acce <- acce_100k_resampled # scaled values# calculate point count in each raster cellPO_ebarbara_time1.count <- PO_ebarbara_time1_raster %>%classify(cbind(NaN, NA)) %>% terra::values() %>% as_tibble %>% dplyr::select(count)PO_ebarbara_time2.count <- PO_ebarbara_time2_raster %>%classify(cbind(NaN, NA)) %>% terra::values() %>% as_tibble %>% dplyr::select(count)PO_ebarbara.countries <- latam_countries %>%classify(cbind(NaN, NA))# save time1 and time2 datasets PO_ebarbara_time1.model.data <-data.frame(PO_ebarbara.coords,pixel = PO_ebarbara.cell[],area = PO_ebarbara.area,pt.count = PO_ebarbara_time1.count,env = PO_ebarbara.env,acce = PO_ebarbara.acce[], country = PO_ebarbara.countries[])PO_ebarbara_time2.model.data <-data.frame(PO_ebarbara.coords,pixel = PO_ebarbara.cell[],area = PO_ebarbara.area,pt.count = PO_ebarbara_time2.count,env = PO_ebarbara.env,acce = PO_ebarbara.acce[], country = PO_ebarbara.countries[])
Check data
Code
head(PO_ebarbara_time1.model.data) %>%kable()
X
Y
pixel
area
count
env.bio_10
env.bio_17
env.nontree
env.npp
acce
countries
-4357686
3867905
1
1e+10
NA
NA
NA
NA
NA
NA
NA
-4257686
3867905
2
1e+10
NA
NA
NA
NA
NA
NA
NA
-4157686
3867905
3
1e+10
0
-1.690030
1.194141
0.4573118
-1.194929
0.0115694
47
-4057686
3867905
4
1e+10
0
-1.674205
2.200438
-0.6126802
-1.597718
0.0209173
47
-3957686
3867905
5
1e+10
NA
-1.680337
2.434686
-0.9573888
-1.786366
0.0270081
NA
-3857686
3867905
6
1e+10
NA
-1.600721
2.471932
-1.6611980
-1.858230
0.0456958
NA
Code
head(PO_ebarbara_time2.model.data) %>%kable()
X
Y
pixel
area
count
env.bio_10
env.bio_17
env.nontree
env.npp
acce
countries
-4357686
3867905
1
1e+10
NA
NA
NA
NA
NA
NA
NA
-4257686
3867905
2
1e+10
NA
NA
NA
NA
NA
NA
NA
-4157686
3867905
3
1e+10
0
-1.690030
1.194141
0.4573118
-1.194929
0.0115694
47
-4057686
3867905
4
1e+10
0
-1.674205
2.200438
-0.6126802
-1.597718
0.0209173
47
-3957686
3867905
5
1e+10
NA
-1.680337
2.434686
-0.9573888
-1.786366
0.0270081
NA
-3857686
3867905
6
1e+10
NA
-1.600721
2.471932
-1.6611980
-1.858230
0.0456958
NA
Presence-absence data
Code
# calculate area, coordinates, and point count in each raster cellPA_ebarbara.area.time1 <-as.numeric(PA_ebarbara_time1_blobs$blobArea) PA_ebarbara.area.time2 <-as.numeric(PA_ebarbara_time2_blobs$blobArea) PA_ebarbara.coords.time1 <-st_coordinates(st_centroid(PA_ebarbara_time1_blobs)) %>%as_tibble()PA_ebarbara.coords.time2 <-st_coordinates(st_centroid(PA_ebarbara_time2_blobs)) %>%as_tibble()PA_ebarbara.pixel.time1 <- terra::cells(PO_ebarbara_time1_raster, vect(st_centroid(PA_ebarbara_time1_blobs))) PA_ebarbara.pixel.time2 <- terra::cells(PO_ebarbara_time2_raster, vect(st_centroid(PA_ebarbara_time2_blobs))) # mode to calculate the most frequent value for the blob - this needs to be changed to getting the %are for each landcovermode_raster <-function(x, na.rm =FALSE) {if(na.rm){ x = x[!is.na(x)]} ux <-unique(x)return(ux[which.max(tabulate(match(x, ux)))])}PA_ebarbara.env.time1 <- terra::extract(x = env, y =vect(PA_ebarbara_time1_blobs), fun = mean, na.rm=TRUE) %>%mutate(across(where(is.numeric), ~ifelse(is.nan(.), NA, .))) %>%scale()PA_ebarbara.env.time2 <- terra::extract(x = env, y =vect(PA_ebarbara_time2_blobs), fun = mean, na.rm=TRUE) %>%mutate(across(where(is.numeric), ~ifelse(is.nan(.), NA, .))) %>%scale()PA_ebarbara_time1.model.data <-data.frame(pixel = PA_ebarbara.pixel.time1, PA_ebarbara.coords.time1,area = PA_ebarbara.area.time1,presabs = PA_ebarbara_time1_blobs$presence,effort = PA_ebarbara_time1_blobs$effort,env = PA_ebarbara.env.time1[,2:5])PA_ebarbara_time2.model.data <-data.frame(pixel = PA_ebarbara.pixel.time2, PA_ebarbara.coords.time2,area = PA_ebarbara.area.time2,presabs = PA_ebarbara_time2_blobs$presence,effort = PA_ebarbara_time2_blobs$effort,env = PA_ebarbara.env.time2[,2:5])