【问题标题】:Turn SpatialPointsDataframe to SpatialGridDataframe将 SpatialPointsDataframe 转为 SpatialGridDataframe
【发布时间】:2021-01-30 10:55:52
【问题描述】:

我正在尝试将 SpatialPointsDataframe 转换为 SpatialGridDataframe,以便使用 landsat 包中的 slopeasp() 函数来获取坡度值。我尝试将 SpatialPointsDataframe 转换为栅格以进行转换,但它也不起作用,并且出现错误。

as(pts, "spatialGridDataFrame") 中的错误: 没有将“SpatialPointsDataFrame”强制为“spatialGridDataFrame”的方法或默认值

下面是我的代码:

#create fake data
x <- rep(rep(seq(12,36,0.5),41))
y <-rep(seq(32,52,0.5), each=49)
z <- rnorm(2009, 26.5, 44.0)
pts <- as.data.frame(matrix(c(x,y,z),  ncol=3,  byrow=FALSE))
colnames(pts)=c("x", "y", "z")

# create a SpatialPointsDataFrame
coordinates(pts) = ~x+y                                        
# create an empty raster object to the extent of the points
rast <- raster(ext=extent(pts), resolution=250)
# rasterize  irregular points 
rasOut<-rasterize(pts, rast, pts$z, fun = mean)

#attempt from spdf to sgdf
sgdf <- as(pts, 'spatialGridDataFrame')
#atempt from raster to sgdf
sgdf <- as(rasOut, 'spatialGridDataFrame')

有人对如何获取 spatialGridDataFrame 有任何建议吗?谢谢!

【问题讨论】:

    标签: r r-raster sp landsat


    【解决方案1】:

    asspatialGridDataFrame 的转换需要 class SpatialPixelsDataFrame 类的对象:

    类中的对象

    对象可以通过调用 as(x, "SpatialGridDataFrame"),其中 x 属于类 SpatialPixelsDataFrame 类,或通过 rgdal 导入。已订购 代替存储完整网格或存储无序的非 NA 单元;

    因此,您可以将您的pts 转换为SpatialPixelsDataFrame,然后将生成的SpatialPixelsDataFrame 转换为SpatialGridDataFrame

    #attempt from spdf to sgdf
    sgdf <- as(pts, 'SpatialPixelsDataFrame')
    
    # Convert the SpatialPixelsDataFrame (sgdf) to spatialGridDataFrame
    sgdf <- as(sgdf, "SpatialGridDataFrame")
    

    您也可以用同样的方式转换您的rasOut。在一行代码中,这是:

    #atempt from raster to sgdf
    sgdf <- as(as(rasOut, 'SpatialPixelsDataFrame'), 'SpatialGridDataFrame')
    

    【讨论】:

    • 太棒了!非常感谢您的解释和代码。它提供了我所需要的
    猜你喜欢
    • 2012-06-02
    • 1970-01-01
    • 2014-03-12
    • 2014-08-08
    • 2012-07-03
    • 2015-11-20
    • 2015-12-11
    • 2014-08-19
    • 2015-09-12
    相关资源
    最近更新 更多