【问题标题】:Calculate centre of area(or weighted centre based on area) of polygon in python在python中计算多边形的区域中心(或基于区域的加权中心)
【发布时间】:2018-08-21 08:15:23
【问题描述】:

在 PostGIS 中有很多方法可以计算多边形的质心,甚至我们也可以找到内部质心(代表点)。 但是有什么方法可以根据多边形的面积计算加权质心。

例如我有一个由两个多边形组成的多多边形(假设P1P2 分别具有面积A1A2A1 >> A2)。 但是从几何角度来看,它们的实际质心位于两个多边形之外,但是A1 >> A2,所以我需要这个质心应该更接近P1

【问题讨论】:

  • 为避免误解,能否提供一些样本数据和预期结果?
  • @JimJones +1 给你的评论,因为你的措辞很好!
  • @JimJones 我有示例数据但没有结果,所以我更新了描述以通过示例进行解释。希望对您有所帮助。
  • @MohitRajpoot:添加人们真正可以使用的示例。如果你提到 P1 和 P2,也分享他们的 WKT。听起来工作量太大,但它会显着提高您获得答案的机会。长话短说:越容易复制越好。

标签: python sql postgresql postgis shapely


【解决方案1】:

根据ST_Centroid的文档:

...对于[MULTI]POLYGONs,“重量”被认为是面积......

话虽如此,您的质心将放置在最靠近较大区域的位置。

例子:

MULTIPOLYGON (((8.55 48.23,12.07 48.23,12.07 47.41,8.55 47.41,8.55 48.23)),
             ((13.34 53.47,22.62 53.47,22.62 51.68,13.34 51.68,13.34 53.47)))

使用ST_Centroid 计算质心将为您提供以下几点..

SELECT 
  ST_AsText(
    ST_Centroid('MULTIPOLYGON (((8.55 48.23,12.07 48.23,12.07 47.41,8.55 47.41,8.55 48.23)),
              ((13.34 53.47,22.62 53.47,22.62 51.68,13.34 51.68,13.34 53.47)))'));

                st_astext                 
------------------------------------------
 POINT(16.8445429181027 51.8710758247169)
(1 Zeile)

.. 按面积加权,因此更接近多面体中较大的多边形:

【讨论】:

    猜你喜欢
    • 2010-11-01
    • 1970-01-01
    • 2015-10-16
    • 2014-06-30
    • 2011-12-04
    • 2019-12-03
    • 1970-01-01
    • 2015-04-24
    • 2014-06-28
    相关资源
    最近更新 更多