我有 2 个 shapefile,1 个包含构成道路网络的许多线路,另一个包含许多 GPS 点。
到目前为止,我已经成功地打开了两个 shapefile 并使用 Shapely 和 Fiona 进行了交集(),使用此处找到的代码 - https://gis.stackexchange.com/a/128210/52590
这是我获取交叉点的代码的副本:
from shapely.geometry import shape, MultiLineString
import fiona
Multilines = MultiLineString([shape(line['geometry']) for line in fiona.open("shapefiles/edges.shp")])
Poly = shape(fiona.open("shapefiles/testBuffer.shp").next()['geometry'])
intersecciones = Multilines.intersection(Poly)
这就是“intersecciones”打印时的样子:
> MULTILINESTRING ((339395.1489003573 6295646.564306445,
> 339510.1820952367 6295721.782758819), (339391.2927481248 6295686.99659219, 339410.0625 6295699), (339404.4651918385 6295630.405294137, 339520.18020253 6295708.663279793))
所以这意味着线条 shapefile 和多边形 shapefile 的第一个多边形之间有 3 个交点。
我需要的是从与多边形相交的行 shapefile 中的每一行获取两个属性(“Nombre”和“Sentido”),除了它们相交的确切点之外,这样我就可以得到距中心的距离多边形到相交点之后。
所以我的问题是,是否有任何方法可以使用 Shapely 或任何其他 Python 库来获取这些属性。另外,遍历每个多边形并保存数据的最佳方法是什么?我在考虑可能包含每个多边形的字典,其中包含相交线和距离的属性。最后,有没有更有效的方法来找到交叉点?处理一个多边形大约需要 1 分钟,将来我可能需要它更快。
如果我缺少任何信息,请告诉我,以便我可以编辑问题。
非常感谢您,费利佩。