如何计算被另一个多边形覆盖的多边形的百分比

Posted

技术标签:

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

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

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

我会很感激任何帮助

【问题讨论】:

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

您的要求有很多复杂性。

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

在您的情况下,大多数情况下可以忽略第 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 地图上的一个演示,显示绿色多边形中粉色多边形的面积百分比。这里粉色多边形在绿色多边形内。

【讨论】:

以上是关于如何计算被另一个多边形覆盖的多边形的百分比的主要内容,如果未能解决你的问题,请参考以下文章

从 shapefile 计算百分比覆盖率

多多边形地理并集的高效计算技术

获取 QPolygonF 的点

多边形重叠百分比

dtIntersectSegmentPoly2D 2D上的线段与多边形相交计算 产生结果:是否相交,线段跨越的开始和结束百分比,相交的边

如何从一组重叠的圆中计算出一组多边形?