【问题标题】:How to divide irregular polygon into equal areas on Google map V2如何在谷歌地图V2上将不规则多边形划分为相等的区域
【发布时间】:2014-01-31 23:02:42
【问题描述】:

我正在开发一个应用程序,用于为农业目的对 Glebe 进行采样。用户可以通过点击地图来选择一个 Glebe,这将根据点击次数创建一个多边形。我能够创建该多边形并能够获得多边形的面积。但是现在我需要把它分成相等的区域。

例如,如果多边形的面积是 50m^2,那么它将被划分为 50 个 1m^2 的区域。在Agri Precision App 中完成了相同的功能。找到下图。我需要将多边形与下图相同,并显示其中的点。

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

所以我的问题是:

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

【问题讨论】:

  • 我看不到这 17 个孤立点之间的联系以及将四边形细分为 17 个面积相等的图块。此图不是问题的解决方案,请提供更好的解释。
  • 我放了这张图片仅供参考。主要问题是将多边形划分为相等的区域。这就是我目前的实际需求。
  • 抱歉,这张图片无关紧要且具有误导性。
  • 我对那个无关紧要的图片感到抱歉。我会马上更新它。请给我一分钟
  • 相信this可以帮到你。它介绍了可用于空间目的的算法。

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


【解决方案1】:

没有对 glebes 的形状进行限制,所以这里有一个解决方案,它通过构建星形分解来满足问题陈述。它假设多边形是凸的:

  • 任意选择一个主顶点。

  • 通过依次将主顶点连接到每条边来对多边形进行三角剖分,给出区域的三角形A1A2A3...

  • 从主顶点开始绕多边形旅行。如果第一个三角形大于所需区域 (A1 > A),请找到沿边缘的点,以便它将三角形细分为所需区域的子三角形。使用剩余的子三角形(具有区域A1-A)从这里继续旅行。否则,从所需面积中减去第一个三角形的面积并继续行程(A 现在是A-A1)。

这非常类似于将实线上的N 区间序列拆分为等长的K 区间。

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

【讨论】:

  • 感谢 Yves,您的想法非常好,我想知道的是如何实现与您提到的相同算法的方程式?
  • 您只需要三角形面积公式 (en.wikipedia.org/wiki/Triangle#Using_coordinates)。并且要将三角形划分为给定面积的子三角形,只需以相同的比例划分一条边(使用线段的参数方程)。
  • @YvesDaoust 您的回答非常好,但如果您添加基本方程式和代码来实现这一点,那么提问者可以从哪里开始获得想法。
  • @YvesDaoust 如果你不介意我们可以讨论here
  • 谢谢,我可以根据这个算法开发方程。但由于谷歌地图的一些限制,我无法做到我想要的完美。
【解决方案2】:

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

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

您将使用以下子问题解决方案:

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

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

3) 使用垂直线对每个切片进行切片以分离出最终的切片。

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

【讨论】:

  • 嗯,同一个问题有两个答案?确定您没有编辑您的答案?
  • 这是两个独立的答案
猜你喜欢
  • 1970-01-01
  • 2012-05-31
  • 2012-02-23
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2019-07-01
  • 1970-01-01
相关资源
最近更新 更多