我花了相当一部分的时间在介绍原始数据,原因在于原始数据的重要性。很遗憾的是,中国法律的限制,ESRI 没有办法向用户直接提供数据,更要命的,国内数据来源广泛,没有统一的标准,很多公司都有数据的测绘资质,比较大的数据厂商四维、高德等还比较规范,但是很多并非专业的数据公司就很难保证数据的质量。
在这样的情况下,ArcGIS 有再好的算法也无济于事,但是很多用户看的只是结果,他看到的结果不正确,就会认为是ArcGIS 软件的问题。类似的情况有很多,比如一个完整的系统,性能不好,那么很多用户第一想到的就是优化ArcGIS ,而实际上一个系统性能的优化并不是很简单的事情,它跟硬件、平台软件(ArcGIS 、数据库、操作系统等等)、应用软件、网络很多方面有密切的关系,大多时候ArcGIS 以外的因素起着更为重要的作用。
因此,在创建网络数据集,应用ArcGIS 的网络分析之前,要首先确保原始数据的质量。在数据质量确有保证的前提下,我们开始看看如何创建实用的网络数据集。我本来在想是不是要很详细的,step by step 地从头开始,教会大家如何创建网络数据集,仔细思考了下,觉得这并不是很好的方式,我在这里花了很长时间,费了很大力气,效果可能也未必多好。很详细的步骤在ArcGIS 帮助里可以方便找到,我希望可以把自己看帮助过程中觉得重要、以及实际操作过程中发现比较重要的部分与大家分享,至于具体怎么去做,只要大家愿意花时间,相信小菜一碟。
网络数据集里面有四个比较重要的部分网络元素、连通性、属性、方向。属性、方向放到后边说,没有异议。网络元素和连通性,还是先说网络元素。
构成网络数据集的元素包括边线(Edge )、交汇点(Junction )、转向(Turn )。边线和交汇点很简单,对应原始的比如道路图层、站点图层等等。在网络数据集中起着很重要作用的元素是Turn ,它很好地扮演了多面手的角色。总的说来,Turn 有两种角色,一、禁止策略,二、转向成本。大家都知道,现实世界当中的道路是有很多禁止转向的策略的,比如某个路口是禁止左转,或者禁止右转,或者禁止掉头,或者禁止直行,当然不可能四个都有,这些禁止转向的策略可以通过Turn 实现;那,现实世界中,在一个路口,左转,右转,直行,掉头,所耗费的时间成本是不一样的,而要去模拟这些不一样的通行成本,也可以通过Turn 实现。网络数据集中的Turn 包括两个部分,一、Global Turn ,创建网络数据集的时候默认存在,每个路口都会有;二、Turn Feature Class ,有了Turn Feature Class ,就可以很方便维护现实世界当中的禁止策略,当然,转向成本同样可以。以后会有一个专门的章节将Turn 。
连通性,网络数据集的连通性由连通组和连通策略控制。连通组是构建多模式网络的基础,现在城市的交通方式日新月异,我们可以在同一个网络数据集中通过多个连通组来构建多模式的网络。我们知道,在ArcGIS 的环境下,现在空间数据存储的方式主要是shape file 和geodatabase (file 、personal 、sde ),这几种方式都是支持网络数据集的,但是有差别,shape file 只支持一个边线源、不支持多个连通组、因而不支持多模式网络,geodatabase 支持多个边线源、支持多个连通组、因而支持多模式网络。这里提前说下,建议在file geodatabase 或者sde geodatabse 中构建网络数据集,因为file geodatabase 和sde geodatabse 支持空间索引,对于提高网络分析的速度有重要的作用。