如何将多边形修改为孔(SpatialPolygons)更改其插槽
How to modify a polygon to be a hole (SpatialPolygons) changing its slots
编辑:
正如 Edzer Pebesma 在评论中所建议的,向多边形添加孔的推荐方法不是修改槽而是重建多边形,如图 。
原问题
在 SpatialPolygons-class
的帮助下,我尝试将一个多边形修改为另一个多边形的孔,但是当 "hole polygon" 显示为另一个多边形的边界时,它的内部是彩色的作为其余的。
我做错了什么?
使用 defPunched
和 defHole
定义 here:
library("sp")
load(url("http://spatcontrol.net/CorentinMBarbu/misc/holeIssue.rda"))
defHole@polygons[[1]]@Polygons[[1]]@hole<-TRUE
OnePolDFToPolygon <- function(x){
main <- x@polygons[[1]]@Polygons[[1]]
return(main)
}
punch <- Polygons(list(OnePolDFToPolygon(defPunched),OnePolDFToPolygon(defHole)),defPunched@polygons[[1]]@ID)
mine <- SpatialPolygons(list(punch),proj4string=defPunched@proj4string)
mine <- SpatialPolygonsDataFrame(mine,data=as(defPunched,"data.frame"))
plot(mine,col="blue",border="green")
孔应该具有相反的环方向,例如通过
mine@polygons[[1]]@Polygons[[2]]@coords = mine@polygons[[1]]@Polygons[[2]]@coords[5:1,]
plot(mine, col = 'blue')
你得到下面的情节。这些数据从何而来?
编辑:
正如 Edzer Pebesma 在评论中所建议的,向多边形添加孔的推荐方法不是修改槽而是重建多边形,如图
原问题
在 SpatialPolygons-class
的帮助下,我尝试将一个多边形修改为另一个多边形的孔,但是当 "hole polygon" 显示为另一个多边形的边界时,它的内部是彩色的作为其余的。
我做错了什么?
使用 defPunched
和 defHole
定义 here:
library("sp")
load(url("http://spatcontrol.net/CorentinMBarbu/misc/holeIssue.rda"))
defHole@polygons[[1]]@Polygons[[1]]@hole<-TRUE
OnePolDFToPolygon <- function(x){
main <- x@polygons[[1]]@Polygons[[1]]
return(main)
}
punch <- Polygons(list(OnePolDFToPolygon(defPunched),OnePolDFToPolygon(defHole)),defPunched@polygons[[1]]@ID)
mine <- SpatialPolygons(list(punch),proj4string=defPunched@proj4string)
mine <- SpatialPolygonsDataFrame(mine,data=as(defPunched,"data.frame"))
plot(mine,col="blue",border="green")
孔应该具有相反的环方向,例如通过
mine@polygons[[1]]@Polygons[[2]]@coords = mine@polygons[[1]]@Polygons[[2]]@coords[5:1,]
plot(mine, col = 'blue')
你得到下面的情节。这些数据从何而来?