如何对2D多边形进行二次采样?

时间:2011-03-31 11:19:22

标签: algorithm language-agnostic 2d polygon subsampling

我有多边形来定义英国各县的轮廓。这些形状非常详细(每个10k到20k点),因此渲染相关的计算(多边形P?中的点X)非常昂贵。

因此,我想对我的多边形进行“子采样”,以获得相似的形状,但点数较少。这样做有哪些不同的技术?

琐碎的一个是每N点取一个(因此用N因子进行二次采样),但这感觉太“粗糙”了。我宁愿做点平均值,也不想做点什么。任何指针?

3 个答案:

答案 0 :(得分:5)

我想到了两个解决方案:

1)由于英国的地图是合理的方形,你可以选择用县渲染位图。为每个特定颜色指定颜色,然后使用1或2像素粗黑线渲染边框。这意味着如果样品恰好位于边界上,您只需执行昂贵的内部/外部计算。位图越大,发生的次数就越少。

2)简化县概述。您可以使用递归Ramer–Douglas–Peucker算法递归简化边界。只需确保缓存结果即可。您可能也必须解决这个问题,不是针对整个县界,而是针对共享边界,以确保没有差距。这可能非常棘手。

答案 1 :(得分:3)

Here您可以找到一个完全解决您问题的项目。虽然它主要用于由点“填充”的区域,但您可以将其设置为与您的“周边”类型定义一起使用。

它使用k近邻法计算区域。

样品:

enter image description here

Here您可以索取该文件的副本。

看起来他们planned to offer an online service请求计算,但我没有测试它,可能它没有运行。

HTH!

答案 2 :(得分:2)

Polygon triangulation应该在这里提供帮助。您仍然需要检查多个多边形,但现在这些是三角形,因此它们更容易检查,您可以使用一些优化来确定一小部分多边形来检查给定的区域或点。

因为看起来你拥有多边形所需的所有算法,不仅仅是三角形,你还可以合并几个三角形后太小的三角形,或者三角形数量太高。