geopandas.GeoSeries.shared_paths#
- GeoSeries.shared_paths(other, align=None)[来源]#
返回两个几何体之间的共享路径。
GeoSeries中的几何图形应仅为 (Multi)LineStrings 或 LinearRings。返回的 GeometryCollections 的 GeoSeries 每个 GeometryCollection 中包含两个元素。第一个元素是一个 MultiLineString,包含两个输入之间方向相同的共享路径。第二个元素是一个 MultiLineString,包含两个输入之间方向相反的共享路径。
您可以使用
GeoSeries.get_geometry()方法提取结果 GeometryCollection 的各个几何体。该操作以一对一的行方式进行:
- Parameters:
- otherGeoseries or geometric object
要查找共享路径的 Geoseries(逐元素)或几何对象。必须仅包含(多条)线字符串或线环几何类型。
- alignbool | None (default None)
如果为真,则根据其索引自动对齐GeoSeries。 如果为假,则保留元素的顺序。 None默认为真。
- Returns:
- GeoSeries
示例
>>> 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几何体之间的共享路径:
>>> 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:>>> 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