我有多边形来定义英国各县的轮廓。这些形状非常详细(每个10k到20k点),因此渲染相关的计算(多边形P?中的点X)非常昂贵。
因此,我想对我的多边形进行“子采样”,以获得相似的形状,但点数较少。这样做有哪些不同的技术?
琐碎的一个是每N
点取一个(因此用N
因子进行二次采样),但这感觉太“粗糙”了。我宁愿做点平均值,也不想做点什么。任何指针?
答案 0 :(得分:5)
我想到了两个解决方案:
1)由于英国的地图是合理的方形,你可以选择用县渲染位图。为每个特定颜色指定颜色,然后使用1或2像素粗黑线渲染边框。这意味着如果样品恰好位于边界上,您只需执行昂贵的内部/外部计算。位图越大,发生的次数就越少。
2)简化县概述。您可以使用递归Ramer–Douglas–Peucker算法递归简化边界。只需确保缓存结果即可。您可能也必须解决这个问题,不是针对整个县界,而是针对共享边界,以确保没有差距。这可能非常棘手。
答案 1 :(得分:3)
Here您可以找到一个完全解决您问题的项目。虽然它主要用于由点“填充”的区域,但您可以将其设置为与您的“周边”类型定义一起使用。
它使用k近邻法计算区域。
样品:
Here您可以索取该文件的副本。
看起来他们planned to offer an online service请求计算,但我没有测试它,可能它没有运行。
HTH!
答案 2 :(得分:2)
Polygon triangulation应该在这里提供帮助。您仍然需要检查多个多边形,但现在这些是三角形,因此它们更容易检查,您可以使用一些优化来确定一小部分多边形来检查给定的区域或点。
因为看起来你拥有多边形所需的所有算法,不仅仅是三角形,你还可以合并几个三角形后太小的三角形,或者三角形数量太高。