[英]calculate the intersection point of a line to a Linestring and define the Linestring segment using shapely
Line1_string=LineString([(1,4),(3,4),(3,3),(3.5,2),(4.5,1),(6,1)])
line2_string=LineString([(5,4),(2,1)])
這兩個對象是使用shapely.geometry
LineString
創建的
我可以使用Line1_string.intersection(line2_string).coords
找到交點,但我也想定義Line_string1
線段,使這兩條線的交點自動進行。
到目前為止,我已經遇到了這個答案[一個鏈接]( 在Point的任一側的LineString上獲取頂點 ),但是從已定義的split函數中未獲取任何輸出。
對什么可能是錯誤的任何想法或任何其他建議?
將Line1_string
分成簡單的線段列表,並檢查每個線段是否相交。
使用itertools中的pairwise
配方 :
from itertools import tee
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return izip(a, b)
# Convert input line into list of line segments
Line1_segs = [LineString(p) for p in pairwise(Line1_string.coords[:])]
# Find the intersections
intersect_segs = [i for i, s in enumerate(Line1_segs) if line2_string.intersects(s)]
print(intersect_segs) # [2]
相交發生在項目2或第三段上。 請注意,您可能會得到多個交點,尤其是在交點位於連接兩個或多個線段的頂點上時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.