geopandas.GeoSeries.line_merge#

GeoSeries.line_merge(directed=False)[来源]#

返回通过组合MultiLineString中的线段形成的(多)线段字符串。

当两条线相交时,线在其端点处连接在一起。 当三条或更多线在端点处相交时,线不会连接。 无法连接的线元素在结果中的 MultiLineString 中保持不变。

每个合并的 LineString 的方向将是其来源的 LineStrings 中的多数方向。除非指定 directed=True,否则该操作将不会改变线内点的顺序,因此仅合并方向不变的线。

非线性几何导致空的几何集合。

Parameters:
directedbool, default False

仅在不改变点顺序的情况下合并线。 需要 GEOS >= 3.11.0

Returns:
GeoSeries

示例

>>> from shapely.geometry import MultiLineString, Point
>>> s = geopandas.GeoSeries(
...     [
...         MultiLineString([[(0, 2), (0, 10)], [(0, 10), (5, 10)]]),
...         MultiLineString([[(0, 2), (0, 10)], [(0, 11), (5, 10)]]),
...         MultiLineString(),
...         MultiLineString([[(0, 0), (1, 0)], [(0, 0), (3, 0)]]),
...         Point(0, 0),
...     ]
... )
>>> s
0    MULTILINESTRING ((0 2, 0 10), (0 10, 5 10))
1    MULTILINESTRING ((0 2, 0 10), (0 11, 5 10))
2                          MULTILINESTRING EMPTY
3       MULTILINESTRING ((0 0, 1 0), (0 0, 3 0))
4                                    POINT (0 0)
dtype: geometry
>>> s.line_merge()
0                   LINESTRING (0 2, 0 10, 5 10)
1    MULTILINESTRING ((0 2, 0 10), (0 11, 5 10))
2                       GEOMETRYCOLLECTION EMPTY
3                     LINESTRING (1 0, 0 0, 3 0)
4                       GEOMETRYCOLLECTION EMPTY
dtype: geometry

使用 directed=True,您可以避免在行内更改点的顺序,并仅合并那些不需要改变方向的行:

>>> s.line_merge(directed=True)
0                   LINESTRING (0 2, 0 10, 5 10)
1    MULTILINESTRING ((0 2, 0 10), (0 11, 5 10))
2                       GEOMETRYCOLLECTION EMPTY
3       MULTILINESTRING ((0 0, 1 0), (0 0, 3 0))
4                       GEOMETRYCOLLECTION EMPTY
dtype: geometry