【问题标题】:export khrud object from kernelUD to raster将 khrud 对象从 kernelUD 导出到栅格
【发布时间】:2019-01-19 13:09:49
【问题描述】:

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

【问题讨论】:

    标签: r export raster adehabitathr


    【解决方案1】:

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

    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"))
    

    【讨论】:

      【解决方案2】:

      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)
      

      【讨论】:

        猜你喜欢
        • 2017-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-02
        • 2020-09-29
        相关资源
        最近更新 更多