2015-04-14 131 views
2

編輯:

作爲評價建議的Edzer Pebesma,推薦的方法將孔添加到多邊形不修改槽,但重建多邊形,如圖所示in this related question如何修改多邊形是一個孔(SpatialPolygons)改變其槽

原來的問題

SpatialPolygons-class幫助,我試圖修改一個多邊形是一個其他多邊形的孔,但同時「孔多邊形」顯示爲其他多邊形的邊界,它的內部是有顏色的作爲休息。

我在做什麼錯?

使用defPuncheddefHole定義here

library("sp") 
load(url("http://spatcontrol.net/CorentinMBarbu/misc/holeIssue.rda")) 
[email protected][[1]]@Polygons[[1]]@hole<-TRUE 
OnePolDFToPolygon <- function(x){ 
    main <- [email protected][[1]]@Polygons[[1]] 
    return(main) 
} 
punch <- Polygons(list(OnePolDFToPolygon(defPunched),OnePolDFToPolygon(defHole)),[email protected][[1]]@ID) 
mine <- SpatialPolygons(list(punch),[email protected]) 
mine <- SpatialPolygonsDataFrame(mine,data=as(defPunched,"data.frame")) 
plot(mine,col="blue",border="green") 

enter image description here

回答

3

孔都應該具有相反的方向環,例如通過

[email protected][[1]]@Polygons[[2]]@coords = [email protected][[1]]@Polygons[[2]]@coords[5:1,] 
plot(mine, col = 'blue') 

你得到下面的情節。這些數據來自哪裏?

enter image description here

+0

爲什麼你需要知道這些數據來自哪裏? – cmbarbu

+0

我假設你是指「多邊形」或其文檔中的一個錯誤。但在我的例子中,我沒有看到'Polygon'調用。首先,您的示例從R數據開始,我們不知道它來自哪裏,然後您直接將值分配給插槽,這是不推薦的(意思是:在您自己的風險)。 –

+0

我會很高興不要直接操作插槽,但將多邊形轉換爲空洞的建議步驟是什麼? – cmbarbu