ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集
前言
似乎除了官方介绍的例子,我还没有在网上见过一篇介绍如何“使用自己的数据”创建“网络数据集”的文章。
有介绍几何网络的,有介绍如何用官方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] 利用自定义基础数据创建网络数据集的更多相关文章
- ArcGIS 网络分析[1] 利用自定义点线数据(shp或数据库)创建网络数据集【小白向】
前言 似乎除了官方介绍的例子,我还没有在网上见过一篇介绍如何“使用自己的数据”创建“网络数据集”的文章. 究其原因,是因为当前的高质量的线数据或保密,或采集困难. 有介绍几何网络的,有介绍如何用官方S ...
- ArcGIS 网络分析[1.2] 利用1.1的线shp创建网络数据集/并简单试验最佳路径
上篇已经创建好了线数据(shp文件格式)链接:点我 这篇将基于此shp线数据创建网络数据集. 在此说明:shp数据的网络数据集仅支持单一线数据,也就是说基于shp文件的网络数据集,只能有一个shp线文 ...
- ArcGIS 网络分析[1.5] 使用点线数据一起创建网络数据集(如何避免孤立点/点与线的连通性组合结果表)
ArcGIS中最基本的三种矢量数据是什么?点线面. 网络中除了路网之外,还会有地物点. 如上图,我们在建立网络数据集的时候,作为实验,当然可以只是公路网.但是在大型的决策任务中,网络数据集就不只是公路 ...
- ArcGIS 网络分析[8.3] 设置IDENetworkDataset的属性及INetworkDataset的对比/创建网络数据集
创建网络数据集就得有各种数据和参数,这篇文章很长,慎入. 网络分析依赖于网络数据集的质量,这句话就在这里得到了验证:复杂.精确定义. 本节目录如下: 1. INetworkDataset与IDENet ...
- ArcGIS 网络分析[8.2] 资料2 使用IDatasetContainer2接口的CreateDataset方法创建网络数据集
上节提及如何使用IDatasetContainer2接口访问到网络数据集,上例可以封装为一个方法. 这节就使用IDatasetContainer2接口(Geodatabase类库)的CreateDat ...
- ArcGIS 网络分析[8.1] 资料1 使用AO打开或创建网络数据集之【打开】
为了创建或打开一个网络数据集,你必须使用NetworkDatasetFDExtension对象(文件地理数据库中的数据集)或NetworkDatasetWorkspaceExtension对象(对于S ...
- ArcGIS 网络分析[1.3] 在个人地理数据库中创建网络数据集/并简单试验最佳路径
上篇使用shp文件创建网络数据集,然而在ArcGIS 9中就支持地理数据库了,数据库的管理更为科学强大. 本篇就使用个人地理数据库进行建立网络数据集,线数据仍然可以是1.1中的线数据,但是我做了一些修 ...
- Arcengine实现创建网络数据集札记(三)
后记 下面给出项目中用到的自定义的封装类. AE许可初始化封装类: public class AELicenseChecker { private static volatile AELicenseC ...
- Arcengine实现创建网络数据集札记(一)
一 引子 网络数据集,GIS空间分析基础的理论和知识,是最短路径分析.连通性分析等其他空间分析技术的数据基础. 以往,网络数据集的研究很少,此次项目开发过程中,对网络数据集以及arcengine创建网 ...
随机推荐
- MySQL入门(上)
1 课程回顾 自定义标签&编码实战 1)自定义标签步骤: 1.1 编写标签处理器类,继承SimpleTagSupport类,覆盖doTag方法 1.2 在WEB-INF目录下建立tld文件,在 ...
- cuda编程学习5——波纹ripple
/共有DIM×DIM个像素,每个像素对应一个线程dim3 blocks(DIM/16,DIM/16);//2维dim3 threads(16,16);//2维kernel<<<blo ...
- JVM中堆内存和栈内存的区别
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间 ...
- 模拟在内存中的数据库DataSet相关的类
这篇连着上一篇DataReader相关类. 下面两段话是在msdn官网摘下来: .NET Framework 数据提供程序是专门为数据操作以及快速.只进.只读访问数据而设计的组件.Conn ...
- Sublime 常用快捷键
Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转到第几行 Ctrl+W:关闭当前打开文件 Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V ...
- vue学习笔记 样式 class style(五)
使用v-bind数据绑定class和style,v-bind:class可以与传统的class属性共存,其中可以用{}设置多个class,根据条件判断的语法是class名:条件,带-的class名需要 ...
- JS调用WebService,发布到IIS,网页提示WebService未定义[已解决]
VS2013中,JS调用WebService,一直运行正常.部署到WindowsServer2008之后,在网页中访问,始终提示网页中有错误,点开之后发现是WebService未定义. 于是上网查解决 ...
- 【2017-04-01】JS字符串的操作、时间日期的操作、函数、事件、动画基础
一.字符串的操作 1.转大写: s.toLowerCase(); 2.转大写: s.toUpperCase(); 3.字符串的截取: s.substr(3,4); -从索引3开始截取,截取4 ...
- MongoDB--在windows下的安装过程及基本配置
这几天在做一个简单的后台博客系统,数据库用到了 MongoDB ,虽说官方的文档比较全,但是对于我一个英语一般的人来说,或多或少在配置的时候出现了一些问题,总结了一下在安装及创建服务的过程 Mongo ...
- MYSQL数据库导入大数据量sql文件失败的解决方案
1.在讨论这个问题之前首先介绍一下什么是"大数据量sql文件". 导出sql文件.选择数据库-----右击选择"转储SQL文件"-----选择"结构和 ...