前言
前段时间遇到了实际的需求,在特定的路网中查询最短路径。同时配合 Cesium 进行动态显示。
需求
动态查询两点之间的最短路径(起点固定);
查询的路径高亮显示;
Cesium 对生成的路径进行小车移动展示。
技术实现路线
动态查询两点之间的最短路径 -> Postgresql 中的 PgRouting 实现;
查询的路径高亮显示 -> Cesium 中
PolylineGlowMaterialProperty
进行高亮显示;路径进行小车移动展示 ->CZML 进行动态展示
实现效果
Postgresql 最短路径实现
起初是参考 PgRouting 官网 的做法。但是这种做法是对数据进行拓扑,生成有向图(或者无向图)采用 dijkstra
算法进行最短路径的生成。这种方法最大的问题就是判断鼠标点击的点位于有向图的位置。相对来说比较麻烦。
实现流程:
首先将数据导入 Postgresql 数据库
对数据进行路网拓扑数据计算处理,执行成功后,执行成功后会生产一个 vertices_pgr 的表,里面包含路网相交点的空间数据
alter table road add column source int;
alter table road add column target int;
create index road_source_idx on road("source");
create