【问题标题】:How to calculate % of a polygon that is covered by another polygon如何计算被另一个多边形覆盖的多边形的百分比
【发布时间】:2016-06-21 15:57:32
【问题描述】:

我有一组多边形,每个多边形都是 python 中的字典(符合非凸多边形的坐标点),我想知道一个多边形的百分之几被其他多边形覆盖。

我想举例说明一下。我在一个城市有不同的送货范围,我有那个城市不同社区的多边形。我的问题是我怎么知道我覆盖的每个社区的百分比。

我会很感激任何帮助

【问题讨论】:

  • 请向我们展示您到目前为止所做的尝试。
  • 我们得到了什么假设?所有的内部多边形都保证完全在外部吗?内部多边形是否仅限于一个外部多边形,还是做一些delivery_coverages 跨越多个neighborhoods
  • 老实说,我不知道从哪里开始,我希望已经有一个包可以做到这一点。送货范围也可以覆盖多个社区。没有一个多边形完全在外部。

标签: python geolocation geocoding polygon


【解决方案1】:

您的要求有很多复杂性。

  1. 点之间的纵向长度随纬度而减小。
  2. 多边形是否重叠或完全包含在另一个多边形中。
  3. 任何多边形是否与自身交叉。

在您的情况下,大多数情况下可以忽略第 1 项。

如果多边形不交叉并且一个完全包含在另一个中,则可以将以下 javascript 函数转换为 python。

function polygonArea(X, Y, numPoints) 
{ 
  area = 0;         // Accumulates area in the loop
  j = numPoints-1;  // The last vertex is the 'previous' one to the first

  for (i=0; i<numPoints; i++)
    { area = area +  (X[j]+X[i]) * (Y[j]-Y[i]); 
      j = i;  //j is previous vertex to i
    }
  return area/2;
}

其中 X & Y 是坐标数组。两个多边形的结果然后用于 %。

如果任何坐标穿过本初子午线,则所有多边形的坐标都必须标准化。

如果需要实际面积,计算可能会非常复杂。

感谢Darel Rex Finley 的功能。

Here 是 Google 地图上的一个演示,显示绿色多边形中粉色多边形的面积百分比。这里粉色多边形在绿色多边形内。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2018-06-12
    • 2021-09-04
    • 1970-01-01
    相关资源
    最近更新 更多