我正在开发一个用于农业目的的Glebe取样申请。在那个用户可以通过点击地图来选择一个Glebe,这将根据点击的数量创建一个多边形。我能够创建该多边形并能够获得多边形的区域。但现在我需要把它分成相等的区域。
例如,如果多边形的面积为50平方公尺,那么它将被分成50个1平方公尺的区域。 Agri Precision App中已完成相同的功能。找到下面的图像。我需要将多边形划分为与下图相同,并显示其中的点。
为了获得Area,我正在使用Google Map Utilty Lib它还有一个算法也用于网格聚类。我想要像上面的图像一样。在上图中,它们按每5公顷划分面积。由于所有区域都是85公顷,因此应显示的总分数为17.这就是它的工作原理。
所以我的问题是:
如何根据地图上多边形的面积找到这些点,以便我可以在地图上绘制这些点?
答案 0 :(得分:3)
没有对glebes的形状给出约束,因此这里有一个解决方案,通过构建星形分解来解决问题陈述。它假定多边形是凸的:
任意选择一个主要顶点。
通过依次将主要顶点连接到每个边缘来对多边形进行三角测量,给出三角形区域A1
,A2
,A3
......
从主顶点开始绕多边形行程。如果第一个三角形大于所需区域(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)使用垂直切片每个切片以分割最终的切片。
瓷砖将具有更加可接受的形状(当它们不符合任何边缘时为矩形)。