将SpatialPointsDataframe转换为SpatialGridDataframe

问题描述

我正在尝试将SpatialPointsDataframe转换为SpatialGridDataframe,以便使用landsat包中的lopersp()函数获取坡度的值。我试图将SpatialPointsDataframe转换为栅格以将其转换,但它也无法正常工作,并且出现错误

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

以下是我的代码

#create fake data
x <- rep(rep(seq(12,36,0.5),41))
y <-rep(seq(32,52,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有任何建议吗?谢谢!

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...