4

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

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

谢谢你。

4

2 回答 2

0

基本上你想搜索多边形 A 和 B 之间的距离

以下是我将采取的步骤:

距离 = 1;

  1. 检查Polygon B是否是Polygon A的邻居,如果是=完成,如果不是,则转到第2点。
  2. 计算所有相邻Polygons的坐标质心(中点),Polygon B
  3. 计算相邻质心到多边形B质心的距离,选择距离最近的多边形(Polygon C)
  4. Distance = Distance + 1,检查Polygon B是否是Polygon C的邻居,如果是=Finish,如果不是,Polygon A = Polygon C,去Point 2

最后你会得到距离。

于 2013-05-22T05:11:09.153 回答
0

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

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

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

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

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

于 2013-05-24T08:43:51.003 回答