zoukankan      html  css  js  c++  java
  • 最佳路径分析实现思路及优化研究

    最近在实现基于路网数据的最佳路径功能的实现

    要求:查询两点间的最佳路径,包括时间最短、距离最短、绕开高速(这三种基于行车),以及对障碍物的规避。并实现对车行和人行的适用方案。

    数据存储:路网数据全部存放在postgis数据库中

    数据处理:

    1、将现有的路网线数据进行拓扑关系的建立,这个可以在一些商业平台上建立,如arcMap和supermap desktop都可以。

    2、将数据导入进postgis库中,存储线的长度,平均行驶速度,是否车行,是否人行,道路等级,道路名称等字段进行完善。

    3、建立索引字段,将上下游编号字段及空间字段建立索引。

    算法实现:本方法采用较为成熟的Dijkstra算法和astar算法。

    1、首先对路网信息进行查询,建立网络关系数据,一般方法即为将满足行驶条件的数据全部获取出来。

    优化方法:A对起止点位数据进行扩展范围后进行查询如图所示:

    进行小范围的查询,将数据不用的数据信息抛出。

    B对路网建立数据层级,如果起止点直线距离大于十公里,则在等级较高(高速)的路网上进行查询,以保证数据量的减少,找离起止点最近的高速出入口再进行分析,然后将起止点和对应的出入口按照A优化方法进行数据提取分析。

    2、获取最近边界的最优节点。如边界有NODEA和NODEB需要得出最优化NODE节点。

    3、运用成熟的Dijkstra算法和astar算法进行分析。按照不同权重获取最佳路径。

    4、获取路径后,对起止点与获取出来的路径进行处理,连接起止点其路径起点,连接终点与路径终点。

    5、对导航信息进行提取,按照道路名称的不同进行转向行驶提示,并对导航记录关联路段信息。

    最终结果如图所示

  • 相关阅读:
    Java 第十一届 蓝桥杯 省模拟赛 螺旋矩阵
    Java 第十一届 蓝桥杯 省模拟赛 螺旋矩阵
    Java 第十一届 蓝桥杯 省模拟赛 正整数的摆动序列
    Java 第十一届 蓝桥杯 省模拟赛 正整数的摆动序列
    Python abs() 函数
    Python数学常量
    Python三角函数
    Python随机数函数
    Python数学函数
    语义分割模型优化
  • 原文地址:https://www.cnblogs.com/songjiang6940/p/roadnet.html
Copyright © 2011-2022 走看看