ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

时间:2024-05-05 10:37:02

前言

似乎除了官方介绍的例子,我还没有在网上见过一篇介绍如何“使用自己的数据”创建“网络数据集”的文章。

有介绍几何网络的,有介绍如何用官方SanFrancisco数据的,也有直接用官方SanFrancisco的网络数据集进行应用的,就是没有告诉我怎么用自己的线数据生成网络数据集并应用的。

我靠网上的文章和官方的例子一点点摸了出来,虽然不是很完整的解说,不过确实能用于最基本的网络分析了。


【软件准备】

本人使用ArcGIS for Desktop 10.4下的ArcMap和ArcCatalog进行数据创建、编辑、分析。10.0-10.3版本均可按此法进行操作。

【数据准备】

无需进行下载任何的数据,我们只需要创建一个线要素。

1. 创建线要素

本例中使用mdb(个人地理数据库)进行分析,使用gdb(文件地理数据库)也一样。注意:shp文件不行。因为网络数据集必须基于要素数据集(FeatureDataset)创建。

创建一个空白的线要素如下:

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

命名随意。

使用WGS84_UTM_49N投影。需要注意的是,线数据必须在要素数据集内,否则无法构建网络数据集。

之后在ArcMap中把比例尺缩放到1:100000(适当调节即可,无所谓),随便画一些交叉的网络形状道路,如下图:

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

绘制6条折线,不添加任何自定义字段。这一步完成。

2. 线数据的打断

使用ArcGIS的工具“要素转线”,即数据管理工具/要素/要素转线。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

输出要素类结果如下,原来6根折线变成了26根。

输出目录在线数据同级别即可:

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

说说这步的必要性:如果不在折线交点打断,交点处是不通的。

这步就是把折线按交点打断,注意是交点不是折点。

3. 打断线数据——添加时间字段

这一步很关键,是创建网络数据集的最最基本的条件,没有时间字段,网络数据集就无法添加成本属性。照做即可:

添加MyTime字段,其他名字也行,双精度。

对这个字段进行字段计算器如下:

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

时间 = 路程 / 速度。

这里,我选步行速度是0.7m每秒。再除以60是获取分钟数(因为在步行中,尺度多为分钟)。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

结果如上,可能不太准确,但是作为演示的就无所谓了。

至此,数据准备完成,我们就用这个打断线数据进行创建网络数据集,最最基本的网络数据集(不是几何网络)。

【创建网络数据集】

1. 打开网络分析模块权限

有的同学可能网络分析不能用,是因为许可没打开,在ArcGIS Catalog和ArcMap菜单栏中打开自定义-扩展模块,把Network Analyst打勾即可。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

2. 为网络数据集写一个名字

我们在Catalog里创建网络数据集,而且只能在Catalog里创建。在ArcMap的Catalog浮动窗口创建也是一样的,反正要在Catalog里创建。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

对要素数据集右键点击,新建-网络数据集。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

第一步当然是填名字,随便。按下一步。

2. 选择打断的线数据

这里选打断线的要素数据集。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

然后下一步。

3. 通用转弯

我们知道道路都有交叉点,交叉点会有转弯的事情发生,但是我们作为最基础的建立我们不需要管那么多,使用官方给的通用转弯即可。

就是说直接点下一步

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

4. 连通性

这里也别管,检查连通性是否是端点,是就确定下一步。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

5. 高程

这一步,因为我们没有高程信息,选择无即可。在真实世界里道路肯定有高程,但是我们作为最小生成网络数据集,我们就不搞了,点无,然后下一步。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

6. 【*重要】成本属性

这步就是关键了,照做即可,这里就要用到上面提到的数据准备中的东西。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

如图,名称虽然说可以随意,但是一般都写为XXXTime,就是步行时间或者旅行时间什么的。要选择成本,单位是分钟,使用双精度。然后确定——还没完,选择刚创建好的DriveTime属性,点击赋值器。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

(如果没有赋值,这个属性会出现黄色三角形感叹号的)

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

道路有时候去和回速度不一样,所以耗时不同。我们假定为理想状态,时间就一样好了。确定。

看,感叹号消失了。然后下一步。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

7. 行驶方向

这一步我也摸不着头脑,有时候能选是,有时候不能,这里就先选否吧。

这一步就是为了网络分析时能用导航功能而准备的。

如果这一步能选是,第八步就不是完成了,而是选择导航的相关字段(选MyTime字段)。

8. 完成~

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

完成!

9. 构建网络数据集

上一步只是创建,还需要构建的。

构建这个功能在ArcToolBox也有,为了不增加复杂性就不说了。

一般上一步按下完成后先创建,然后会提示是否构建,选是即可。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

还会提示是否加入地图(如果是在ArcMap的Catalog浮动窗创建的)

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

我们选否。待会儿自己添加。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

这样就创建完成了,Junctions是交点,不必理会。

此时要素数据集中网络数据集和交点数据就是独立的了,删除原始线数据和打断线都不会有影响(我猜的,大家可以试试——别打我!)

【测试最佳路径求解(邮递员问题)】

直接把网络数据集拖进ArcMap窗口,提示是否把关联的数据添加进来,可以是也可以否,我选否减少视觉负担(如果电脑慢数据量大还是否,自己把点、线数据添加进来的好)

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

找到下图这个工具条,名字好像是Network Analyst。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

如下图操作,创建网络分析路径图层。这步也可以在ArcToolBox里找到对应工具。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

如下图:

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

好像没什么变化,我们开始创建途径点。用工具条上的创建位置工具,在图上打几个点。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

打点如下:

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

然后点击工具条上的求解按钮ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

,就出现了途径点的最短路径。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

——————

网络数据集最基本的创建就完成了,每一步都有详细的讲解和来龙去脉。这个是我钻了好久才懂的,网上的基本都是按照示例数据进行实验,自己创建数据的简直稀罕的要命。

网络分析是一个很强大的功能,其原理是Dijstra算法。

这例子只不过完成了最基本的最佳路径求解,就算旅行推销员问题,还没有添加障碍点,也没有导航功能,更没有丰富的转弯数据、面数据、点数据(其实网络数据集创建的时候可以选择点数据甚至多个点线数据的)、高程字段,完成的只是网络分析的冰山一角。

当然,在ArcEngine底层实现上更为复杂,我觉得还是自己动手用Dij算法自己写的好。在此不赘述。

ArcGIS这个文档做的不是很好,但是应用方面倒是很不错,有了网络数据集,就可以做很多事情,这里只是一个敲门砖,希望大家用好网络数据集,发现GIS与其他行业的千丝万缕的联系。

国际惯例:转载请声明。