def split(line, point):
distance_on_line = line.project(point)
coords = list(line.coords)
for i, p in enumerate(coords):
pd = line.project(geometry.Point(p))
if pd == distance_on_line:
return [
geometry.LineString(coords[:i+1]),
geometry.LineString(coords[i:])
]
elif distance_on_line < pd:
cp = line.interpolate(distance_on_line)
ls1_coords = coords[:i]
ls1_coords.append(cp.coords[0])
ls2_coords = [cp.coords[0]]
ls2_coords.extend(coords[i:])
return [geometry.LineString(ls1_coords),
geometry.LineString(ls2_coords)]
评论列表
文章目录