|||
阅读该文章你需要理解References中的如何利用路径网络分析工具进行网络路径分析。
如果你想通过Python Scripts 跟ArcGIS进行交互,通过网络数据集,完成查询交通地图中任意两点之间的最短路径 (从点A到点B的最短距离,对应于真实交通网络最短路径) 的任务的话,那你就来对地方了。
ArcGIS是有Ersi公司开发的一款专门用于处理地理数据的集成软件。ArcGIS集成了好几个工具,经常被用到了主要有ArcMap和ArcCatalog。ArcMap主要用于可视化的路网分析,ArcCatalog (以我的理解) 主要是充当数据库的角色。
ArcMap提供了很多地理分析工具,不同的工具都需要特定的输入数据,其中我们将会用到Network Analyst工具需要输入网络数据集。网络数据集 (如右图所示)非常适合于构建运输网。它们通过源要素创建,其中可以包括简单要素(线和点)和转弯要素并存储源要素的连通性。
使用 ArcGIS 网络分析执行分析时,该分析始终在网络数据集中进行。如下图所示,NA提供了平面几何网络的路径分析工具,其实ArcGIS还提供了表面分析的工具 ,可以点击左侧的超链接,可以在ArcGIS的帮助里面找到更加形象的理解。至于我们该如何利用NA进行地图中任意两点之间的最短路径分析流程,可以参考下面的References,我就不一步一步的介绍了。篇幅有限,我们直奔主题,如何通过Python与ArcGIS进行交互进行两点之间的最短路径进行分析。PS : 最好在Windows环境下计算两点之间的最短路径。
为了便于大家理解贴上来的代码,我简单介绍下计算两点之间的最短路径分的步骤
1. 利用你手头上的路网数据通过ArcCatalog生成一份 Network dataset, 保存在你自己设定好的工作路径下
2. 为你生成这份网络数据集新建一个网络分析工具 (Network Analyst), NA 包括了好几个组件,其中的 Stops 和 Route 对于路径分析来说是非常重要的组件。
3. "Stop" 译为停靠点,是网络路径分析工具的分析对象,来自于ArcCatalog中的Shapefile表。在这里就是我们要进行路径分析的GPS点。在NA中,"Stop"会实例化为 "Point"类型的对象,所以我们先要有创建一张包含有两个shape类型的Points。随机初始化两个包含有 #shape, #longitude, #latitude 属性的Points,以后每有一次计算两个GPS点,就更新一次该Shapefile。
4. Route 会保存 NA 的分析结果。需要注意的是,NA会根据你所选择的衡量指标得到不同的最优路径结果。比如,你选择距离作为寻找最优路径的指标的话,NA 会返回距离最短的路径信息,如果你选择时间作为最优路径指标的话,NA 会返回花费时间最短的路径信息。
5. 如果你得到了你需要计算最短路径的两个GPS点,首先更新3中提到的Shapefile,然后将该Shapefile作为输入,传递给 Network Analyst,调用NA对象的 solve 函数就能得到返回结果,单位为 km
python code : http://vdisk.weibo.com/s/DmLYNa9y7Oj8
References:
路径分析网络的网络分析对象 也就对应于你将要查询的两个点
RouteSolverProperties (arcpy.na)
Fusion Center Blogs - Python GIS
Create Shapefile with Python Based on arcpy
Geospatial Python 这个需要翻墙,但是里面的脚本真的非常有用,尤其是对 Shapefile 的讲解
Edit and Create Shapefile in ArcMap
Cursor : Editing shapefile in Python
ArcGIS 10 Desktop Resource Center
Feature Class Geodatabase VS Shape File
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 13:17
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社