最佳路径分析实现思路及优化研究
最近在实现基于路网数据的最佳路径功能的实现
要求:查询两点间的最佳路径,包括时间最短、距离最短、绕开高速(这三种基于行车),以及对障碍物的规避。并实现对车行和人行的适用方案。
数据存储:路网数据全部存放在postgis数据库中
数据处理:
1、将现有的路网线数据进行拓扑关系的建立,这个可以在一些商业平台上建立,如arcMap和supermap desktop都可以。
2、将数据导入进postgis库中,存储线的长度,平均行驶速度,是否车行,是否人行,道路等级,道路名称等字段进行完善。
3、建立索引字段,将上下游编号字段及空间字段建立索引。
算法实现:本方法采用较为成熟的Dijkstra算法和astar算法。
1、首先对路网信息进行查询,建立网络关系数据,一般方法即为将满足行驶条件的数据全部获取出来。
优化方法:A对起止点位数据进行扩展范围后进行查询如图所示:
进行小范围的查询,将数据不用的数据信息抛出。
B对路网建立数据层级,如果起止点直线距离大于十公里,则在等级较高(高速)的路网上进行查询,以保证数据量的减少,找离起止点最近的高速出入口再进行分析,然后将起止点和对应的出入口按照A优化方法进行数据提取分析。
2、获取最近边界的最优节点。如边界有NODEA和NODEB需要得出最优化NODE节点。
3、运用成熟的Dijkstra算法和astar算法进行分析。按照不同权重获取最佳路径。
4、获取路径后,对起止点与获取出来的路径进行处理,连接起止点其路径起点,连接终点与路径终点。
5、对导航信息进行提取,按照道路名称的不同进行转向行驶提示,并对导航记录关联路段信息。
最终结果如图所示