2012-04-18 61 views
3

我有一個SpatialPolygonsDataFrame,我通過在rgdal包中使用readOGR讀取shapefile創建。我正在嘗試使用sp包中的spsample生成採樣網格,以用於從該地區收集的調查數據進行插值。但是,SpatialPointsDataFrame包含的面積要比調查大得多,因此插值可以預測遠離任何調查的地方。調查數據和shapefile都使用相同的proj4string進行投影。Subset SpatialPolygonsDataFrame

我想使用調查臺設置的座標來對SpatialPolygonsDataFrame進行子集劃分,但我不確定相關值存儲在對象中的位置。

恐怕我無法提供相關數據,因爲shapefile不在線上託管。不過,我會借用保羅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

簡短的答案很可能是「包:rgeos」。對不起,我現在沒有時間回答長時間的問題。因此,它只有一條評論... – Spacedman 2012-04-18 16:42:52

+1

看看包rgeos中的gIntersection()函數 – Sophia 2012-04-18 16:49:53

+0

我對此的模糊回憶是其中一個空間包有一個覆蓋函數,它返回匹配的多邊形的布爾值。然後,您可以使用taRifx :: subsetSPDF只抓取那些多邊形。 – 2012-04-18 18:24:11

回答

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],] 
相關問題