2015-04-14 65 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