我有一個包含許多部分重疊的SpatialPolygons的形狀文件。這些多邊形屬於田間殺菌劑的應用,並且每個多邊形具有作爲屬性的相關應用率。在R SpatialPolygonsDataFrame中重疊多邊形的屬性值R
我想要得到的是糾正AsApplied地圖,考慮到重疊區域意味着如果兩個(或多個)多邊形重疊,應該對比率進行彙總和合並。
下面的示例代碼創建了一個SpatialPolygonsDataFrame簡化了問題:
library(raster)
library(sp)
p<-SpatialPolygons(list(Polygons(list(Polygon(cbind(c(1,4,4,3,3,1,1),c(1,1,3,3,4,4,1)),hole = F)), "1_ "),
Polygons(list(Polygon(cbind(c(3,4,4,3,3),c(3,3,4,4,3)),hole = F)), "1_2"),
Polygons(list(Polygon(cbind(c(3,4,4,3,3),c(3,3,4,4,3)),hole = F)), "2_1"),
Polygons(list(Polygon(cbind(c(4,4,5,5,3,3,4),c(4,3,3,5,5,4,4)),hole = F)),"2_")))
pid <- sapply(slot(p, "polygons"), function(x) slot(x, "ID"))
p.df <- data.frame(ID=1:length(p), row.names = pid)
p <- SpatialPolygonsDataFrame(p, p.df)
p$Rate <- c(100, 100, 100, 100)
crs(p) <- "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"
plot(p)
你可以看到兩個正方形從四個多邊形這部分重疊。每個多邊形的關聯率爲100. 我想要的是三個多邊形。兩個不重疊的應該有100的比率,兩個重疊的應該被連接到一個值爲200的多邊形。
我已經嘗試了光柵包的聯合或相交功能,但只能獲得多邊形重疊的信息,而不是求和和合並。此外,我正在尋求明確的解決方案。
任何幫助解決這個問題,高度讚賞。
更新:下面RobertH提供的解決方案適用於我的簡單示例。非常感謝你!
但是切換到我真正的用例時,我得到下列類型的錯誤和警告:
Error in if (is.numeric(i) && i < 0) { :
missing value where TRUE/FALSE needed
In addition: Warning messages:
1: In RGEOSUnaryPredFunc(spgeom, byid, "rgeos_isvalid") :
Too few points in geometry component at or near point 8.3634020800000002 50.056772690000003
...
一個例子形狀文件在這裏上傳:(過時)
任何想法如何應對這個問題?
更新#2使用當前的開發版本2.5-10確實修復了RGEOSUnaryPredFunc中的警告。然而,如果多邊形只重疊非常非常少,我仍然得到錯誤:其中發生這種情況在這裏上傳
Error in if (is.numeric(i) && i < 0) { :
missing value where TRUE/FALSE needed
形狀例文件:http://www.share-online.biz/dl/O4ZIVH8OBW。更精確的現場如下所示:
標記爲紅色的原因錯誤的兩個多邊形,如果這兩個中的一個被刪除的工會工作正常。
非常感謝您的幫助!
我已經改變了代碼的速度,以便它現在的作品與您的數據。你可以嘗試開發版本:install.packages(「raster」,repos =「http://R-Forge.R-project.org」) – RobertH
這修復了警告,謝謝!不幸的是,一些錯誤仍然存在。請在上面查看詳情。另外,由於您的命令缺少http部分,因此我使用install.packages(「raster」,repos =「http://R-Forge.R-project.org」)獲得開發版本。 – Aludra
示例2適合我。也許你需要更新'rgeos'?我會很高興看到其他情況,但不會通過那些惱人的文件共享。如果你願意,你可以發郵件給我。 – RobertH