【问题标题】:Finding overlapping weighted polygons 'highest' area寻找重叠的加权多边形“最高”区域
【发布时间】:2016-01-18 14:17:32
【问题描述】:

我有许多以坐标列表形式出现的多边形。这些多边形中的每一个都代表全球地图上的一个区域,并且每个都有一个权重。

我需要在地图上找到此权重最高的区域。这意味着在多边形重叠的地方,权重将是相交区域的两个多边形的总和。我想让计算尽可能高效。任何帮助将不胜感激。

【问题讨论】:

  • 多边形的属性是什么?直线、凸、凹、自相交等?
  • @GilbertAllen 我一直在研究它们之间的交叉点,但到目前为止,我还没有看到走得太远。
  • @Paul 每个多边形代表一个区域,例如一个国家。它们不会是自相交的或直线的,但会是凹形的。
  • @Humphrey 在这种情况下,最简单的解决方案是通过最近的邻居对多边形进行聚类,并对每对邻居 (A , B) 执行转换为三个多边形 A / BB / A 和 @987654324 @ 使用各自的权重 weight(A)weight(B)weight(A) + weight(B) 并刷新集群。重复此操作,直到找不到更多的交叉点并完成。
  • 感谢@Paul,这似乎运作良好。如果您想将其作为答案,我可以接受。

标签: python algorithm maps shapes polygons


【解决方案1】:

解决这个问题的最简单方法是通过最近的邻居对多边形进行聚类。此步骤是可选的,仅用于提高搜索相交多边形的效率。相反,也可以省略聚类,这需要对相交的多边形进行详尽的搜索。

在下一步中,您可以将两个相交的多边形AB 替换为三个多边形,如下所示:由A 的区域组成的多边形,没有权重为A 的相交区域, B 的等效多边形,以及覆盖AB 的交叉区域的第三个多边形,添加的权重为AB 作为权重。将AB 替换为生成的三个多边形并更新集群。重复此步骤,直到找不到相交的矩形为止。

【讨论】:

  • 你对 Python 库有什么建议可以做到这一点吗?我一直在使用 shapely,但是在计算其中一个多边形包含在另一个多边形中的差异时遇到了问题 - 在这个库中它不支持这样做。
  • @Humphrey 实际上,这种多边形很可能需要解决方法。大多数多边形包仅支持无孔多边形,而从您描述的多边形集生成的多边形中的一个不具有该属性。我对 python 的工作那么不多,但我找不到任何支持这种多边形的包......我对这种情况的建议是在环形多边形中插入另一条边在某个任意点,从而将其转换为无孔多边形。
猜你喜欢
  • 1970-01-01
  • 2017-07-07
  • 2021-09-30
  • 2017-04-19
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 2011-05-12
  • 2016-02-05
相关资源
最近更新 更多