Dijkastra算法:(迪杰斯特拉)

102 阅读1分钟

Dijskastra + GeoTools 实现最短路径计算:

  1. 对路网(shp文件)进行处理,完成一部分Postgis替我们干活;主要是给道路进行编号,给道路节点进行编号,给道路添加起止节点,生成两个文件,暂且个它命令为(roadline roadpoint)
  • roadline: 道路中心的分段,每条段有段ID、起点编号start、终点编号target、是否双向(twoway)、权重(weight)【路段长度】
  • roadpoint: 记录节点编号

将数据手动填充完,把两个文件保存为geojson格式

  1. 算法开发 Dijkastra:
  • 将顶点分成两个部分:已知当前最短路径的顶点集合Q和无法到达顶点集合R
  • 定义一个数组(distance)记录源点到各顶点的距离,下标表示顶点,元素值顶点,源点(start)到自身的距离

首先,读取节点对应的geosjson文件,来初始化图中的节点列表; 其次,读取路段对应的geosjson文件,构建节点的连接关系,并填完图中的路段列表

zhuanlan.zhihu.com/p/338414118