シェープファイル データセットがあります。いくつかの道路(線)は同じ名前を持っていますが、別の場所にあり、接続されていません。
これは、geopandas データファイルにある同じ名前の道路の写真です。
道路のチャンク (線列) 間の距離を測定して、距離がしきい値よりも高い場合に道路の名前を変更できるようにしたいと考えています。これにより、各道路には独自の名前が付けられます。
したがって、ラインストリング間の距離を見つける方法を知っていますか?
シェープファイル データセットがあります。いくつかの道路(線)は同じ名前を持っていますが、別の場所にあり、接続されていません。
これは、geopandas データファイルにある同じ名前の道路の写真です。
道路のチャンク (線列) 間の距離を測定して、距離がしきい値よりも高い場合に道路の名前を変更できるようにしたいと考えています。これにより、各道路には独自の名前が付けられます。
したがって、ラインストリング間の距離を見つける方法を知っていますか?
ジオパンダでは、ジオメトリは形の整ったオブジェクトです。形の整った 2 つのオブジェクト間の距離を取得するには、巧妙な名前のdistance
メソッドを使用します。
from shapely.geometry import Point, LineString
import geopandas
line1 = LineString([
Point(0, 0),
Point(0, 1),
Point(1, 1),
Point(1, 2),
Point(3, 3),
Point(5, 6),
])
line2 = LineString([
Point(5, 3),
Point(5, 5),
Point(9, 5),
Point(10, 7),
Point(11, 8),
Point(12, 12),
])
line3 = LineString([
Point(9, 10),
Point(10, 14),
Point(11, 12),
Point(12, 15),
])
print(line1.distance(line2))
> 0.5547001962252291
geopandas の GeoSeries/GeoDataFrame がある場合は、もう少し賢くする必要があります。
gs = geopandas.GeoSeries([line1, line2, line3])
gs.distance(gs)
すべて同じジオメトリであるインデックスに一致するgs
ため、すべてゼロを返します。gs
しかし:
gs.distance(gs.shift())
line1 から line2 まで、および line2 から line3 までの距離を示します。
0 NaN
1 0.554700
2 0.948683
dtype: float64