0

我正在使用adehabitatHR计算几只老鹰的主场范围。我想创建一个 1 km x 1 km 的网格来输入 kernelUD 函数。

我尝试使用此处提供的方法: 在 R 中创建等距离空间网格

但是,当我尝试使用这种方法时,R 计算网格需要很长时间(我等了一个多小时,然后不得不强制退出 R)。这是因为我正在查看的区域非常大(移动数据跨越多个国家/地区)。

有没有另一种方法可以做到这一点或加快这个过程,特别是当我需要为几个人重复这个过程时?

下面是我的脚本示例,其中包含来自 adehabitatHR 小插图的示例水牛数据集(我无权共享我自己的数据)。使用较小的数据集,它可以工作,但我的即使在等待一个多小时后也没有给出输出。

library(adehabitatHR)
library(sp)
library(dplyr)
library (sf)

data(buffalo)
dat <- buffalo[["traj"]][[1]]
dat <- dplyr::select(dat, x, y, date)
dat$datetime <- as.POSIXct(dat$date, format = "%Y-%m-%d %hh:%mm:%ss")
dat$date <- as.Date(dat$datetime, format="%Y-%m-%d")
sp.UTM <- SpatialPoints(cbind(dat$x, dat$y), proj4string = CRS("+init=epsg:32632"))

# creating the grid using method proposed in other stackoverflow question (link above)
grid_spacing <- 1000
grid_buffalo <- st_make_grid(sp.UTM, square = T, cellsize = c(grid_spacing, grid_spacing)) %>%
  st_sf()
sf.UTM <-st_as_sf(sp.UTM)
plot(grid_buffalo, col = 'white')
plot(st_geometry(sf.UTM), add = T)
4

0 回答 0