# calculate area in each raster cellPO_lpardalis.area <- terra::cellSize(PO_lpardalis_time1_raster[[1]], unit='m', transform=F) %>%classify(cbind(NaN, NA)) %>% terra::values()# calculate coordinates for each raster cellPO_lpardalis.coords <- terra::xyFromCell(PO_lpardalis_time1_raster, cell=1:ncell(PO_lpardalis_time1_raster)) %>%as.data.frame()names(PO_lpardalis.coords) <-c('X', 'Y')# number of cells in the rasters (both the same)PO_lpardalis.cell <-1:ncell(PO_lpardalis_time1_raster)# with the environmental variables values for each cellPO_lpardalis.env <- env_100k_resampled[] # scaled values# with the mean accessibility value for each cellPO_lpardalis.acce <- acce_100k_resampled # scaled values# calculate point count in each raster cellPO_lpardalis_time1.count <- PO_lpardalis_time1_raster %>%classify(cbind(NaN, NA)) %>% terra::values() %>% as_tibble %>% dplyr::select(count)PO_lpardalis_time2.count <- PO_lpardalis_time2_raster %>%classify(cbind(NaN, NA)) %>% terra::values() %>% as_tibble %>% dplyr::select(count)PO_lpardalis.countries <- latam_countries %>%classify(cbind(NaN, NA))# save time1 and time2 datasets PO_lpardalis_time1.model.data <-data.frame(PO_lpardalis.coords,pixel = PO_lpardalis.cell[],area = PO_lpardalis.area,pt.count = PO_lpardalis_time1.count,env = PO_lpardalis.env,acce = PO_lpardalis.acce[], country = PO_lpardalis.countries[])PO_lpardalis_time2.model.data <-data.frame(PO_lpardalis.coords,pixel = PO_lpardalis.cell[],area = PO_lpardalis.area,pt.count = PO_lpardalis_time2.count,env = PO_lpardalis.env,acce = PO_lpardalis.acce[], country = PO_lpardalis.countries[])
Check data
Code
head(PO_lpardalis_time1.model.data) %>%kable()
X
Y
pixel
area
count
env.bio_10
env.bio_17
env.tree
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
-1.055997
-1.194929
0.0115694
47
-4057686
3867905
4
1e+10
0
-1.674205
2.200438
-1.303418
-1.597718
0.0209173
47
-3957686
3867905
5
1e+10
NA
-1.680337
2.434686
-1.391160
-1.786366
0.0270081
NA
-3857686
3867905
6
1e+10
NA
-1.600721
2.471932
-1.407916
-1.858230
0.0456958
NA
Code
head(PO_lpardalis_time2.model.data) %>%kable()
X
Y
pixel
area
count
env.bio_10
env.bio_17
env.tree
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
-1.055997
-1.194929
0.0115694
47
-4057686
3867905
4
1e+10
0
-1.674205
2.200438
-1.303418
-1.597718
0.0209173
47
-3957686
3867905
5
1e+10
NA
-1.680337
2.434686
-1.391160
-1.786366
0.0270081
NA
-3857686
3867905
6
1e+10
NA
-1.600721
2.471932
-1.407916
-1.858230
0.0456958
NA
Presence-absence data
Code
# calculate area, coordinates, and point count in each raster cellPA_lpardalis.area.time1 <-as.numeric(PA_lpardalis_time1_blobs$blobArea) PA_lpardalis.area.time2 <-as.numeric(PA_lpardalis_time2_blobs$blobArea) PA_lpardalis.coords.time1 <-st_coordinates(st_centroid(PA_lpardalis_time1_blobs)) %>%as_tibble()PA_lpardalis.coords.time2 <-st_coordinates(st_centroid(PA_lpardalis_time2_blobs)) %>%as_tibble()PA_lpardalis.pixel.time1 <- terra::cells(PO_lpardalis_time1_raster, vect(st_centroid(PA_lpardalis_time1_blobs))) PA_lpardalis.pixel.time2 <- terra::cells(PO_lpardalis_time2_raster, vect(st_centroid(PA_lpardalis_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_lpardalis.env.time1 <- terra::extract(x = env, y =vect(PA_lpardalis_time1_blobs), fun = mean, na.rm=TRUE) %>%mutate(across(where(is.numeric), ~ifelse(is.nan(.), NA, .))) %>%scale()PA_lpardalis.env.time2 <- terra::extract(x = env, y =vect(PA_lpardalis_time2_blobs), fun = mean, na.rm=TRUE) %>%mutate(across(where(is.numeric), ~ifelse(is.nan(.), NA, .))) %>%scale()PA_lpardalis_time1.model.data <-data.frame(pixel = PA_lpardalis.pixel.time1, PA_lpardalis.coords.time1,area = PA_lpardalis.area.time1,presabs = PA_lpardalis_time1_blobs$presence,effort = PA_lpardalis_time1_blobs$effort,env = PA_lpardalis.env.time1[,2:5])PA_lpardalis_time2.model.data <-data.frame(pixel = PA_lpardalis.pixel.time2, PA_lpardalis.coords.time2,area = PA_lpardalis.area.time2,presabs = PA_lpardalis_time2_blobs$presence,effort = PA_lpardalis_time2_blobs$effort,env = PA_lpardalis.env.time2[,2:5])