如何在Google地图V2上将不规则多边形划分为相等的区域

时间:2014-01-13 09:03:13

标签: android google-maps-android-api-2 polygon

我正在开发一个用于农业目的的Glebe取样申请。在那个用户可以通过点击地图来选择一个Glebe,这将根据点击的数量创建一个多边形。我能够创建该多边形并能够获得多边形的区域。但现在我需要把它分成相等的区域。

例如,如果多边形的面积为50平方公尺,那么它将被分成50个1平方公尺的区域。 Agri Precision App中已完成相同的功能。找到下面的图像。我需要将多边形划分为与下图相同,并显示其中的点。

The polygon

为了获得Area,我正在使用Google Map Utilty Lib它还有一个算法也用于网格聚类。我想要像上面的图像一样。在上图中,它们按每5公顷划分面积。由于所有区域都是85公顷,因此应显示的总分数为17.这就是它的工作原理。

所以我的问题是:

如何根据地图上多边形的面积找到这些点,以便我可以在地图上绘制这些点?

2 个答案:

答案 0 :(得分:3)

没有对glebes的形状给出约束,因此这里有一个解决方案,通过构建星形分解来解决问题陈述。它假定多边形是凸的:

  • 任意选择一个主要顶点。

  • 通过依次将主要顶点连接到每个边缘来对多边形进行三角测量,给出三角形区域A1A2A3 ......

  • 从主顶点开始绕多边形行程。如果第一个三角形大于所需区域(A1 > A),则沿边缘找到点,使其在所需区域的子三角形中细分三角形。使用剩余的子三角形(区域A1-A)从此处继续行程。否则,从所需区域中减去第一个三角形的区域并继续行程(A现在A-A1)。

这与将实线上的N区间序列分割为相等长度的K区间非常相似。

我的猜测是,星形分解不适合你。

答案 1 :(得分:3)

如果您的多边形是凸的,则可以通过求解以下子问题来获得解:“给定区域A的凸多边形,找到将其分成相应区域B和AB的两个部分的水平线。” / p>

这很容易通过从顶部到底部用移动的水平扫描顶点并计算覆盖区域(这形成多边形分解为梯形)来实现。在某些时候,您将超过区域B.通过当前顶点和先前顶点之间的线性插值,您将确定水平线的确切纵坐标。

您将按如下方式使用子问题解决方案:

1)计算所需瓦片数量的整数平方根,即N,设M。

2)将多边形切片N次,每次获得N个瓦片的面积。将有剩余的M-N ^ 2瓦片。

3)使用垂直切片每个切片以分割最终的切片。

瓷砖将具有更加可接受的形状(当它们不符合任何边缘时为矩形)。