簡體   English   中英

計算線與線串的交點,並使用形狀定義線串段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM