最短路径算法在GIS中的应用与分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
示 两 个 顶 点 间 的 距 离 、途
中所经的时间、交通费用
等, 此时路径长度的度量
不是路径上边的数目, 而
是路径上边的权( 距离、时
间、费用等) 之和。
例如图 1, 每个 顶 点 表示一个城市, 两个顶点
图 1 带权图的最短路径
构成的边表示两城市间的
道路, 边上的数字也就是上面说的权, 表示两个城市之间的距离( 公
1.常见的最短路径问题及算法
1.1 在实际中常见的最短路径问题 例如, 如果某人开车从甲城
到乙城, 他一般会考虑走路程最短或者时间最少的线路。这是考虑路
程或时间的最短路径问题。
再 如 , 要 在 A 地 到 B 地 之 间 铺 设 光 缆 , 在 铺 设 时 要 根 据 地 形 、土
壤 、是 否 经 过 江 河 、公 路 、铁 路 、等 各 种 情 况 来 计 算 铺 设 时 的 费 用 。求 由
各 顶 点 I, 如 果 D[ I] >D[ T] +L[ I, T] , 那 么 令 Y[ I] =T, D[ I] =D[ T] +L[ I, T] 。
继续执行第二步, 直到 V 中包括了所有的顶点。 2.交通系统中最短路径算法的应用 2.1 交通系统的分类及对应的最短路径算法 现今的交通系统大 体可分为二大类: 公交系统和非公交系统。对于非公交系统, 相对而言 交通线路较灵 活 , 可 自 行 选 定 出 行 线 路 , 如 出 租 车 、私 家 车 、单 位 和 车 等等。用上述的 Dijkstra 算法可以较好的解决最短路径的选择问题。而 对于复杂公交系统, 就不能直接采用 Dijkstra 最短路径算法来实现, 主 要有以下原因: 1)数据结构复杂。网络在教学和计算领域被抽象为图 , 无 向 图 一 般可以用邻接矩阵和 接多重表表示。公交线路网络拓扑, 很难用现 有的数据结构加以完整的表示。如果采用现有的最短路径算法分析, 其建立的公交线路网络图的数据结构模型将非常复杂。 2)算法时间长。以 Dijkstra 算法来计算公交路线最短路径, 在数据 量大的情况下, 计算速度会慢得让人难以忍受。 3)公交中转车的特殊性并不一定要求用 Dijkstra 算法算出一条最 短路径。如求乘客从 A 站到 B 站的最短路径, 用 Dijkstra 算法计算出 来的结果可能是: 从 A 站到 B 站需要转好几次车或十几次车才能到 达。这样的计算结果是没有什么意义的。 2.2 一种针对公交线路的最短路径算法 一般地, 从 A 站乘公交 车到 B 站, 乘客会先看经过 A 站的车有无直接到 B 站的。若有, 马上 得到直达车路线( 图 2(1)) 。若无, 则再看 B 站有什么车经过, 经过 A 站 的 车 和 经 过 B 站 的 车 有 无 交 叉 点 T1, 若 有 , 则 可 考 虑 在 交 叉 点 T1 转 车( 图 2(2)) 。若无, 则乘坐经过 A 站的车到某一站如 T1 站下车, 经过 T1 站的车与经过 B 站的车有无交叉点 T2。若有则在交叉点 T2 转车, 两次转车可到达 B( 图 2(3)) 。若无, 两次转车不成功。
里) 。如果用从 A 城到 G 城, 那么最短路径应该是 A- >E- >D- >G, 而且
最短距离 L( A, H) =L( A, E) +L( E, D) +L( D, G) =30+20+70=120 公里。
1.3 迪杰斯特拉(Dijkstra)最 短 路 径 算 法 在 求 解 网 络 图 上 节 点 间
3.公交线路查询系统的实现分析
对于不同的城市, 其道路体系复杂程度各不相同。对旧城区街道 狭窄, 公交线路的规划就不得不考虑这些特点, 从而导致公交网络的 复杂性。如下是公交线路的特点及其处理方法:
A.公 交 车 线 路 繁 多 。 将 每 一 线 路 、各 站 名 及 其 站 点 间 的 路 程 均 存 入数据库中, 查询时 由 程 序 从 数 据 库 内 读 取 线 路 、站 名 、路 程 , 并 据 查 询条件按照公交线路的最短路径算法计算得出所需的线路。
根据公交线路的实际, 可以认为两次之内的转车是比较合理的, 超过两次的转车是无意义的, 不予考虑。由此可以给出改进的公交转 车最短路径算法的步骤, 如下图流程所示:
36
科技信息
○科教视野○
SCIENCE & TECHNOLOGY INFORMATION
2007 年 第 17 期
图 3 公交转车最短路径算法
C.相 同 的 车 站 名 有 的 出 现 在 不 同 的 地 点 。解 决 这 一 问 题 的 方 法 是 对于地图上的每一个站点都赋予它一个 “别名”, ( 通常是给每个站点 编号) 这样重名现象就不会出现了。
D.同一线路同一地点的往返车站有的相隔很远, 或者具有不同的 车 站 名 。这 种 现 象 在 公 交 规 划 中 特 别 明 显 。应 该 说 这 是 公 交 规 划 中 不 好的一面, 但由于历史的原因这一现象一直没有得到更正。对于这个 问题人们 在 车 站 搜 寻 的 过 程 中 采 用 “面 积 ”搜 索 方 式 而 不 是 采 用 “点 ” 搜索方式来解决。具体地说就是人们在转车时, 往往并不是下车后就 在下车的那个车站转车, 常常需要到另一个车站( 比如说对面车站、下 一个车站等) 去转车。因而搜寻转车点时给出一个搜寻的范围, 以下车 点为中心搜索一定范围内所有的可转车站的可转车次, 而不是只搜寻 下车点的可转车次。
L=L( V1, V2) +L( V2, V3) +…+L( Vn-1, Vn) 。 在带权图中给定一个起点 Vi 及终点 Vj, 最短路径问题就是在( Vi , Vj) 道路集合{Pij}中, 寻求权为最小的路径, 这样的路径称为从 Vi 到 Vj 的最短路径。从 Vi 到 Vj 的最短路径长度即最短距离记作 d( Vi, Vj) 。 带权图中的权可以表
标值的最小性判别,直到获得最后的优化路径。Dijkstra 最短路径算法
由于其稳 定 性 、能 适 应 网 络 拓 扑 的 变 化 , 同 时 对 系 统 的 内 存 空 间 占 用
少, 因而在计算机网络拓扑路径选择以及 GIS 中得到广泛的应用。
Dijkstra 算法的主要实现步骤如下:
第一步: 初始化。V={1, 2, …, N}, S={F}, D[ I] =L[ F, I] , Y[ I] =F。
最短路径的方法中, 目前国内外一致公认的较好算法有迪杰斯特拉
(Dijkstra)及 弗 罗 伊 德(Floyd)算 法 。这 两 种 算 法 中,网 络 被 抽 象 为 一 个 图
论中定义的有向或无向图,并利用图的节点邻接矩阵记录点间的关联
信 息 。在 进 行 图 的 遍 历 以 搜 索 最 短 路 径 时 以 该 矩 阵 为 基 础 不 断 进 行 目
关键词: 最短路径; Dijkstra; 算法; AE Abstr act: This paper presents the normal shortest path and its algorithm, explains the former shortest path algorithm cannot realize the bus route query, puts forward the algorithm which is fit to the bus line query, and aford a more applicably way to bus line query and make it come to true. Key wor ds: shortest path; Dijkstra; Algorithm; AE
B.公 交 车 的 往 返 路 线 往 往 不 同 。由 于 市 区 一 部 分 街 道 采 取 单 行 线
路, 或交通管制的原因, 同一路公交车次其往返的路线并不完全一样。 为解决这一问题, 对于每一条公交线路, 在数据库中都把它当作是两 条有方向的线路看待。这样做的结果是增加了数据库的容量同, 时增 加了电子地图绘制的工作量, 但与公交线路查询的准确性相比, 这点 牺 牲 是 值 得 的 。另 外 这 种 解 决 方 法 令 人 可 喜 的 是 数 据 பைடு நூலகம் 访 问 时 间 并 没 有太明显的增加。
其中 I=1, 2, …, N;
F 表示路径的始点, I 表示某一顶点, N 表示网络中所有顶点的数
目 , V 是 所 有 顶 点 的 集 合 , L[ F, I] 表 示 从 F 点 到 I 点 的 距 离 , S 是 顶 点
的集合, D 为 N 个元素的数组用来存储顶点 F 到其它顶点的最短距离
图 2 公交线路的线路情况图
如果有直达车, 且只有一种线路, 则可不用考虑最短路径问题; 若 有 多 种 线 路 时 可 从 中 选 出 最 短 线 路 出 行 。若 无 直 达 车 且 只 有 一 种 转 车 方法, 则线路也唯一, 不用考虑最短路径问题; 若有几种转车方法( 图 2(4)) , 则需要确定那种转车方法的路程是最短的。
A 地到 B 地铺设光缆开销最小及是考虑费用的最短路径问题。
另外 在 旅 游 、城 市 规 划 、电 子 导 航 、交 通 转 车 、选 址 等 方 面 均 需 要
考虑到最短路径问题。
1.2 带权图的最短路径 有向图是一种可以解决实现生活中与最
短路径相关问题的数据结构。设有图 G, 对 G 中的每一条边( Vi, Vj) 相 应地有一个数 L( Vi, Vj) 称为边的权。图 G 连同在它边上的权被称为带 权图。一条道路 u=V1, V2, …, Vn 的权是 u 上所有权的和, 即
Y 为 N 个元素的数组用来存储最短路径中在顶点 I 之前经过的最近
顶点。
第 二 步 : 从 V- S 集 合 中 找 一 个 顶 点 T, 使 得 D[ T] 是 最 小 值 , 并 将
T 加入到 S 集合中。如果 V- S 是空集合则结束运算。
第 三 步 : 调 整 Y、D 数 组 中 的 值 : 在 VS 集 合 中 对 于 顶 点 T 的 邻 接
如上图 2(4), 经过 A 站的二条线路与经过 B 站的二条线路分别有 交叉点, 如图中的 T1 与 T2。这说明从 A 站乘公交车到 T3 站后, 转乘 公交车可以到达 T2 站, 再转乘公交车可以到达 B 站, 所经过的路程为 L( A, T3) +L( T3, T2) +L( T2, B) , 其它同理。如此看来, 从 A 到 B 有 4 种 转车方法, 设所经过的路程分别为 L1, L2, L3, L4。如果 L1 均小于 L2, L3, L4, 那么 L1 为最短路程, A- >T3- >T2- >B 为最短路径。
4.结束语 按 照 以 上 思 路 , 笔 者 选 择 了 ESRI 公 司 的 AE ( Arc Engine DeveloperKit) 软件并结合 VB.NET 编程开发环境实现了以上二种情况 下的交通线路最短路径的 GIS 算法, 成功地将传统的算法和 GIS 技术
有机地结合, 为信息的图形化处理提供了一个参考。但在非公共交通 线路选择时, 当数据量很大时, 查询的速度较慢, 不适合用于交通线路 非常复杂的大城市; 而公交线路的查询可以在短时间内完成。科
科技信息
○科教视野○
SCIENCE & TECHNOLOGY INFORMATION
2007 年 第 17 期
最短路径算法在 GIS 中的应用与分析
解德祥 蒋廷耀 ( 三峡大学 湖北 宜昌 443002)
摘要: 本文通过对几种常见的最短路径及其算法的分析, 给出常用的最短路径算法不能实现的公共交通路线的查询分析, 提出更适合公交 查询的最短路径算法并加以实现。
●
参考文献 [ 1] 严蔚敏, 吴伟民.数据结构。北京: 清华大学出版社.1987. [ 2] 杨洪.图论常用算法选编.北京: 中国铁道出版社.1988. [ 3] 吴立新, 史文中.地理信息系统原理与算法.北京: 科学出版社.2003. [ 4] 刘光.地理信息系统二次开发教程北京: 清华大学出版社.2003.