0

在 R 中,如何将 adehabitat 包中的 kernelUD 函数中的 khrud 对象导出到光栅文件 (geoTiff)?

我尝试使用此处的代码关注此线程(R:如何从 estUDm 对象创建栅格图层):

writeRaster(raster(as(udbis1,"SpatialPixelsDataFrame")), "udbis1.tif")

其中 udbis1 是一个 khrud 对象,但我得到“as(udbis1, "SpatialPixelsDataFrame") 中的错误:没有将“khrud”强制转换为“SpatialPixelsDataFrame”的方法或默认值。” 我认为问题可能在于旧线程是在更新 adehabitat 包之前将数据格式从 estUD 更改为 khrud。也许?

4

2 回答 2

0

AdehabitatHR 解决方案适用于所需格式的数据或使用多种动物时的数据。尽管当想要创建具有不同组织方式或仅用于一个来源的数据的 KDE 时,可能会令人沮丧。出于某种原因,@johaness 的回答不适用于我的情况,所以这里有一个替代解决方案,可以避免进入 adehabitatHR 内部的麻烦。

library(adehabitatHR)
library(raster)
# Recreating an example for only one animal
# with a basic xy dataset like one would get from tracking
loc<-puechabonsp$relocs
loc<-as.data.frame(loc)
loc<-loc[loc$Name=="Brock",]
coordinates(loc)<-~X+Y

ud<-kernelUD(loc)

# Extract the UD values and coordinates into a data frame
udval<-data.frame("value" = ud$ud, "lon" = ud@coords[,1], "lat" = ud@coords[,2])
coordinates(udval)<-~lon+lat
# coerce to SpatialPixelsDataFrame
gridded(udval) <- TRUE

# coerce to raster
udr <- raster(udval)

plot(udr)
于 2020-11-23T10:55:07.727 回答
0

您没有提供可重现的示例。以下对我有用:

library(adehabitatHR)
library(raster)

data(puechabonsp)
loc <- puechabonsp$relocs

ud <- kernelUD(loc[, 1])

r <- raster(as(ud[[1]], "SpatialPixelsDataFrame"))
writeRaster(r, filename = file.path(tempdir(), "ud1.tif"))
于 2018-08-14T19:52:39.563 回答