如何在R中泛化SpatialPolygons和守恒拓扑?


18

我想对SpatialPolygonsDataFrame R中的A进行泛化,以使绘图更加有效。我所产生的多边形会产生大量的pdf图,这些图加载缓慢且难以集成到文档中。

我尝试使用程序包中的gSimplify函数rgeos,但不幸的是,它不能保存多边形的拓扑。

有没有我可以使用的替代方法?


并不是真正的解决方案,但是您可以代替使用栅格(jpg / png)吗?:这个计算器的问题,其中讨论pdfsize减少可能是使用的stackoverflow.com/questions/8521299/...
DJQ

将地图绘制为栅格图像是一种选择,但是只要有可能,我都想使用矢量图形。使用矢量图形时,图像质量更好,特别是在查看文档的数字版本时。
Yellowcap 2012年

gSimplify()有一个可选参数topologyPreserve,默认为FALSE。您是否尝试过将其设置为TRUE
krlmlr

Answers:


7

r-sig-geo上对此进行了讨论。对于确切的答案,您应该在这里问,因为有些人知道空间R的见解。

但是,您也可以在QuantumGIS,GRASS或SAGA等GIS桌面应用程序中执行此操作(使用rgdal的writeOGR命令或maptools的writePolyShape()导出形状)。

对于QuantumGIS,请使用矢量/几何工具/简化几何形状(我已经测试过并没有保留拓扑,但是应用于罗马尼亚的admin1 shapefile,在2000个节点上看起来还不错)。

对于GRASS,请使用v.generalize(有关该算法的信息,请阅读手册,其中有一些)。

对于SAGA,您必须首先将多边形转换为线(“形状-线/将多边形转换为线”),然后简化线(“形状线/简化线”),最后将线转换为多边形(“形状-多边形/将线转换为多边形”)。我已经对此进行了测试,结果保留了拓扑。

干杯,祝你好运,


同时,我还发现了一个在线服务,可以在简化拓扑结构的同时节省拓扑结构:mapshaper.org。我已经用它作为替代方案,因为它似乎不是R中直接可能(QGIS是不是真的拓扑节约型,我不知道其他软件包)
yellowcap

1
我使用Saga 2.0.8测试了您的观察结果,结果没有保留拓扑!
Fabian Zeindl

2

现在rmapshaper,Andy Teucher提供了一个很棒的软件包,其中包括一个简化功能,“可以执行拓扑感知的多多边形简化”。

在他们的github仓库中,有一个用法示例:

states_simp <- ms_simplify(states_sp)

其中states_sp是一个spatialPolygons*对象。

有关更多信息,请参见软件包README:https : //github.com/ateucher/rmapshaper


0

这应该有助于:

  • gSimplify(..., topologyPreserve=T)GEOS包装中

2
不幸的是,拓扑保留选项gSimplify并未真正保留多个多边形上的拓扑。我认为它与单多边形或多多边形的拓扑关系更大。对于具有许多多边形的shapefile,拓扑不保留。
Yellowcap
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.