我是一个相当新的 R 用户,使用嵌入在美国都市区域内的地方的空间数据。我正在为许多变量生成 IDW 地图,但在定义 IDW 的边界时遇到了麻烦。我只想在都市区边界范围内插入数据,而我目前的方法填充了整个图。
我首先ppp
从 a 创建一个对象dataframe
:
x.points<-SpatialPointsDataFrame(coords =x.data[,c("LON10","LAT10")],
data=x.data[,c("v1","v2")],
proj4string=CRS("+proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs"))
x.proj<-spTransform(x.points,CRSobj = CRS("+proj=aea
+lat_1=29.5 +lat_2=45.5 +lat_0=37.5 +lon_0=-96 +x_0=0 +y_0=0
+datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0"))
x.ppp<-as.ppp(x.proj)
使用投影此ppp
对象plot(x.ppp)
会显示每个变量的图(上面代码中的“v1”和“v2”)。但是,绘图填充了整个矩形框。在绘制对象时,我ppp
通过为其分配owin
对象来限制此框架,如下所示:
y.spdf<-spTransform(y.spdf,CRSobj = CRS("+proj=aea
+lat_1=29.5 +lat_2=45.5 +lat_0=37.5 +lon_0=-96 +x_0=0 +y_0=0
+datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0"))
y.owin<-as.owin(y.spdf)
x.ppp<-x.ppp[y.owin]
现在使用它来绘制这个plot(x.ppp)
图,可以让我在他们的都市区的多边形内正确地绘制出我的数据点图。虽然这是一个好的开始,但我想继续将此空间框架传递到 IDW 地图上。查阅 spatstat 手册让我相信我可以将我的owin
对象作为as.mask
参数传递,但是每当我这样做时,都会出错。示例代码如下:
idw<-idw(x.ppp, power=4, as.mask(y.owin))
这给了我错误“开关错误(在,像素= {:EXPR必须是长度为1的向量”。使用at="points"
不起作用,因为我得到的是结果dataframe
对象而不是imlist
。如果我省略了as.mask
参数,我会得到一个正确的 idw,但它插值超出了我之前能够使用该owin
对象设置的都市区边界。
我认为这是一项相当常见的任务,但查阅 spatstat 文档让我有点不知所措。这个as.mask
论点似乎可行,我不确定我哪里出错了。关于如何解决这个问题的任何意见或建议,或者我可以求助于尝试更好地理解这个问题的来源,都会有很大的帮助。谢谢!