我通过使用SpatialPolygonsDataFrame
包中的readOGR
读取shapefile来创建rgdal
。我试图使用它在spsample
包中使用sp
生成一个采样网格,用于从该区域收集的调查数据进行插值。然而,SpatialPointsDataFrame包含比调查更大的区域,因此,插值预测的值远离任何调查的位置。调查数据和shapefile都使用相同的proj4string进行投影。
我想使用测量站设置的坐标对SpatialPolygonsDataFrame进行子集化,但我不确定相关值在对象中的存储位置。
我担心我无法提供相关数据,因为shapefile不是在线托管的。但是,我将借用Paul Hiemstra对荷兰post的回复中的一些代码:
library(ggplot2)
library(sp)
library(automap)
library(rgdal)
#get the spatial data for the Netherlands
con <- url("http://gadm.org/data/rda/NLD_adm0.RData")
print(load(con))
close(con)
class(gadm)
bbox(gadm)
> min max
>r1 3.360782 7.29271
>r2 50.755165 53.55458
让我们说调查是在这个领域进行的:
bbox(surveys)
> min max
>r1 4.000 7.000
>r2 51.000 53.000
如何裁剪SpatialPolygonsDataFrame的那个区域?
编辑:question似乎回答了我的问题。不好好搜索的道歉(尽管这些评论确实给了我一些关于rgeos转向的感觉)。但是,gIntersection
导致R崩溃......
答案 0 :(得分:0)
根据多边形的大小,您可以执行类似
的操作range = cbind(c(4,7), c(51,53))
centroids <- coordinates(spdf)
spdf.subset <- spdf[centroids[,1] > range[1,1] &
centroids[,1] < range[2,1] &
centroids[,2] > range[1,2] &
centroids[,2] < range[2,2],]