# calculate area in each raster cellPO_lwiedii.area <- terra::cellSize(PO_lwiedii_time1_raster[[1]], unit='m', transform=F) %>%classify(cbind(NaN, NA)) %>% terra::values()# calculate coordinates for each raster cellPO_lwiedii.coords <- terra::xyFromCell(PO_lwiedii_time1_raster, cell=1:ncell(PO_lwiedii_time1_raster)) %>%as.data.frame()names(PO_lwiedii.coords) <-c('X', 'Y')# number of cells in the rasters (both the same)PO_lwiedii.cell <-1:ncell(PO_lwiedii_time1_raster)# with the environmental variables values for each cellPO_lwiedii.env <- env_100k_resampled[] # scaled values# with the mean accessibility value for each cellPO_lwiedii.acce <- acce_100k_resampled # scaled values# calculate point count in each raster cellPO_lwiedii_time1.count <- PO_lwiedii_time1_raster %>%classify(cbind(NaN, NA)) %>% terra::values() %>% as_tibble %>% dplyr::select(count)PO_lwiedii_time2.count <- PO_lwiedii_time2_raster %>%classify(cbind(NaN, NA)) %>% terra::values() %>% as_tibble %>% dplyr::select(count)PO_lwiedii.countries <- latam_countries %>%classify(cbind(NaN, NA))# save time1 and time2 datasets PO_lwiedii_time1.model.data <-data.frame(PO_lwiedii.coords,pixel = PO_lwiedii.cell[],area = PO_lwiedii.area,pt.count = PO_lwiedii_time1.count,env = PO_lwiedii.env,acce = PO_lwiedii.acce[], country = PO_lwiedii.countries[])PO_lwiedii_time2.model.data <-data.frame(PO_lwiedii.coords,pixel = PO_lwiedii.cell[],area = PO_lwiedii.area,pt.count = PO_lwiedii_time2.count,env = PO_lwiedii.env,acce = PO_lwiedii.acce[], country = PO_lwiedii.countries[])
Check data
Code
head(PO_lwiedii_time1.model.data) %>%kable()
X
Y
pixel
area
count
env.bio_7
env.bio_10
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
0.9201098
-1.690030
0.4573118
-1.194929
0.0115694
47
-4057686
3867905
4
1e+10
0
0.2354014
-1.674205
-0.6126802
-1.597718
0.0209173
47
-3957686
3867905
5
1e+10
NA
-0.2380332
-1.680337
-0.9573888
-1.786366
0.0270081
NA
-3857686
3867905
6
1e+10
NA
-0.2966836
-1.600721
-1.6611980
-1.858230
0.0456958
NA
Code
head(PO_lwiedii_time2.model.data) %>%kable()
X
Y
pixel
area
count
env.bio_7
env.bio_10
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
0.9201098
-1.690030
0.4573118
-1.194929
0.0115694
47
-4057686
3867905
4
1e+10
0
0.2354014
-1.674205
-0.6126802
-1.597718
0.0209173
47
-3957686
3867905
5
1e+10
NA
-0.2380332
-1.680337
-0.9573888
-1.786366
0.0270081
NA
-3857686
3867905
6
1e+10
NA
-0.2966836
-1.600721
-1.6611980
-1.858230
0.0456958
NA
Presence-absence data
Code
# calculate area, coordinates, and point count in each raster cellPA_lwiedii.area.time1 <-as.numeric(PA_lwiedii_time1_blobs$blobArea) PA_lwiedii.area.time2 <-as.numeric(PA_lwiedii_time2_blobs$blobArea) PA_lwiedii.coords.time1 <-st_coordinates(st_centroid(PA_lwiedii_time1_blobs)) %>%as_tibble()PA_lwiedii.coords.time2 <-st_coordinates(st_centroid(PA_lwiedii_time2_blobs)) %>%as_tibble()PA_lwiedii.pixel.time1 <- terra::cells(PO_lwiedii_time1_raster, vect(st_centroid(PA_lwiedii_time1_blobs))) PA_lwiedii.pixel.time2 <- terra::cells(PO_lwiedii_time2_raster, vect(st_centroid(PA_lwiedii_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_lwiedii.env.time1 <- terra::extract(x = env, y =vect(PA_lwiedii_time1_blobs), fun = mean, na.rm=TRUE) %>%mutate(across(where(is.numeric), ~ifelse(is.nan(.), NA, .))) %>%scale()PA_lwiedii.env.time2 <- terra::extract(x = env, y =vect(PA_lwiedii_time2_blobs), fun = mean, na.rm=TRUE) %>%mutate(across(where(is.numeric), ~ifelse(is.nan(.), NA, .))) %>%scale()PA_lwiedii_time1.model.data <-data.frame(pixel = PA_lwiedii.pixel.time1, PA_lwiedii.coords.time1,area = PA_lwiedii.area.time1,presabs = PA_lwiedii_time1_blobs$presence,effort = PA_lwiedii_time1_blobs$effort,env = PA_lwiedii.env.time1[,2:5])PA_lwiedii_time2.model.data <-data.frame(pixel = PA_lwiedii.pixel.time2, PA_lwiedii.coords.time2,area = PA_lwiedii.area.time2,presabs = PA_lwiedii_time2_blobs$presence,effort = PA_lwiedii_time2_blobs$effort,env = PA_lwiedii.env.time2[,2:5])