问题描述
我有2个用于表示道路的shapefile,我们将它们称为形状A和B。每条道路均以线段表示。文件B几乎是另一个文件的超集,只有A的几条路没有显示。选择了一个分段(红色)的文件A:
在此超集文件(B)中,段较小。我可以说,对于A中的每个分段,B中都有一个或多个分段。我相信B中没有一个分段对应于A中的多个分段。这是选择了一个分段(红色)的shapefile B :
线的坐标不精确,彼此之间非常接近。这是所选行的最左点的坐标:
Dot in file A: -42.92896076999995,-22.77139965999993
Dot in file B: -43.217942900516830,-22.888565009926047
我正在使用 geopandas 。
如何交叉引用两个数据集?对于文件B中的每个线段,找到文件A中的相关段(如果存在)?
解决方法
问题似乎取决于您所使用的交叉引用标准。例如,您必须首先决定是假设每个分段相交的情况还是将其定义为每个分段之间的最小距离。
无论如何,对这两种方法使用大熊猫或整形并不是一件容易的事。将A的所有分割都划分为单独的线串后,您可以使用geopandas的叠加功能找到与B的分割甚至略微相交的情况。
您将必须决定要找到正交的最短距离还是每个分段的起点和终点之间的最短距离。您可以从shapely.ops中使用import最近的点等。您可以使用shapely的所有功能来定位大熊猫的几何形状。
,我会推荐shpdiff
“ shpdiff”实用程序比较两个形状文件,打印出一个 易于理解的任何差异摘要,类似于 Unix / Linux的著名diff实用程序。
http://legacy.obviously.com/gis/shpdiff/
取决于Shapefile C库
我可以确认我可以在Dev-C ++ 5.11上进行编译
http://orwelldevcpp.blogspot.com/2015/04/dev-c-511-released.html?m=1