Python 计算直线与线串的交点,并使用shapely定义线串段

Python 计算直线与线串的交点,并使用shapely定义线串段,python,shapely,Python,Shapely,这两个对象是使用LineString从shapely.geometry 我可以使用Line1\u string.intersection(line2\u string.coords找到交点,但我还想定义line\u string1的线段,即这两条线的交点是自动发生的 到目前为止,我遇到了这个答案[a link](),但是我从定义的split函数中得到了一个none输出 有什么错误的想法或其他建议吗?将Line1\u string分解成一个简单线段列表,检查每个线段是否相交 使用: 交叉点发生在项

这两个对象是使用
LineString
shapely.geometry

我可以使用
Line1\u string.intersection(line2\u string.coords
找到交点,但我还想定义
line\u string1
的线段,即这两条线的交点是自动发生的

到目前为止,我遇到了这个答案[a link](),但是我从定义的split函数中得到了一个none输出


有什么错误的想法或其他建议吗?

Line1\u string
分解成一个简单线段列表,检查每个线段是否相交

使用:

交叉点发生在项目2或第三段上。请注意,可能会获得多个交点,尤其是当交点位于连接两个或多个线段的顶点上时

Line1_string=LineString([(1,4),(3,4),(3,3),(3.5,2),(4.5,1),(6,1)])

line2_string=LineString([(5,4),(2,1)])
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]