Geolocation 如何使用ArcMap或其他软件计算拓扑距离?

Geolocation 如何使用ArcMap或其他软件计算拓扑距离?,geolocation,geometry,gis,postgis,Geolocation,Geometry,Gis,Postgis,我想计算两个多边形之间的拓扑距离,而不是欧几里德距离。两个相邻多边形之间的距离为1,通过公共邻居连接的两个多边形之间的距离为2,依此类推 有没有简单的方法来计算拓扑距离?我搜索了这个问题,但没有找到答案 谢谢。基本上,您希望搜索多边形A和B之间的距离 以下是我将采取的步骤: 距离=1 检查多边形B是否是多边形A的邻居,如果它是=Finish,如果不是,则转到点2 计算所有相邻多边形和多边形B的坐标质心(中点) 计算相邻质心到多边形B质心之间的距离,选择距离最近的多边形(多边形C) 距离=距离+1

我想计算两个多边形之间的拓扑距离,而不是欧几里德距离。两个相邻多边形之间的距离为1,通过公共邻居连接的两个多边形之间的距离为2,依此类推

有没有简单的方法来计算拓扑距离?我搜索了这个问题,但没有找到答案


谢谢。

基本上,您希望搜索多边形A和B之间的距离

以下是我将采取的步骤:

距离=1

  • 检查多边形B是否是多边形A的邻居,如果它是=Finish,如果不是,则转到点2
  • 计算所有相邻多边形和多边形B的坐标质心(中点)
  • 计算相邻质心到多边形B质心之间的距离,选择距离最近的多边形(多边形C)
  • 距离=距离+1,检查多边形B是否是多边形C的邻居,如果是=完成,如果不是,多边形A=多边形C,转到点2

  • 最后,您将获得距离。

    我找到了一种使用现有软件实现此计算的方法

    首先,使用PostGIS插件将shp文件导入PostgreSQL

    其次,使用ST_Touchs函数计算每个多边形的相邻多边形

    第三,以每个多边形为点,构造一个新的网络


    最后,使用Dijkstra算法计算每两点之间的最短路径。

    多边形的属性中是否存储了邻接信息,或者必须从几何体中导出邻接信息?在后一种情况下,是否可以依赖于相邻多边形具有相同的顶点,并且具有完全相同的坐标,或者是否也必须考虑舍入?您需要所有多边形对之间的组合距离,还是只需要与几个选定多边形之间的组合距离?GIS SE可能会有所帮助,尤其是。@MvG谢谢。你可以检查我的解决方案是否正确。谢谢。我认为这是一个实用的算法。但是我想使用现有的软件来获得结果。现在我找到了一种实现这个计算的方法。简单而不是Dijkstra就足够了。否则,这看起来是合理的,但应检查
    ST_touch
    是否对给定数据做了正确的操作。另请参阅