单源最短路径_Postgresql构建经纬度查询两点之间的最短路径

本文介绍了如何使用Postgresql的PgRouting扩展来动态查询两点间的最短路径,结合Cesium进行高亮显示和小车动态展示。通过创建新函数,接受经纬度坐标并返回最短路径,实现过程包括数据预处理、拓扑计算和查询语句的编写。最终将查询结果转化为CZML数据在3D场景中展示。
摘要由CSDN通过智能技术生成

前言

前段时间遇到了实际的需求,在特定的路网中查询最短路径。同时配合 Cesium 进行动态显示。

需求

  • 动态查询两点之间的最短路径(起点固定);

  • 查询的路径高亮显示;

  • Cesium 对生成的路径进行小车移动展示。

技术实现路线

  1. 动态查询两点之间的最短路径 -> Postgresql 中的 PgRouting 实现;

  2. 查询的路径高亮显示 -> Cesium 中 PolylineGlowMaterialProperty 进行高亮显示;

  3. 路径进行小车移动展示 ->CZML 进行动态展示

实现效果

1306842dc454663a401ac900bed60123.gif

Postgresql 最短路径实现

起初是参考 PgRouting 官网 的做法。但是这种做法是对数据进行拓扑,生成有向图(或者无向图)采用 dijkstra 算法进行最短路径的生成。这种方法最大的问题就是判断鼠标点击的点位于有向图的位置。相对来说比较麻烦。

0fbbbd0e6133355a1948e97652db4587.png

实现流程:

  • 首先将数据导入 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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值