编辑经过更多研究但仍然没有解决方案,我正在添加大量编辑以及指向 .shp 文件的链接。
我有一个包含 9 个多边形的 SpatialPolygonsDataFrame,每个多边形还包含多个嵌套多边形 - “洞”。数据摘要在这里。
> summary(data)
Object of class SpatialPolygonsDataFrame
Coordinates:
min max
x 483298.9 643204.4
y 4782172.1 4997248.3
Is projected: TRUE
proj4string :
[+proj=utm +zone=12 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0]
Data attributes:
Id IndID
Min. :0 BHS_011_A:1
1st Qu.:0 BHS_015_A:1
Median :0 BHS_083_A:1
Mean :0 BHS_089_A:1
3rd Qu.:0 BHS_091_A:1
Max. :0 BHS_129_A:1
(Other) :3
数据样本structure
如下。
Formal class 'SpatialPolygonsDataFrame' [package "sp"] with 5 slots
..@ data :'data.frame': 9 obs. of 2 variables:
.. ..$ Id : int [1:9] 0 0 0 0 0 0 0 0 0
.. ..$ IndID: Factor w/ 9 levels "BHS_011_A","BHS_015_A",..: 1 2 3 4 5 6 7 8 9
..@ polygons :List of 9
.. ..$ :Formal class 'Polygons' [package "sp"] with 5 slots
.. .. .. ..@ Polygons :List of 5
.. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots
.. .. .. .. .. .. ..@ labpt : num [1:2] 513497 4986246
.. .. .. .. .. .. ..@ area : num 76614017
.. .. .. .. .. .. ..@ hole : logi FALSE
.. .. .. .. .. .. ..@ ringDir: int 1
.. .. .. .. .. .. ..@ coords : num [1:287, 1:2] 509244 507384 507214 507010 506899 ...
.. .. .. .. .. .. .. ..- attr(*, "dimnames")=List of 2
.. .. .. .. .. .. .. .. ..$ : NULL
.. .. .. .. .. .. .. .. ..$ : chr [1:2] "x" "y"
.. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots
.. .. .. .. .. .. ..@ labpt : num [1:2] 509678 4979511
.. .. .. .. .. .. ..@ area : num 1462398
.. .. .. .. .. .. ..@ hole : logi TRUE
.. .. .. .. .. .. ..@ ringDir: int -1
.. .. .. .. .. .. ..@ coords : num [1:7, 1:2] 509301 509269 509194 509007 509412 ...
.. .. .. .. .. .. .. ..- attr(*, "dimnames")=List of 2
.. .. .. .. .. .. .. .. ..$ : NULL
.. .. .. .. .. .. .. .. ..$ : chr [1:2] "x" "y"
.. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots
.. .. .. .. .. .. ..@ labpt : num [1:2] 515572 4988493
.. .. .. .. .. .. ..@ area : num 1579348
.. .. .. .. .. .. ..@ hole : logi TRUE
.. .. .. .. .. .. ..@ ringDir: int -1
.. .. .. .. .. .. ..@ coords : num [1:10, 1:2] 514520 514570 514684 516501 515996 ...
.. .. .. .. .. .. .. ..- attr(*, "dimnames")=List of 2
.. .. .. .. .. .. .. .. ..$ : NULL
.. .. .. .. .. .. .. .. ..$ : chr [1:2] "x" "y"
如下例所示(九个之一),父多边形有多个孔。
data <- readOGR(".", "IndLineBuff")
plot(data[data$IndID == "MTG_005_A",])
这是我第一次涉足sp()
、rgdal()
、rgeos()
和其他空间包,我发现了许多关于使用运算符提取区域等的有用帖子,但仍然存在问题。虽然这篇文章提供了接近的解决方案,但我似乎无法调整代码以满足此处描述的需求。
我想获得一个 SpatialPolygonsDataFrame,它只包含来自每组子列表(即 data@polygon)的父(最大)多边形。似乎我应该能够仅提取父多边形或“溶解”这些孔。
最终结果将是 9 个多边形,每个都是 9 个列表的父级,我可以将其导出为 ESRI shapefile。
任何建议,将不胜感激。