GPS应用论文 第16页
下面介绍的是最短路径的查询。用户通过上面的程序找到该点在哪条街道上后,现在要做的,就是如何知道从一个点,在另一个点的最短路径。算法流程图如4.7所示
在这里,查询最短路径是利用迪杰斯特拉(Dijkstra)算法。迪杰斯特拉(Dijkstra)算法的具体实现在“ 3.2,最短路径搜索”里有详细介绍。这个算法,将任何一点到另外任何一点的最短路径都算出。当用户输入起点街道名,终点街道名,系统进入数据库,读取从起点到终结的最短路径,并显示。(在这个代码还提示所输入的街道名是否在系统范围内,如果不在,会提示“无此街道”)
输入起始街道名 并判断地图内是否有此街道 代码如下
strSql1 = "select * from road where street_name =" & txtStreet.Text & ""
dr = dbobj.DataReader(strSql1)
If dr.Read Then
k = dr("e1id")
Else
MessageBox.Show("无此街道!")
Exit Sub
输入终点街道名,判断地图有此街道并显示最短路径代码如下
strSql2 = "select * from road where street_name =" & txtEnd.Text & ""
dr = dbobj.DataReader(strSql2)
If dr.Read Then
txtGj.Text = "最短路径为:" & dist(dr("e1id")) & vbCrLf & "路线为:" & txtEnd.Text
j = dr("e1id")
For i = 0 To n + 1
www.751com.cn
strSql = "select street_name from road where e1id =" & pre(j) & " and e2id =" & j & ""
dr1 = dbobj.DataReader(strSql)
If dr1.Read Then
txtGj.Text = txtGj.Text & dr1("street_name")
Else
Exit For
End If
Exit For
Else
strSql = "select street_name from road where e1id =" & pre(j) & " and e2id =" & j & ""
dr1 = dbobj.DataReader(strSql)
dr1.Read()
txtGj.Text = txtGj.Text & "<--" & dr1("street_name")
End If
j = pre(j)
ElseIf j < k Then
j = pre(j)
If pre(j) = -1 Then
strSql = "select street_name from road where e1id =" & j & " and e2id =" & dr("e2id") & ""
dr1 = dbobj.DataReader(strSql)
If dr1.Read Then
txtGj.Text = txtGj.Text & dr1("street_name")
Else
txtGj.Text = txtGj.Text & "<--" & txtStreet.Text
Exit For
End If
Exit For
Else
strSql = "select street_name from road where e1id =" & j & " and e2id =" & pre(j) & ""
dr1 = dbobj.DataReader(strSql)
dr1.Read()
txtGj.Text = txtGj.Text & "<--" & dr1("street_name")
End If
End If
Next
Else
MessageBox.Show("无此街道!")
第五章 结 论
5.1 结论
城市公共交通在我国城市交通中占有重要的地位,是同我国城市居民生产、生活等活动密切相关的系统。如何更完善我们的地图,让地图更人性化,将更有利于我们的生活,是我们需要考虑的问题。
本论文的主要优点在于以下几点:
1.本论文考虑了单行道的问题,在地图中,我们将单行道的路径权值设置为无穷大,
在系统查询时,将不会选择这条路径。与实际生活中的情况更加符合。
2.在路径查询中,使用的是最短路径的算法。对于出行更简单有效。
5.2 需要改进的地方
虽然本论文在理论研究和具体实现上取得了有点的成功,但是还是存在着很大的不足,有许多问题有待进一步的改进和研究。以下是有待改进的问题:
1、由于个人能力有限,并没有考虑道路禁左的问题。
2.本文采用的迪杰斯特拉(Dijkstra)算法在存储路径权值问题是是采用邻接矩阵的形式,当矩阵超过1000*1000时,算法会运行的比较慢。
3.街道存储的信息不是非常的多,没有一些重点单位,比如银行,派出所之类的信息,也没有提供这些地点的查询。
4.虑外来游客,因为对我们的城市并不熟悉,如果能够提供一种功能,使得他们通过输入所在建筑物名称而查询出附近的公交车或者旅游景点,那么我们的系统必定将带来更大的方便。
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] 下一页