GeoPandas:创建多边形地理第一部分的质心列表?

GeoPandas: Create a list of centroids of the first part of multi-polygon geography?

我有一个包含多边形地理的 GeoDataframe。如果我使用 centroid 函数来查找中心,结果并不总是位于任何多边形内,例如对于一系列岛屿。那么,如何只找到多边形中第一个多边形的质心?

对于 MultiPolygon 的第一个多边形的质心,您可以这样做

mp[0].centroid

有几种方法可以应用它,例如首先将数据框中的每个 MultiPolygon 限制为第一个多边形。

def keep_first(geo):
   if geo.geom_type == 'Polygon':
       return geo
   elif geo.geom_type == 'MultiPolygon':
       return geo[0]

df.geometry = df.geometry.apply(lambda _geo: keep_first(_geo))

df.centroid