2014-01-15 42 views
1

這看起來很簡單,但我找不到它。如何測試shape文件的至少一部分是否在R中的矩形內?我知道我可以使用rgeos包中的gIntersects,但爲此,我需要一個sp對象而不是一個簡單的矩形。由於我做了很多次,這會花費更多的時間。提前致謝!測試shapefile是否落入R中的矩形內

+1

這真的不是那麼難強制/將矩形轉換爲「sp」形狀。肯定比在重疊測試的包中重新創建代碼更容易! –

+0

如果矩形完全位於特徵內部的洞內,該怎麼辦?這算不算交叉嗎? – Spacedman

+0

不是我的情況@Spacedman。多邊形是物種分佈,我想知道物種是否出現在網格的某些方格中。 – Rodrigo

回答

3

這是你的矩形點,注意第一個和最後點投其所好:

rect.1 <- data.frame(long=c(-117,-117,-114,-114,-117),lat=c(35,40,40,35,35)) 

現在創建空間的多邊形對象。你只需要嵌套的括號的五個層次:

rectS = SpatialPolygons(list(
         Polygons(list(
          Polygon(coords=rect.1) 
         ),ID=1)), 
         proj4string=proj4string(cali)) 

其中cali是我的加州SpatialPolygonsDataFrame,它具有經緯度長的投影,你必須設置矩形是相同的。

現在,您可以:

gIntersects(rectS,cali) 
## [1] TRUE 

重複了矩形。

哦,當然在LAT-經度座標四點不使我們在學校學到因爲地球不是平的意義上的「矩形」 ......

+0

是的,就是這樣,謝謝! – Rodrigo

+0

其他問題:在第一行使用< - 和第二行使用=的特殊理由?還不太清楚這些運營商之間的區別。 – Rodrigo

+1

@Rodrigo不,他應該使用'<-'來保持一致性,但是像這樣的簡單任務無論如何都是有效的。 –