【发布时间】:2012-10-14 08:21:00
【问题描述】:
我目前正在android中开发一个导航系统,我正在使用dijkstra的最短路径算法我的顶点类包含如下所示的成员:
-------------------------------------
| Vertex |
-------------------------------------
| | | | |
| id | name | longitude | latitude |
-------------------------------------
还有一条边,其成员如下所示:
---------------------------------------------
| Edge |
---------------------------------------------
| | | | | |
| id | name | source | destination | weight |
---------------------------------------------
由于顶点和边具体基于真实数据:交叉点作为顶点 和一个交叉口到另一个交叉口,简单地说就是我的应用程序的整个图表就是我所在城市的道路网络。
我的问题是,我仍然无法提出一种算法或算术方程来计算基于一个交叉点到另一个交叉点的距离以及到达一个交叉点到另一个交叉点的时间的边权重。
【问题讨论】:
-
如果你不想滚动你自己的系统,你可以试试graphhopper(也适用于android,处理有向图,你可以将图用作内存映射或内存等)。已经有一个方法 RoutingAlgorithm.setType 可以处理最短 + 最快的路线。
-
@Karussell 但是我必须提供边缘权重的真实数据吗?还是通过卫星或其他方式计算?
-
通过 openstreetmap(参见 OSMReader)或您拥有的任何数据源。
标签: routing navigation shortest-path dijkstra weighted-average