我正在寻找一种方法,最好是在 PHP 中,分析一组多边形以检测该组的外部边界。
具体来说,这是用于呈现区域的 Google Maps v3 应用程序。领土中的每个多边形都是一个邮政编码。我正在尝试仅检测和绘制领土边界。这是我要完成的工作的模型:
我在解决这个问题时面临的挑战:
- 每个区域内的邮政编码可以(并且通常是)不连续的(参见上例中的红色和绿色区域)。
- 邮政编码不一定是凸的,因此凸包技术不起作用(也许我错了?)
- 尽管它在上图中看起来像,但顶点很少从一个 ZIP 到另一个 ZIP 真正冗余。每个纬度/经度坐标(即多边形的每个顶点)都有 10 个小数点的精度。我已经尝试并拒绝了一种舍入技术,因为它从来没有产生一个仍然类似于原始形状的干净数据集。
从积极的方面来说,这些领土一旦建立就永远不会改变。因此,此过程可以离线运行以计算和存储生成的区域多边形集。
澄清: 我的数据存储在邮政编码级别。每个邮政编码由一组或多组大型纬度/经度坐标定义。每个纬度/经度坐标定义了 Google 地图多边形中的一个顶点。与更大的地区一样,每个邮政编码可能是凸面的,也可能不是凸面的,它可能是也可能不是一个连续的多边形。较大的区域仅存储为邮政编码列表;没有为地区存储多边形数据——这是我在这里试图解决的问题。
非常感谢您提供正确方向的任何指示。