geopandas.GeoSeries.polygonize#

GeoSeries.polygonize(node=True, full=False)[来源]#

根据GeoSeries的线条创建多边形。

将包含表示平面图边缘的线条的GeoSeries多边形化。可以提供任意几何类型作为输入;只有构成的线条和环会被用来创建输出多边形。

当组合的线或环未完全闭合多边形时,将被忽略。重复的线段将被忽略。

除非您知道输入的 GeoSeries 代表一个具有干净拓扑的平面图(例如,在交叉的两条线上都有一个节点),否则建议使用 node=True,这会在多边形化之前进行结点处理。使用 node=False 虽然能提供性能上的好处,但如果输入不是正确的拓扑,可能会导致不正确的多边形。

full=True 时,返回值是一个包含输出多边形的四元组,以及无法转换为多边形的线。返回值由4个长度不一的元素组成:

  • 有效多边形的GeoSeries(与 full=False 相同)

  • 切割边的GeoSeries:两端连接但不属于多边形输出的边

  • 悬垂的GeoSeries:一端连接但不属于多边形输出的边

  • 无效环的GeoSeries:形成但不合法的多边形(蝴蝶结等)

Parameters:
nodebool, default True

在多边形化之前执行节点处理,默认为True。

fullbool, default False

返回由GeoSeries组成的元组的完整输出,默认值为False。

Returns:
GeoSeries | tuple(GeoSeries, GeoSeries, GeoSeries, GeoSeries)

包含多边形的GeoSeries或四个GeoSeries的元组,分别为 (polygons, cuts, dangles, invalid)

示例

>>> from shapely.geometry import LineString
>>> s = geopandas.GeoSeries([
...     LineString([(0, 0), (1, 1)]),
...     LineString([(0, 0), (0, 1), (1, 1), (1, 0), (0, 0)]),
...     LineString([(0.5, 0.2), (0.5, 0.8)]),
... ])
>>> s.polygonize()
0        POLYGON ((0 0, 0.5 0.5, 1 1, 1 0, 0 0))
1    POLYGON ((0.5 0.5, 0 0, 0 1, 1 1, 0.5 0.5))
Name: polygons, dtype: geometry
>>> polygons, cuts, dangles, invalid = s.polygonize(full=True)