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)