在地图上创建区域填充点的算法

Algorithm to create area filled points on Map

我一直在 .NET 中处理一个巨大的地图项目。在那个项目工作期间,我遇到了一个问题。我的坐标(纬度、经度)有很多点,我需要绘制一个可以 "fill" 我的点的多边形。我的问题是,如何选择外面的点来绘制多边形。我附上了一个图像文件来澄清我的问题 -> http://postimg.org/image/fwsf0v285/

听起来您想要一个围绕数据点的多边形。有两种算法可用。

首先是"Convex Hull"。这是计算几何的经典算法,将生成您绘制的多边形。想象你的数据点是板上的钉子,它会产生一个多边形,类似于围绕外部数据点放置的松紧带。 Convex Hulls 很快(或者应该是)。 Convex Hulls 真的很常见,我知道我已经对它们进行了编码以在地球表面上工作(即考虑到地球的曲率)。这是一个更简单的欧几里德示例(来自 Whosebug),应该可以帮助您入门: Translating concave hull algorithm to c#

备选方案是 "Alpha Shape",有时也称为 "Concave Hull"。基本上它允许多边形一侧的凹(向内)曲线大于指定尺寸('alpha')。例如,一个 'C' 的数据点应该产生一个 'C shape',而一个凸包会给你一些更像 'O' 的东西,因为它会切断凹陷的空心。 Alpha 形状涉及更多,因为它们需要计算 Delauney 三角剖分。