我正在尝试使用 Python 中的 Shapely 库将复杂线与多边形相交。不幸的是,Shapely 打破了我原来的线条,因此它返回了一条简单的线条。
例如:
# complex line folded back on itself (A-B-A)
ls = shapely.geometry.LineString([(1,0), (1,2), (1,0)])
ls.length == 4.0
# intersected with a covering bounding box
bounding_box = shapely.geometry.Polygon([(0,0), (0,2), (2,2), (2,0)])
intersected = bounding_box.intersection(ls)
# LINESTRING (1 0, 1 2) - (A-B)
intersected.length == 2.0
您可以看到原始行中的重复组件消失了。我可以理解这种行为的来源,在大多数情况下这可能是明智的选择。
我正在寻找一种方法来进行交叉,以便保留原始线路信息。在这种退化的情况下,我希望最终得到完全相同的几何图形,一条长度为 4 的线自行折叠。在其他更复杂的情况下,我与之相交的多边形将分割原始线,但我仍然需要在交叉点内保留任何重复的线段。