我试图找到线串的起点和用于查找与多边形最近距离的点之间的线串长度。
所以我用下面的代码来获得线串和一些多边形之间的最小距离。
gdf['MinDistToTrack'] = gdf.geometry.apply(lambda l: min(rail_or.distance(l)))
我还想得到从字符串开始到上面代码使用的点的距离。
现在,我得到的数据帧包含值为"MinDistToTrack"(我现在有了它(的多边形,但也有值为"Length_Of_Linestring_Up_Location_Of_Polygon"。
所以,假设从线串的开始到多边形,线串的路径后面有22米,那么这就是我想与"MinDistToTrack"一起保存的值
多边形ID:1"MinDistToTrack":1m'字符串向上到多边形位置的长度':22m
这可能吗?还是我需要将行字符串拆分为小元素,然后查看所有元素以及与最接近多边形的行字符串元素相关的所有前面元素的长度?
显示问题的图片
您可以使用shapely中的以下概念:
- shapely.ops中的nearest_points((函数计算一对几何图形中最近的点
shapely.ops.nearest_points(geom1,geom2(返回输入几何图形中最近点的元组。返回点的顺序与输入几何图形的顺序相同。
https://shapely.readthedocs.io/en/stable/manual.html#shapely.ops.nearest_points
from shapely.ops import nearest_points
P = Polygon([(0, 0), (1, 0), (0.5, 1), (0, 0)])
Lin = Linestring([(0, 2), (1, 2), (1, 3), (0, 3)])
nps = [o.wkt for o in nearest_points(P, Lin)]
##nps = ['POINT (0.5 1)', 'POINT (0.5 2)']
np_lin = = nps[1]
- 然后可以使用点np_lin并将其投影到lin上,以使用
d=Lin.project(np_Lin(d将是沿着Lin到点np_Lin的距离,即最接近P的对应点的距离。