def point_projects_to_line(point, line):
"""Get the nearest point index on line
"""
coords = list(line.coords)
p = Point(point)
pd = line.project(p)
for i in range(1, len(coords)):
pp = Point(coords[i-1])
cp = Point(coords[i])
prev = line.project(pp)
cur = line.project(cp)
if cur == pd:
return i
if prev == pd:
return i - 1
if prev < pd < cur:
pdist = p.distance(pp)
cdist = p.distance(cp)
return i-1 if pdist <= cdist else i
return None
评论列表
文章目录