在Python中计算多边形的面积中心(或基于面积的加权中心)

时间:2018-08-21 08:15:23

标签: python geometry polygon postgis shapely

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

例如我有一个包含两个多边形的多多边形(假设P1P2分别具有区域A1A2A1 >> {{1} }。 但是从几何角度看,它们的实际质心位于两个多边形的外部,但为A2 >> A1,因此我需要将此质心移近A2

1 个答案:

答案 0 :(得分:3)

根据ST_Centroid的文档:

  

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

话说回来,您的质心将放置在最靠近较大区域的位置。

示例:

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)))

enter image description here

使用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)

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

enter image description here