【问题标题】:How to modify a polygon to be a hole (SpatialPolygons) changing its slots如何将多边形修改为孔 (SpatialPolygons) 更改其插槽
【发布时间】:2015-04-15 19:35:01
【问题描述】:

编辑:

正如 Edzer Pebesma 在 cmets 中所建议的,向多边形添加孔的推荐方法不是修改槽而是重建多边形,如图所示 in this related question

原始问题

SpatialPolygons-class 的帮助下,我尝试将多边形修改为另一个多边形的孔,但是当“孔多边形”显示为另一个多边形的边框时,其内部与其余部分一样着色。

我做错了什么?

使用defPuncheddefHole 定义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")

【问题讨论】:

    标签: r spatial sp


    【解决方案1】:

    孔应该有相反的环方向,例如由

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

    你得到下面的情节。这些数据是从哪里来的?

    【讨论】:

    • 为什么需要知道这些数据的来源?
    • 我假设您的意思是 Polygon 或其文档中的错误。但我在您的示例中看不到 Polygon 电话。首先,您的示例从我们不知道它来自哪里的 R 数据开始,然后您直接将值分配给插槽,这是不推荐的(意思是:风险自负)。
    • 我很高兴不直接操作槽,但是将多边形转换为孔的推荐程序是什么?
    • 另外,这两个多边形只是 SpatialPolygonsDataFrame 的子集,使用“rgdal”从 Google 地球中生成的 kml 导入。
    • 建议使用 sp 构造函数 PolygonPolygonsSpatialPolygons 等,如文档所示。请发布您的 kml 以及您在 R 中用来阅读它的程序。您的洞是谷歌地球上的洞吗?
    猜你喜欢
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 2010-11-06
    相关资源
    最近更新 更多