在R中,如何从程序adehabitat中的kernelUD函数将khrud对象导出到栅格文件(geoTiff)?
我尝试使用以下代码跟踪此线程(R: how to create raster layer from an estUDm object):
writeRaster(raster(as(udbis1,"SpatialPixelsDataFrame")), "udbis1.tif")
其中udbis1是一个khrud对象,但是我收到“ as(udbis1,“ SpatialPixelsDataFrame”)中的错误:没有将“ khrud”强制转换为“ SpatialPixelsDataFrame”的方法或默认方法。 我认为问题可能是旧线程是在对adehabitat软件包进行更新之前,已将数据格式从estUD更改为khrud。也许吗?
答案 0 :(得分: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"))
答案 1 :(得分: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)