如何从Shapely LineString中截取指定区间的线段片段?
Shapely截取LineString线段的实现方法
Shapely完全支持这类线段截取操作,基于你已有的插值距离或点位置,有两种直接的实现方式:
已知点位置时的截取
先通过line_locate_point()方法获取每个青色点沿原LineString的起点距离(记为dist1和dist2,确保dist1 < dist2),再用slice()方法截取:from shapely.geometry import LineString # 示例原始线段 original_line = LineString([(0,0), (2,2), (5,3)]) # 假设p1、p2是你已知的两个青色点 dist1 = original_line.line_locate_point(p1) dist2 = original_line.line_locate_point(p2) # 获取两点间的子线段 clipped_line = original_line.slice(dist1, dist2)直接用已知插值距离截取
如果你已经知道两个点对应的沿线段距离(比如dist_start和dist_end),可以直接调用slice():clipped_line = original_line.slice(dist_start, dist_end)注意要保证
dist_start ≤ dist_end,且两个距离都在0到原线段总长度(original_line.length)的范围内。验证截取结果
可以通过clipped_line.length检查长度是否等于dist_end - dist_start,或者对比端点坐标确认是否匹配目标点。
内容的提问来源于stack exchange,提问作者horsemeat
相关产品推荐
相关产品推荐

