0. 最短路径
- 数据结构中,图的相关知识中的一个重要知识点就是计算最短路径的问题。期中包括两个解决办法:
- 单源最短路径: Dijkstra算法.
- 多源最短路径:Floyd算法.
- 问题:使用上述算法计算出来的最短路径长度,一般属于直线距离,如果用于计算城市间的最短距离,则不符合实际情况。
- 城市间的各种联系往往基于路网发生,因此我们需要使用路网的距离作为两个城市间的实际距离。
ArcGIS中提供了计算路网距离的方法,现以湖北省为例,使用ArcGIS计算各地级市之间的最短距离。
1. 准备工作
数据准备(以湖北省为例)
- 准备湖北省边界、湖北各个市的边界和地级市驻点数据
- 准备路网数据(国道、省道)
链接:https://pan.baidu.com/s/1GVGuVsl-iEhqN25XiD9eVw 提取码:gi7h
环境
- ArcGIS 10.2
- 激活网络分析模块
- 菜单 >> 自定义 >> 扩展模块 >> 勾选Network Analyst
Customer >> Extensions >> Network Analyst
- 菜单 >> 自定义 >> 扩展模块 >> 勾选Network Analyst
- 加载网络分析工具条
- 工具栏空白处 >> 右键 >> 选择: Network Analyst
- 工具栏空白处 >> 右键 >> 选择: Network Analyst
2. 步骤
2.1 截取湖北省数据
2.1.1 新建地图(多源最短路径-湖北)
2.1.2 内容列表窗口>>图层>>右键>>添加数据, 再全国行政区划分中导入省和市的矢量图
2.1.3 对图层中的省点击右键>>打开属性表
全国各省列表, 名字乱码了, 按照邮编找>> 选择420000这一行(湖北省)
2.1.4 导出湖北省的边界
右键点击"省"图层>>数据>>导出数据
导出: 所选要素 >> 输出要素类: 找到保存位置, shapfile类型文件, 命名 >> 确定
将导出数据添加道图层中: 是 >> 删除原省份图层
2.1.5 导出地级市边界
"市"图层 >> 右键 >> 打开属性表 >> 选择多行(邮编420000,第三列)
“市"图层 >> 右键 >> 数据 >> 导出数据 >> 保存到"湖北省-市界.shp"中 >> 在图层中显示 >> 删除原"市图层”
2.2 创建网络数据集
2.2.1 创建文件数据库
- 界面右侧 >> 目录工具栏 >> 右键 >> 新建 >> 文件夹 >> 文件数据库
- 文件数据库 >> 右键 >> 新建 >> 文件地理数据数据 >> 湖北-交通
- 湖北-交通.gdb >> 右键 >> 新建 >> 要素数据集 >> 名称: 路网 >> 坐标系: WGS 1984 >> … >> 完成
2.2.2 导入要素类
路网 >> 右键 >> 导入 >> 要素类(单个) >> 输入要素: 选择湖北省国道中的.shp文件 >> 输出要素类: 国道 >> 确定
再导入省道的数据 >> 同意添加道图层
2.2.3 创建网络数据集
路网 >> 右键 >> 新建 >> 网络数据集(N) >> 命名: 网络_ND >> 勾选国道和省道 >>> 下一步 >>> 完成 >> 立即构建 >> 添加到地图
2.3 计算城市间网络距离
2.3.1 打开网络分析窗口
2.3.2 创建OD成本矩阵
左侧显示网络分析窗口
2.3.3 添加起始点和目的地点
a) 在内容列表中加入地级市的驻点, 作为参考确定起始点, 仅留下"地级市"和"路网_ND"两个图层.
b) 在网络分析工具栏上选择创建网络位置工具
c) 网络分析窗口中选择起始点, 用鼠标点击地级市的位置, 添加18个点
d) 给这18个点矫正位置, 并重新命名
内容列表 >> “地级市"图层 >> 右键 >> 打开属性表
选择第一行, 图层上相应的点会高亮
在网络分析工具栏上点击"选择/移动网络位置"按钮
选择图层上刚才高亮显示的城市点, 在网络分析窗口中的起始点列表会高亮显示
双击修改其名字为"鄂州市” >> 确定
右键点击鄂州市 >> 缩放至所选要素
找到该点所在位置 >> 选择该点 >> 按住键盘上的"1" >> 将其托到附近的线上
完成18个地级市的起始点创建
e) 增加目的地, 我们要计算的是多源最短路径, 所以起始点也是终点, 将上面的18个点全选, 按住ctrl拖到目的地点中, 增加18个目的地点.
2.3.4 生成OD 成本矩阵
点击网络分析工具栏中的求解
会生成18*18 = 324条最短路径的线
这显然不是我们想要的表现形式. 我们先在内容列表上把OD成本矩阵的图层取消, 下一步我们进行OD成本矩阵的可视化展示.
2.3.5 导出OD成本矩阵
- 打开ArcToolbox
选择里面的转换工具>> Excel >> 表转Excel
在输入表的下拉列表中选择OD成本矩阵中的线 >> 选择输出文件的路径和名字>> 点击确定
期中 Tota_长度, 为两个城市间最短路径的长度(单位: 米).
2.4 可视化
2.4.1 生成城市点对
想要画出路径图, 需要知道路径的起点和终点
- 导出路径的起点, 使用要素折点转点工具, ArcToolbox >> 数据管理工具 >> 要素 >> 要素折点转点工具.
选取输入要素下拉列表中OD成本矩阵下的"线" >> 点类型选择START >> 确定
- 导出路径的终点
选取输入要素下拉列表中OD成本矩阵下的"线" >> 点类型选择END >> 确定
内容中增加了如下内容
2.4.2 新建路径
- 选择网络分析中的新建路径
网络分析窗口中增加了路径窗口
- 增加停靠点
右键点击停靠点 >> 加载位置
增加起点: 加载自下拉列表中选择,刚才添加的START的要素 >> name字段设为空 >> RouteName字段设为 name
增加终点: 加载自下拉列表中选择,刚才添加的END的要素 >> name字段设为空 >> RouteName字段设为 name
增加了324条路径的648个停靠点
2.4.3 生成路径
点击Network工具栏上的求解.生成路径
生成并显示了324条最短路径
3 收尾
加上省界和市界的图层, 生成最终效果图