如何在Python中计算多边形的重心

5

我想知道是否有一种算法可以在OSM中计算多边形的中心,因为我发现每个多边形都有不同的参数表达式:

"POLYGON((-171379.35 5388068.23,-171378.8 5388077.59,-171368.44 5388076.82,-171368.89 5388067.46,-171379.35 5388068.23))"

"POLYGON((-171379.3 5374226.42,-171375.96 5374227.32,-171378.95 5374239.82,-171365.69 5374243.03,-171364.16 5374237.14,-171365.92 5374236.76,-171364.26 5374230.26,-171362.67 5374230.63,-171360.11 5374220.19,-171376.6 5374216.13,-171379.3 5374226.42))"

在这个表达式中,每一个都有不同数量的参数,那么我该如何计算它们的质心呢?
我正在使用PostGIS从空间信息中获取多边形信息。

我找到了使用numpy的这段代码:http://oles-tutorials.googlecode.com/svn-history/r42/trunk/scipy2011/geoprocessing_tutorial/exercises/exercise4.py - aaamourao
ST_Centroid,由MaM发布,将为您提供答案,但如果您想了解公式/理论,请查看http://en.wikipedia.org/wiki/Centroid,在底部。 - John Powell
2个回答

11

多边形使用WKT描述。

使用Python? 使用Shapely

from shapely import wkt
p1 = wkt.loads("POLYGON((-171379.35 5388068.23,-171378.8 5388077.59,
                -171368.44 5388076.82,-171368.89 5388067.46,
                -171379.35 5388068.23))")
p2 = wkt.loads("POLYGON((-171379.3 5374226.42,-171375.96 5374227.32,
                -171378.95 5374239.82,-171365.69 5374243.03,
                -171364.16 5374237.14,-171365.92 5374236.76,
                -171364.26 5374230.26,-171362.67 5374230.63,
                -171360.11 5374220.19,-171376.6 5374216.13,
                -171379.3 5374226.42))")
print(p1.centroid.wkt) # POINT (-171373.8710815240337979 5388072.5175872016698122)
print(p2.centroid.wkt) # POINT (-171370.4190352254081517 5374229.0108996396884322)

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接