将khrud对象从kernelUD导出到栅格

时间:2018-08-12 18:12:09

标签: r export raster adehabitathr

在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。也许吗?

2 个答案:

答案 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)