前言

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

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

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


【软件准备】

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

【数据准备】

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

1. 创建线要素

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

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

命名随意。

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

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

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

2. 线数据的打断

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

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

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

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

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

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

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

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

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

时间 = 路程 / 速度。

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

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

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

【创建网络数据集】

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

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

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

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

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

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

2. 选择打断的线数据

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

然后下一步。

3. 通用转弯

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

就是说直接点下一步

4. 连通性

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

5. 高程

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

6. 【*重要】成本属性

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

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

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

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

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

7. 行驶方向

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

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

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

8. 完成~

完成!

9. 构建网络数据集

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

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

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

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

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

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

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

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

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

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

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

如下图:

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

打点如下:

然后点击工具条上的求解按钮

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

——————

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

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

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

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

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

国际惯例:转载请声明。

ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集的更多相关文章

  1. ArcGIS 网络分析[1] 利用自定义点线数据(shp或数据库)创建网络数据集【小白向】

    前言 似乎除了官方介绍的例子,我还没有在网上见过一篇介绍如何“使用自己的数据”创建“网络数据集”的文章. 究其原因,是因为当前的高质量的线数据或保密,或采集困难. 有介绍几何网络的,有介绍如何用官方S ...

  2. ArcGIS 网络分析[1.2] 利用1.1的线shp创建网络数据集/并简单试验最佳路径

    上篇已经创建好了线数据(shp文件格式)链接:点我 这篇将基于此shp线数据创建网络数据集. 在此说明:shp数据的网络数据集仅支持单一线数据,也就是说基于shp文件的网络数据集,只能有一个shp线文 ...

  3. ArcGIS 网络分析[1.5] 使用点线数据一起创建网络数据集(如何避免孤立点/点与线的连通性组合结果表)

    ArcGIS中最基本的三种矢量数据是什么?点线面. 网络中除了路网之外,还会有地物点. 如上图,我们在建立网络数据集的时候,作为实验,当然可以只是公路网.但是在大型的决策任务中,网络数据集就不只是公路 ...

  4. ArcGIS 网络分析[8.3] 设置IDENetworkDataset的属性及INetworkDataset的对比/创建网络数据集

    创建网络数据集就得有各种数据和参数,这篇文章很长,慎入. 网络分析依赖于网络数据集的质量,这句话就在这里得到了验证:复杂.精确定义. 本节目录如下: 1. INetworkDataset与IDENet ...

  5. ArcGIS 网络分析[8.2] 资料2 使用IDatasetContainer2接口的CreateDataset方法创建网络数据集

    上节提及如何使用IDatasetContainer2接口访问到网络数据集,上例可以封装为一个方法. 这节就使用IDatasetContainer2接口(Geodatabase类库)的CreateDat ...

  6. ArcGIS 网络分析[8.1] 资料1 使用AO打开或创建网络数据集之【打开】

    为了创建或打开一个网络数据集,你必须使用NetworkDatasetFDExtension对象(文件地理数据库中的数据集)或NetworkDatasetWorkspaceExtension对象(对于S ...

  7. ArcGIS 网络分析[1.3] 在个人地理数据库中创建网络数据集/并简单试验最佳路径

    上篇使用shp文件创建网络数据集,然而在ArcGIS 9中就支持地理数据库了,数据库的管理更为科学强大. 本篇就使用个人地理数据库进行建立网络数据集,线数据仍然可以是1.1中的线数据,但是我做了一些修 ...

  8. Arcengine实现创建网络数据集札记(三)

    后记 下面给出项目中用到的自定义的封装类. AE许可初始化封装类: public class AELicenseChecker { private static volatile AELicenseC ...

  9. Arcengine实现创建网络数据集札记(一)

    一 引子 网络数据集,GIS空间分析基础的理论和知识,是最短路径分析.连通性分析等其他空间分析技术的数据基础. 以往,网络数据集的研究很少,此次项目开发过程中,对网络数据集以及arcengine创建网 ...

随机推荐

  1. 使用Topshelf组件构建简单的Windows服务

    很多时候都在讨论是否需要了解一个组件或者一个语言的底层原理这个问题,其实我个人觉得,对于这个问题,每个人都有自己的看法,个人情况不同,选择的方式也就会不同了.我个人觉得无论学习什么,都应该尝试着去了解 ...

  2. Android 7.0(牛轧糖)新特性

    Android 7.0(牛轧糖)新特性 谷歌正式在I/O大会现场详细介绍了有关Android 7.0的大量信息.目前,我们已经知道,新一代Android操作系统将支持无缝升级,能够通过Vulkan A ...

  3. CentOS下查看nginx和php的编译参数

    在已经编译安装好的nginx和php的server上是可以查看之前编译时候的参数的,方法如下. 1.查看nginx的编译参数 # nginx -V nginx version: nginx/1.9.4 ...

  4. 关于ng路由的传参问题(传递一个,多个参数)

    在ng的页面条转传参数的方法,ui-sref,$state Ui-sref:用于html页面进行单页面的跳转 $state:用于js代码中跳转 重点:明确传递方,接受方 [传递单个参数] 对于传递方: ...

  5. 老李分享:《Linux Shell脚本攻略》 要点(三)

    老李分享:<Linux Shell脚本攻略> 要点(三)   1.生产任意大小的文件 [root@localhost dd_test]#[root@localhost dd_test]# ...

  6. Thread 与 Runnable 混合使用测试

    package com.dava; public class TesThread extends Thread implements Runnable { public void run() { Sy ...

  7. sublimeText3插件安装

    1,官方下载sublimeText 3(百度搜索) 2,安装成功后按Ctrl+`调出console 3,然后输入 import urllib.request,os; pf = 'Package Con ...

  8. 模拟退火算法(SA)求解TSP 问题(C语言实现)

    这篇文章是之前写的智能算法(遗传算法(GA).粒子群算法(PSO))的补充.其实代码我老早之前就写完了,今天恰好重新翻到了,就拿出来给大家分享一下,也当是回顾与总结了. 首先介绍一下模拟退火算法(SA ...

  9. Nginx配置同一个域名同时支持http与https两种方式访问

    Nginx配置同一个域名http与https两种方式都可访问,证书是阿里云上免费申请的 server{listen 80;listen 443 ssl;ssl on;server_name 域名;in ...

  10. NodeJs系列一:神奇的nodejs

    nodejs是什么 nodejs能解决什么问题 非阻塞型I/O及事件环机制 什么时候使用nodejs nodejs是什么 Node.js是让Javascript脱离浏览器运行在服务器的一个平台(或者叫 ...