我一直在寻找现有的R函数,用于聚合同一图层中共享公共边界的同一图层中的多边形要素(即在ArcGIS中生成“溶解边界”工具之类的输出)。
我使用gdal_polygonizeR(https://johnbaumgartner.wordpress.com/2012/07/26/getting-rasters-into-shape-from-r/)从栅格文件创建了一个多边形图层。某些多边形形状由单个栅格像元分隔开,因此作为不同的特征存储在shapefile中。我想将此类多边形要素组合为一个多边形要素,并创建一个新的shapefile(减少多边形元素的总数),理想情况下具有用于溶解的阈值距离。
有人知道在R中执行此操作的现有方法吗?
更新:
我认为解决方案可能涉及aggregate
,然后是disaggregate
。我目前正在对此进行特别关注,以确保带有孔的面要素与父面保持关联(请参见:Split polygon parts of a single SpatialPolygons Object)。如果找到解决方案,将再次更新。
答案 0 :(得分:1)
在将栅格文件转换为多边形后(由于运行时问题,使用signedUser.Groups
而不是gdal_polygonizeR
),我能够在同一层中“溶解边界”单个多边形要素(“多边形”在下面的代码中),方法是执行以下步骤(注意:我提供了示例输出,该输出与在运行指定函数后更改输出数据集中的要素数量有关):
rasterToPolygon
此方法并不完美,因为它导致面要素的面积与原始栅格到面输出的面积不完全相等,但这是迄今为止我能提供的最好的方法。如果您有更好的解决方案,请发表评论。
答案 1 :(得分:0)
library(raster)
y <- aggregate(x)
答案 2 :(得分:0)
请参阅此 answer 来解决您的问题。我相信它正在做你正在寻找的东西。但是,我在使用 poly2nb
函数时遇到了时间问题,因为我有非常大的向量。因此,我正在尝试您的解决方案。