我有详细的美国县地图,来自TIGER LINE数据集。我应该如何对数据进行采样、平滑或降级,以便获取更直、更盒状且噪声较少的形状,以代表地理特征 - 在这种情况下仅限于县界和州界,但也可能适用于一般情况?
如果可以有效地完成渲染,采样可以在渲染时发生,或者可以生成并存储并行数据集。我正在使用PostGIS,而这些线是通过shp2pgsql
生成的多段折线 - 但任何将曲线减少为大致相同重要性的平滑线的解决方案都将非常有用。
simplify
,语法详见 bostongis.org,大致为:
SELECT transform(simplify(transform(the_geom, 2249), 500),4326) from the_geo_table
这甚至在完整的全国数据集上也很好地运行,只有少量错误似乎是由于不良底层数据造成的。同时,在QGIS中,菜单项工具 > 几何工具 > 简化几何形状
将导出任何几何形状的简化形状文件,并将其作为图层添加到您当前的项目中。这里是一个简单的迭代平滑算法:
对于路径上的每三个连续点,如果中间点没有交叉,并且在两个外部点之间的直接路径的一些小阈值角度内,则将其删除。
重复此过程直到满意为止。
您还可以尝试 Visvalingam 算法,该算法迭代地删除线的最不可感知部分。以下是该算法的详细解释:
@unmounted 的回答是正确的,但我想再添加一个建议。
在PostGIS中,始终使用ST_SimplifyPreserveTopology函数而不是ST_Simplify函数。两者都使用相同的基础算法(Douglas-Peucker),但前者避免了任何会导致无效几何体的简化。例如,ST_Simplify可能会导致几何体相交。