如何概括海岸线?


12

我有大量的数据点,它们基本上代表了世界的海岸线。我不知道确切的分辨率,但我会说它在5-10m附近。

想象一组代表锯齿状海岸线的点。在1m分辨率下,我们可以看到所有细节,并且需要50个数据点才能正确表示海岸,但是,在10km分辨率下,海岸看起来像一条直线,我们只需要2个点。

我正在编写一个映射应用程序,它将需要数据从“全行星”分辨率缩放到“街道”分辨率。我需要一些帮助来降低我的数据点的分辨率,以及随后获得更大分辨率的数据量。

我一直在阅读有关Vector-Tiling的信息,并认为这将是最好的解决方案(我已经在做类似的事情了),但是,在低分辨率下,我的数据集仍然很大,这意味着花费[相对]长的时间时间,高分辨率的速度很快,因为“有效”数据集很小(整个子集)。

我试图确定如何获取大型数据集并减小其规模,以使“全行星”视图的图块数据处于可管理的大小。如何从较大的完整数据集创建图块子数据集?

我很高兴使用工具,但我想自己做,以了解它是如何完成的。


1
您是否检查了gis.stackexchange.com/questions/6585/…的答案?如果您认为您的问题不同,请详细说明。
昏暗

1
似乎问题应该是关于海岸线而不是“点”。随着分辨率的降低,小岛会消失吗?蜿蜒的蜿蜒小岛周围的海岸线可以穿越吗?
Kirk Kuykendall

如果您只是想做一个不错的工作并继续前进,@ R Thiede的答案可能是最好的起点。如果您想解决真正的挑战,简化线路工作而不丢失形状的含义,请参阅相关问题gis.stackexchange.com/questions/38/…gis.stackexchange.com/questions/440/…
马特·威尔基2011年

Answers:


7

解决该问题的方式实际上取决于情况,以及实际拓扑结构对您的重要性(与视觉效果/渲染时间相比)。由于您的最终目标是对海岸线进行一般化,因此您可能会发现一些有关一般化的想法很有用。

一种方法使用缓冲,如此处所示。前段时间我也遇到了类似的问题,并在此处详细介绍了我的解决方案。

简而言之,您可以使用单独的矢量数据集(或至少单独的几何形状),并将其推广到不同级别。这解决了您的基本问题,尽管它没有使用磁贴,但是如果您愿意的话,您当然仍然可以使用它们。当然,如果要基于网格将数据集拆分为图块,请务必先进行泛化,否则最终将导致图块之间的空隙。


+1以得到深思熟虑的回复。欢迎来到我们的网站,吕迪格!
ub

5

您应该为“全行星”缩放级别(向下至特写缩放)准备不同的数据集通用版本。

经典的泛化算法是Douglas-Peucker算法。如果尚未将这些点连接到海岸线,则必须先将它们连接起来。


2
如果您想自己编写代码,则GEOS库具有内置的Douglas-Peucker算法。但是,您可能希望考虑拓扑,在这种情况下,GRASS v.generalize工具也可以提供帮助。
lagerratrobe 2011年

嗨@lagerratrobe。我制作了此答案社区Wiki,因此您应该能够直接对其进行编辑,并向其中添加GEOS和GRASS解决方案。
昏暗


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.