geopandas.GeoSeries.shared_paths#

GeoSeries.shared_paths(other, align=None)[来源]#

返回两个几何体之间的共享路径。

GeoSeries中的几何图形应仅为 (Multi)LineStrings 或 LinearRings。返回的 GeometryCollections 的 GeoSeries 每个 GeometryCollection 中包含两个元素。第一个元素是一个 MultiLineString,包含两个输入之间方向相同的共享路径。第二个元素是一个 MultiLineString,包含两个输入之间方向相反的共享路径。

您可以使用 GeoSeries.get_geometry() 方法提取结果 GeometryCollection 的各个几何体。

该操作以一对一的行方式进行:

../../../_images/binary_op-01.svg
Parameters:
otherGeoseries or geometric object

要查找共享路径的 Geoseries(逐元素)或几何对象。必须仅包含(多条)线字符串或线环几何类型。

alignbool | None (default None)

如果为真,则根据其索引自动对齐GeoSeries。 如果为假,则保留元素的顺序。 None默认为真。

Returns:
GeoSeries

另请参阅

GeoSeries.get_geometry

示例

>>> from shapely.geometry import LineString, MultiLineString
>>> s = geopandas.GeoSeries(
...     [
...         LineString([(0, 0), (1, 0), (1, 1), (0, 1), (0, 0)]),
...         LineString([(1, 0), (2, 0), (2, 1), (1, 1), (1, 0)]),
...         MultiLineString([[(1, 0), (2, 0)], [(2, 1), (1, 1), (1, 0)]]),
...     ],
... )
>>> s
0             LINESTRING (0 0, 1 0, 1 1, 0 1, 0 0)
1             LINESTRING (1 0, 2 0, 2 1, 1 1, 1 0)
2    MULTILINESTRING ((1 0, 2 0), (2 1, 1 1, 1 0))
dtype: geometry

我们可以找到每个几何体与单个shapely几何体之间的共享路径:

../../../_images/binary_op-03.svg
>>> l = LineString([(1, 1), (0, 1)])
>>> s.shared_paths(l)
0    GEOMETRYCOLLECTION (MULTILINESTRING ((1 1, 0 1...
1    GEOMETRYCOLLECTION (MULTILINESTRING EMPTY, MUL...
2    GEOMETRYCOLLECTION (MULTILINESTRING EMPTY, MUL...
dtype: geometry

我们还可以逐行比较两个GeoSeries。上面的GeoSeries与下面的GeoSeries的索引不同。我们可以根据索引值对两个GeoSeries进行对齐,并使用相同索引的元素进行比较,方法是使用 align=True,或者忽略索引并根据它们的匹配顺序进行比较,方法是使用 align=False

../../../_images/binary_op-02.svg
>>> s2 = geopandas.GeoSeries(
...     [
...         LineString([(1, 1), (0, 1)]),
...         LineString([(0, 0), (1, 0), (1, 1), (0, 1), (0, 0)]),
...         LineString([(1, 0), (2, 0), (2, 1), (1, 1), (1, 0)]),
...     ],
...     index=[1, 2, 3]
... )
>>> s.shared_paths(s2, align=True)
0                                                 None
1    GEOMETRYCOLLECTION (MULTILINESTRING EMPTY, MUL...
2    GEOMETRYCOLLECTION (MULTILINESTRING EMPTY, MUL...
3                                                 None
dtype: geometry
>>>
>>> s.shared_paths(s2, align=False)
0    GEOMETRYCOLLECTION (MULTILINESTRING ((1 1, 0 1...
1    GEOMETRYCOLLECTION (MULTILINESTRING EMPTY, MUL...
2    GEOMETRYCOLLECTION (MULTILINESTRING ((1 0, 2 0...
dtype: geometry