我有详细的美国县地图,来自 虎行 数据集。我如何对数据进行采样、平滑或降级,以便获得更直、更四四方方、更少“噪音”的形状来表示地理特征——在本例中只是县边界和州界线,但也许在一般情况下也是如此?

如果可以有效地完成采样,则可以在渲染时进行采样,或者可以生成并存储并行数据集。我在用 后地理信息系统, ,并且这些线是由生成的多段线 shp2pgsql ——但是任何将一条波浪线简化为一条对人类解释器具有大致相同意义的平滑线的解决方案都将非常有用。

有帮助吗?

解决方案

用简单的扔远点的问题是,您可以快速歪曲原多边形的形状。更好的方法是从另一个方向过来吧;开始与多边形的基本近似,然后向上修正其对你的复杂的形状。

这种方法的一个很好的例子是道格拉斯 - Puecker算法。你开始从全多边形绘制两个顶点。通过选择位于最远从两个顶点之间绘制边缘的一个添加第三顶点。继续添加点,直到你有一些类似足够你原来的多边形。

其他提示

道格拉斯 - 普克肯定是正确的方法。有访问PostGIS的它实现一些简单的方法和QGIS,我以为我会在这里补充对于那些谁遇到这个帖子有类似的问题。我们的目标是开始是这样的:

“替代文字”

和与像这样结束了:

“替代文字”

在PostGIS的道格拉斯 - 普克被实现为simplify,语法,这里详细在bostongis.org ,是一些变体:

SELECT transform(simplify(transform(the_geom, 2249), 500),4326) from the_geo_table

这工作得很好,即使在全民族的数据集,以及我们认为,由于恶劣的底层数据的一些一些错误。这也证明,在QGIS菜单项Tools > Geometry Tools > Simplify Geometries将出口任何几何形状的简化shape文件并将其添加为一个层当前的项目。

这是一个非常基本的工具集,我问的问题在过低的水平,但它是很好的学习基础数学外,还有就是一个很好的解释的这里:http://www.mappinghacks.com/code/PolyLineReduction/ ,与原来不是太必要的示例代码

我建议使用 ogr2ogr 而不是 QGIS,因为它 不删除多边形!

ogr2ogr output.shp input.shp -simplify 0.0001

下面是一个简单的迭代平滑算法:

对于任何路径上的每个三个连续点,如果中间点没有交叉点和是两个外点之间的直接路径的一些小的阈值的角度范围内,将其删除。

重复直到满意为止。

您还可以尝试 Visvalingam 算法,该算法会迭代删除线条中最不易察觉的部分。这是该算法的一个很好的解释:

你也可以使用 简化.js 它使用了以下组合 道格拉斯-普克 和径向距离算法。还有许多端口的链接,这些端口可在 github项目

通过@unmounted回答是正确的,但我想添加一个建议。

始终使用功能ST_SimplifyPreserveTopology代替ST_Simplify在PostGIS的。两者都使用相同的底层算法(道格拉斯 - 普克),但前者避免了会导致无效的几何图形任何简化。例如,ST_Simplify可能导致几何相交本身。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top