У меня есть данные для отслеживания, для которых я рассчитываю домашний диапазон. Я хочу измерить степень перекрытия между растром домашнего диапазона и защищенной областью.
Я использую пакеты amt
и sf
, но когда я пытаюсь работать с растром, я получаю сообщение об ошибке:
Ошибка в UseMethod ("st_as_sf"): нет применимого метода для 'st_as_sf', примененного к объекту класса "c ('RasterLayer', 'Raster', 'BasicRaster')"
# load packages
library(wdpar)
library(dplyr)
library(sf)
library(amt)
library(adehabitatHR)
# download protected area data
# (excluding areas represented as point localities)
sa_raw_pa_data <- wdpa_fetch(c("Malta"))
sa_raw_pa_data
sa_raw_pa_data <- sa_raw_pa_data %>% filter(NAME == "Ghadira")
# reproject data
sa_pa_data <- st_transform(sa_raw_pa_data, 4326)
sa_pa_data %>%
st_set_geometry(NULL) %>%
glimpse()
sa_pa_data$GIS_AREA <- st_area(sa_pa_data)
sa_pa_data
#' dissolve
sa_pa_data <-
sa_pa_data %>%
summarise(area = sum(GIS_AREA))
# create some random data
set.seed(123)
d = data.frame(long=runif(100,13.9324226,14.8267966), lat=runif(100,35.6029696,36.2852706))
d$id <- c(rep("A", 50), rep("B", 50))
trk <-
mk_track(
d,
.x = long,
.y = lat,
id = id,
crs = CRS(
"+init=epsg:4326"
))
#' create the home ranges
kde_shape_1 <- trk %>% filter(id == "A") %>%
hr_kde(., levels = c(0.95))
kde_shape_2 <- trk %>% filter(id == "B") %>%
hr_kde(., levels = c(0.95))
#' measure the overlap - HERE'S THE ERROR
kernel.sf = st_as_sf(kde_shape_1$ud)
st_intersect(kernel.sf, sa_pa_data)