2
我有一個很好的LineString
,並定義了一個很好的Point
,它位於LineString
。得到一個點的任一側的LineString的頂點
我怎樣才能找到其位於該點兩側的LineString
的頂點? (在一分爲二的線)
我有一個很好的LineString
,並定義了一個很好的Point
,它位於LineString
。得到一個點的任一側的LineString的頂點
我怎樣才能找到其位於該點兩側的LineString
的頂點? (在一分爲二的線)
找到線段在LineString
其中該點所在。然後相應地在兩個組中分割LineString
的頂點。要定位線段,只需將點/線段交點測試應用於每個線段。
from shapely.geometry import Point,LineString
def split(line_string, point):
coords = line_string.coords
j = None
for i in range(len(coords) - 1):
if LineString(coords[i:i + 2]).intersects(point):
j = i
break
assert j is not None
# Make sure to always include the point in the first group
if Point(coords[j + 1:j + 2]).equals(point):
return coords[:j + 2], coords[j + 1:]
else:
return coords[:j + 1], coords[j:]