ArcGIS网络分析扩展模块

参考文献:《ArcGIS Desktop HelpAnd ArcGIS Developer Help

基本过程:(目前已有的道路数据在每个交叉点处都已打断)

1)创建网络数据集:熟悉数据源以及拓扑关系建立等

(建立什么样的拓扑关系?需要根据需求建立具体的拓扑关系)

2)进行网络分析:熟悉工具

一、网络分析扩展模块概述

功用:创建网络数据集并基于网络数据集进行各种网络分析。

组成:

(1)创建网络数据集的向导(在ArcCatalog中)

(2)网络分析窗口(在ArcMap中)

(3)网络分析工具条(在ArcMap中)

(4)ArcToolbox中的大量Geoprocessing工具。

创建网络数据集向导可以指导你如何在GDB的要素集中设置网络数据集,也可以使用shapefile数据来设置网络数据集。在这个向导中,可以指定每个要素类在网络中作扮演的角色,比如谁是源头,规定网络中的连通性,识别网络的属性等。

网络分析窗口用来管理分析的输入数据和分析结果。它可以显示诸如barriers,stops和routes等对象。

网络分析工具条是一系列菜单和按钮的集合,可以用来添加和修改网络地址,生成方向,识别网络要素,创建网络以及执行基于网络数据集的各种分析

网络分析扩展模块也可以创建和使用ArcMap中的图层,包括网络数据集图层和网络分析图层。

网络数据集图层可以进行基于网络数据集的显示和查询。

网络分析图层是由网络分析操作创建的。可以用于后续的分析中,在ArcMap用户界面和Geoprocessing Framework中都可以使用。也可以保存为一个永久图层。

二、两种网络的介绍和对比

网络是由一系列相互连接的点和线所组成的系统。例如,连接各个城市的高速公路,相互联通的城市街道,连接各家各户的排给水网络等。

(处理对象:点和线)

网络元素的连通性是网络的分析的基础,另外,相互联通的网络元素本身的属性也可以控制网络的流通。(关键因素:连通性和属性)

在GIS中,我们使用的主要是以下两种网络模型:(我们使用交通网络)

(1)交通网络(Transportation network)

(2)公共设施网络(Utility network)(使用NetworkAnalysis Library)
交通网络:交通网络是没有方向的网络,用网络数据集来建模
公共设施网络:公共设施网络是具有方向的网络,由几何网络来实现

三、网络数据集的相关概念

(交通网络建模用到)

1、组成

网络数据集由简单要素类(点和线)和转弯(Turns)构成。

网络数据集由网络元素构成。网络元素主要有以下三种:边线(edge)、交汇点(junction)和转弯(turn)。边线和交汇点相互连接,构成介质在网络中的流通路径,是网络中的基本结构。而转弯负责纪录介质在两个或多个边线中运动时的方向信息。

2、网络数据源

参与创建网络数据集的一共有三种数据源:边线数据源、交汇点数据源和转弯数据源。线要素类可以作为边线数据源,点要素类可以作为交汇点数据源,而转弯数据源要用专门的转弯要素类。它可以对网络中可能的流通方向进行建模。

3、连通性

网络数据集的连通性是基于线的端点、节点和交汇点的几何重叠以及作为网络数据集的属性之一的连通规则。

4、连通组

ArcGIS网络分析中的连通性是从定义连通组开始的。每一个边线数据源只能指定为到一个连通组中,而交汇点则可以指定到一个或多个连通组中。在不同连通组中的边线只能够通过被指定到两个或多个连通组中的交汇点来连接。连通组可以用来对多模交通系统进行建模。(总结:线只能在一个连通组内,而点可以在不同的连通组内,因此线之间通过点来连接)

    1)同以连通组内边线的连接:两种方式:

         A、设置为端点连通,如立交桥

(那怎么办???)
    2)不同连通组内边线的连接:通过交汇点来连接,如道路和地铁通过地铁站来连接

5、网络数据集中的转弯

转弯可以在任意边线相连通的交汇点处创建,转弯要素类是一种定制的线要素类。

如果不在网络中,转弯要素类没有任何意义。要使用它,就必须把它加入到网络数据集中。要把转弯要素类加入到网络数据集中,它必须要和其它数据源在同一个要素集内。如果使用shapefile数据,则必须在同一个文件夹中(shapefile工作空间),并且要使用相同的空间参考。网络数据集允许使用多边线转弯。转弯要素类不参与连通组,也没有高程字段。但可以在字段计算器中使用用户定义的字段,方法和其它数据源字段类似。
      创建转弯要素类时可以指定支持的最大边线数量。一个转弯最少有两个边线,最多可支持20条边线。缺省的最大边线的数量为5。

四、网络分析的类型

1、查找最佳路线

(查找地图上两点间的最短或最优路径)
      ArcGIS网络分析可以查找两点之间的最佳路线以及遍历多个点的最佳路线。目标点可以通过交互式的在屏幕上设点,通过地址输入或利用已有的点数据的方式来指定。最佳路线也可以根据用户指定的点的顺序来计算。

2、查找最近的设施

(查找离参保人员最近的参保医院或药店或医保服务网点)
      查找离交通事故发生地最近的医院,离犯罪现场最近的巡逻车,离顾客最近的商场,等等,这些都是查找最近设施的例子。当查找最近设施时,可以指定查找的设施个数或者查找方向。一旦找到最近的设施,就可以显示出它的路线,返回每条路线的通行成本,并显示到每个设施的方向。
    另外,网络分析还可以进行其他类型的分析,比如OD成本矩阵,查找服务区域等等。
    不管进行什么类型的分析,他们都会遵循一个相似的工作流程:

3、创建分析图层

网络分析图层是ArcMap中的一种复杂的图层,它可以用来存储输入数据、参数以及分析的结果。
    网络分析图层一共有四种:路经分析图层、最邻近设施分析图层、服务区域分析图层(医保的服务半径)和OD成本矩阵分析图层。

4、添加网络位置

网络位置是指那些在网络分析过程中用到的输入数据,例如断点和障碍。

5、设置分析参数

网络分析中所使用参数包括成本、限制、U型转弯策略、输出的数据类型以及用于查找网络位置的参数。另外,每种分析还会有各自所特有的参数。这些参数都是在分析图层的对话框中设置。(成本应为路程或所花时间)

6、执行分析并显示结果

当创建了分析图层、加入了网络位置、也设置了分析参数后,就可以进行分析并生成分析结果。这些结果也是网络分析图层的一部分。

五、网络分析帮助中的几个例子分析

例子数据路径:D:\arcgis\ArcTutor\Network_Analyst\

1、创建一个基于shape文件的网络分析数据集

(所有交叉点都被打断):
1)属性字段分析

L_F_ADD、L_T_ADD、R_F_ADD、R_T_ADD:应该是左起、左迄、右起、右迄门牌号。(目前我们的数据有这些值)

CFCC:未知

PREFIX、PRE_TYPE、NAME、TYPE、SUFFIX、Full_Name:前缀、后缀、类型、名称、简称等属性字段

ZIPL、ZIPR:应该是左多边形、右多边形字段

State_Fips、State_Abbr:未知

City1、City2:应该是道路穿过的两个城市(应该不需要)

Meters、FT_Minutes、TF_Minutes、Oneway:在建立网络数据集的网络属性需要用到的,应该是路程、花费时间、单行道等概念(也许用户的时间半径应该从这里入手)

ShapeID:道路要素的ID值

FNode、TNode:应该开始节点号和终止节点号

DISP_CODE、EDGE_ID:未知

F_ZLEV、T_ZLEV:建立网络数据集时用到的,起始Z值和终止Z值(连通性)

2)网络数据集建立过程

开始:右击shape数据 ——> New Network Dataset

连通性设置:网络连通性的设置:默认情况下,把所有数据源放在一个连通组里,并指派为端点连通方式。早期的ArcIGIS版本支持使用Z-elevation值来设置连通性,每个要素的开始端点和终止端点设置两个Z值,如果线要素有相同的Z值则视为可连通的。这种连通性可修改前面设置的连通性。

转弯(turns):早期的ArcGIS版本使用turn表,然后将其转换为turn features,从而在网络要素集中使用(在练习2里面用到)。默认情况下使用Global Turns,它规定左转弯时要有15s的延迟。应用这个的好处是不用建立再对转弯要素建立自己的规则。

网络属性(Network Analyst:用来控制导航的一些属性,例如电阻、单行道等。ArcGIS网络分析自动分析shapefile数据并且寻找类似于Meters、Minutes(FT_Minutes和TF_Minutes)、Oneway的属性字段,并自动创建相应的网络属性、指派各自的属性。如果涉及到行驶方向则需要设置这些属性。

生成的Streets_ND自动添加了Oneway、Minutes、Meters属性。

2、创建一个基于Geodatabase的网络分析数据集

Exercise2包含一个RoadNetwork数据集,其中有Streets和ParisTurns两个图层。
1)属性字段分析

PersonalGeodatabase的要素集RoadNetwork里有两个线要素Paristurns、Streets。Streets的字段同shapefile中的相似,但是没有L_F_ADD、L_T_ADD、R_F_ADD、R_T_ADD字段。

2)网络数据集建立过程

开始:右击要素集RoadNetwork ——> New ——> Network Dataset

连通性设置:不同的道路等级可设置不同的连通性,如Street数据分为三个等级,其中Highways和Major Roads为端点连通,而Local Streets为任意节点连通。Elevation字段设置连通性是ArcGIS早期版本的功能(如在桥梁和隧道的例子),ArcGIS网络分析支持这种连通模型。

转弯(turns):选中转弯数据集进行配置(ParisTurns)。三个属性字段值Meters、Minutes(FT_Minutes和TF_Minutes)、Oneway将被自动加入。另外可自己加入限制要素(Restriction)。

设置行驶方向(directions):使用数据的某个属性来设置(如使用街道的全名)

3、创建一个基于一个要素类中的多个要素的网络数据集

Exercise3包含一个Multimodal_Network数据集,其中有Metro_Entrances(地铁入口)、Metro_Lines(地铁线)、Metro_Stations(地铁站)、Streets(街道)、Transfer_Stations(地铁站之间的转乘线)和Transfer_Street_Station(地铁站和地铁入口之间的连线)六个图层。
1)属性字段分析

2)网络数据集建立过程

开始:右击要素集Multimodal_Network ——> New ——> Network Dataset

连通性设置:建立两个连通组,一个表达地铁系列,一个表达街道系列,地铁口(Metro_Entrances)为两个连通组的转换点。街道是端点(endpoint)连通,而地铁口与街道的顶点一致(vertex),因此,设置地铁口的连通政策(Connectivity Policy)为Override,以此来覆盖街道的endpoint连通。

转弯(turns):默认有三个属性,虽然我们的原始数据中没有turns要素集,但为了在后面的过程中可将turns信息加到已有的网络数据集中,在这里我们不能越过这一步。默认属性Meters、Minutes(FT_Minutes和TF_Minutes)、Oneway。在这里有不同的时间属性,对于汽车来说,有一个叫做驾驶时间(Drivetime)属性,对于步行者来说,有一个步行时间(Pedestrian_Time)属性。

ArcGIS分析模块将自动检查所有数据源,从而为Meters属性自动指派值。驾驶时间(Drivetime)找到的铁路要素等字段都有错误,那是因此驾车时间只是针对于街道来说的,因此将这些字段值设为-1,类似于电阻。

新增加一个步行时间(Pedestrian_Time)字段。

共四个属性,Meters、Drivetime、Pedestrian_Time和Oneway。

4、使用网络数据集寻找最佳路径

Exercise4使用Exercise1中所创建的网络数据集建立,即数据存取采用文件格式。

寻找最佳路径过程如下:

1)创建路径分析图层

(网络分析图层是由网络分析操作创建的。可以用于后续的分析中,在ArcMap用户界面和Geoprocessing Framework中都可以使用。也可以保存为一个永久图层。)

首先将网络分析(Network Analyst)的工具条调出来,

Network Analyst ——> New Route,系统将自动创建三个新图层:Stops(站点)、Routes(路径)、Barriers(障碍)。

i)添加一个站点(stop

站点之间创建最佳路径。选中stop,点击工具条上的Create Network Location Tool。

ii)设置分析参数

路径基于时间、U-turns可以在任何地方、单行道的限制。

在Network Analyst Window上点击属性框 ——> Analyst Settings

iii)运行程序计算最佳路径

在工具条上点击Solve按钮。

iiii)增加障碍物

Window ——>magnifier(放大境,和ERDAS里的放大镜工具类似,放大了400倍)。

选中Barriers,点击工具条上的Create Network Location Tool。

5、计算服务区域(service area)并创建起始-终点花费矩阵(Origin-Destination Cost Matrix)

那些点最终是以什么方式连接起来的?不是直线,是某种特殊的曲线?

这个练习我们可以创建一系列的面,这些面表达了在一定的时间内从一个设备(facilities)能到达的距离(距离可以是任何同最短路径中涉及到的impedance)值。这个面我们称作服务区域(service area polygons)。我们可以计算出在巴黎的六个大卖场的3、5或10分钟的服务区域,而且也可以得出在这些服务区域里有多少家商店。

另外,也可以创建一个起始-终点花费矩阵,这个矩阵从记录了在10分钟内从大卖场发送到所有商店货物的时间。

1)创建服务区域分析图层(Service Area analysis layer):new Service area

2)增加设备(facilities):service area polygons将被生成

3)设置分析参数(parameters for the analysis

Layer Properties中的Analysis Settings

Impedance:Drivetime(Minutes),类似于计算最短路径中的含义;

Default Breaks:3 5 10,设置的服务半径的值;

Direction:出行方向,选择Away From Facility(远离Facility),

不选择Towards Facility(到达Facility);

Allow U-Turns:选择Nowhere,不允许有U型转弯;

Restrictions:是否选择单行道;

Ignore Invalid Locations:是否忽略无效的位置(选择是)。

Layer Properties中的Polygon Generation

确保Generate Polygons被选中;

Polygon Type:Generalized是快速分析结果,需要时间比较短,

            Detailed polygons更加精确,但是需要时间比较长;

Excluded Sources:排除在外的数据源;

Multiple Facilities Options:在计算多个Facilities的服务区域时,有两种选择,Separate…表示不重叠服务区域,Merge表示重叠的服务区域合并;

Overlap Type:服务区域叠加的类型,Rings代表大的服务区域不包含小的服务区域,Disks代表大的服务区域包含小服务区域。

Layer Properties中的line Generation可以选择生成线(Generate line)

4)建立服务区域(compute the Service Area):Solve

    之后可以修改facilities的位置,重新solve,直到符合自己的要求为止,这也为定点一个新的facilities(例如医院)起到重要的作用。

5)可以指定生成的面与另外的点要素之间(例如某个管理单位与被管理机构之间,商店与其送货的大卖场之间)的关系

右击目标点要素,选择Joins and Relates——>Join,在弹出的对话框中设定其与生成的服务面之间的关系,最后生成的新的点要素记录了点是否在面里的属性字段。在ArcMap里也可以将生成的服务区面(Service Area)导出成面状要素,面状要素的属性字段主要记录了它所代表的缓冲区的范围值等。

6)可以建立新的OD Cost Matrix分析图层

这个矩阵可以查询出每个大卖场在十分钟的开车时间里能够到达的商店,而且也可以查到大卖场到每个商店的total drive time。

Network Analyst ——> New OD Cost Matrix,其过程同最短路径分析以及服务区域的建立过程相似,ArcMap会自动生成OD Cost Matrix矩阵。

Adding origins将前面新的Facilities设为出发源头;

Adding destinations将商店(stores)要素设为目的的;

设置分析参数:Layer Properties ——> Analysis Settings,包括以下几个项目:

Impedance:计算项,意义同计算最短路径和服务区域;

Default Cutoff:意义同Default Breaks,例如设置10,表示在10分钟以内车程的;

Destinations To:目标到达的限制,可选择ALL;

Allow U-Turns:是否允许U型转弯;

Output Shape Type:输出路线的线形;

Ignore Invalid Locations:忽略无效定位;

Oneway:是否有单行道的限制。

生成OD矩阵:Solve。生成的主要是从originsdestinations线要素

为每个大卖场分配(allocation)商店:基于OD矩阵,可以为每个大卖场分配商店。生成的线要素的属性字段记录了每个卖场到10分钟之内到达的每个商店的车程时间值,主要通过OriginID和DestinationID来区分,另外对于同一个Origin,可能有不同的Destination,可以通过DestinationRank字段来看出Origin到达不同Destination所花费时间次序。

六、网络分析(NetworkAnalyst)开发学习

网络分析包含两个库,一个是NetworkAnalysis,另外一个是NetworkAnalyst,其中NetworkAnalysis应该是用于utility(市政网络,例如水网、电网,带有方向性)的(The library is meant to work with utility networks such as gas lines, electricity supply lines, and so on.)。因此我们主要学习NetworkAnalyst。

1、NetworkAnalyst库

NetworkAnalyst主要分为以下几个library subsystems:The Analysis LayerLocating and LoadingSolversTraversal ResultsDirections

1The Analysis Layer

The Analysis Layer包含以下几个主要对象:NALayer, NAContext, NAClass, NALocationObject, and NAClassDefinition。

NALayer是一个真实的图层,能够通过ArcMap,ArcCatalog或其他服务访问的图层。通过Solver的方法来创建,INASolver::CreateLayerNALayer能够通过Context属性得到NAContext。

NAContext对象是此子集中最重要的对象,它是任何一个动作提取信息的桥梁。NAContext由Solver的INASolver::CreateContext方法生成,并被绑定到网络数据集上(INADataset::Bind),该对象有三个主要的接口INAContext, INAContextEdit, and INAContextEvents。

INAContext接口使得你可以进入分析工作的其他重要部分,如NAClassesNASolver, NALocator, NetworkDataset, and NATraversalResult.

INAContextEdit接口控制了NAContext的初始化工作和编辑NAClasses的处理方法。

INAContextEvents接口监听当NAContext或者NATraversalResult发生的变化。

arcgis api for javascript 地图怎么设置城市为中文_ArcGIS

 

NAClass是一个要素类,它存储了类似于站点(stops)、障碍(barriers)、突发事故(incidents)、路径(routes)、cfpaths的要素。NAClass的工作空间就是NAContextNAClass并没有一个固定的存储数据源,因此也被称作“缓存要素类(in-memory)”(临时生成,记录其详细的属性数据,通过NAClassFieldMap对象来获得相应的属性字段)。但是如果需要的话,它也可以保存在磁盘上。可以通过以下两种方式访问NAClass:

INALayer::LayerByNAClassName(“Stops”)::FeatureClass或

INAContext::NAClasses::ItemByName(“Stops”).

NAClass提供NALocationObjects和NALocationFeatures,INALocationObject接口可以明确NAClass在网络中的位置。

NAClassDefinition定义了对于扩展有帮助的类的附加信息。当solver创建NAContext和NAClasses时,NAClassDefinition被初始化。可通过INAClass:: ClassDefinition来访问。它有可以决定solver要求的最大/最小行数的方法,它也可以每个字段是否可以输入、输出、不可见、不可编辑等。

除非我们自定义solver(可以定制吗?可以选择不同的算法?),否则不用修改NAClassDefinition属性除了CandidateFieldNames

 

arcgis api for javascript 地图怎么设置城市为中文_数据集_02

arcgis api for javascript 地图怎么设置城市为中文_数据集_03

 

 

2Locating and Loading

此子系统表达了用来加载NAClass(如站点、障碍等)的对象,它的本质是取出要素,通过检查要素在网络数据集中的side和position来确定要素在网络中的位置,并且通过这种新信息在NAClass中创建新要素。

完成locating的对象包括NALocator、NALocatorFeatureAgent、NALocatorLocationFieldsAgent,将要素导入一个NAClass的对象包括一个NALocator(NAClassLoader、NAClassFieldMap)。

如果你有自己的locating要素的方法,那就意味着你能够在NAClass里插入行,就不需要使用这个子系统里的对象。

NALocation对象确定要素在网络上的位置:

SourceID是要素类在网络数据集上的SourceID

SourceOID是定位要素的ObjectID

Side是左边或右边

SourcePosition确定了网络位置离source feature的距离。

默认的NALocator是当solver创建NAContext时,由NAContext创建的,可以通过设置INAContextEdit接口的NALocator属性来改变默认的locator。

NALocator由很多locator agents(代理),NALocator的任务是反复浏览agents并且决定那个agent返回的是最佳位置。大多数情况下,agents是NALocatorFeatureAgents。

如果数据源的要素类中已经有了定位的字段,并且你希望使用这些替代在网络中生成的位置,则可以使用NALocatorLocationFieldsAgent对象。

NAClassLoader和NAClassFieldMap对象可以一起使用,并通过NALoactor来将INALocationObjects从输入要素类加载到NAClass中。

arcgis api for javascript 地图怎么设置城市为中文_数据集_04

arcgis api for javascript 地图怎么设置城市为中文_ArcGIS_05

arcgis api for javascript 地图怎么设置城市为中文_网络分析_06

 

 

 

3Solvers

Solver用来描述一个对象并且执行真正的网络分析,在9.1版本里有以下四个solvers:

NARouteSolver:在多个站点之间寻找最佳路径;

NAClosestFacilitySolver:寻找事故点和设施间的最佳路径;

NAServiceAreaSolver:服务区域(我理解)

NAODCostMatrixSolver:在起点和终点之间寻找最小的花费

Solver有很多特殊的属性,例如cutoff、impedance attribute(路程或时间)等,配置这些属性以便决定分析如何执行。

在将来的版本中,ESRI将发现其他附加的solvers。我们也可以写自己的solver,但是那是一项耗值(non-trivial)的工作。

Solver的工作就是判断分析工作需要的东西(如需要什么类型的网络位置,需要输入什么属性信息等),solver需要创建NAContext和NALayer,并且如果它们的属性发生变化,也需要solver来更新 。通常的模式就是创建一个新的分析时候需要调用INASolver::CreateContext, INADataset::Bind, and then INASolver::CreateLayer。

另外,创建一个保存执行结果(INAResult)的对象也是solver的工作。

4Traversal(Z形攀登) Results

ESRI的四个solvers均输出一个ANTraversalResult对象,它记录了分析的结果。最基本的情况Traversal result可以看作记录了所有的连接信息的下面三个要素类。

Edges:包含在分析中用到的每个边(edge Traversed),有明确FromJunction和ToJunction的字段;

Junctions:包含每个junction和输入网络位置(input network location traversed);

Turns:包含每个转弯(turn Traversed)。

这三个要素所返回特殊的要素类,除了执行普通的Feature接口外,也可以执行INATraversalResultElement接口。

INAResult接口有得到输出属性和输出context的方法。

在NATraversalResult里有一个间接的标准,由于这个标准,我们必须使用INATraversalResult接口中的方法去查找不同数据源(traversal result和相应的geodatabase或者NAClass source)形成的地图。

INATraversalResultQuery用来从一个traversal result element traverse到另一traversal result element。可以通过SearchConnected方法查找与某个TraversalResultElement连接的NATraversalResultElement,或者,既然它们都是feature class,我们可以得到某一类型(例如edges)的所有traversal result的feature class,并且仅仅打开一个search cursor。

NATraversalResult并不存储在NAContext里,如果有需要可以将其存储在外部的数据结构里面。

5Directions

    Directions被模拟为在NAContext中的NAAgent,它们通过读取NATraversalResults去构建drivetime directions。

 

2、Geodatabase库中的Network Dataset Object Model

略,详细查看D:\Program Files\ArcGIS\DeveloperKit\Diagrams\Engine\ GeoDatabaseObjectModel.pdf中的最后一页。

七、网络数据集的概念

网络数据集合成一个可以表达复杂场景的连通模型,例如多模态(多个数据源,如公路、铁路、地铁等)的交通模型。它也拥有丰富的属性模型,用此可以帮助用户模拟网络中的impedances(阻抗)、restrictions(约束,限制)和hierarchy(层次,等级)。  

Shapefile文件数据建立的网络数据集不支持多模态的模型。

网络数据集由网络元素构成,网络元素是建立网络数据集时由数据源生成的。数据源的Geometry属性用来建立连通性。另外,网络元素包含能够控制网络中流通的属性。网络元素包含edges、junctions、turns。

Edges和junctions是网络中必须的元素,网络的连通性处理Edges和junctions之间的连接关系。Turns是存储特殊转弯的可选元素,例如,从某个边到另一个边的左转弯是被限制的。

Edges和junctions正确创建对于网络分析的结果起着至关重要的作用。

1、网络数据源

2、连通性(Connectivity)

(1)连通组

连接多模态模型,例如将公路和地铁设在不同的连通组内,通过地铁站来将其连接。

(2)在一个连通组内连接edges

两种连通策略(policy),endpoint和any vertex

在创建网络数据集的过程中,如果选择连通策略为any vertex,则生成的网络数据集在道路交叉路口都被自动打断,生成相应的Edges和junctions。

但是如果两条线没有共同的endpoints或vertices,则不能自动生成相应的节点。这种情况下,可通过建立拓扑关系并编辑来解决。

(3)通过junctions在不同的连通组内连接edges

例如,公交站点的位置可能不在道路的endpoints或者vertices上,因此需要设置公交站点的连通策略为Override,用此将前面的连通策略覆盖掉。

3、网络属性

网络属性用来控制在网络中的travel。例如穿过某段道路所花时间、某些街道限制某种车辆、某条道路限制的行驶速度、单行线等。主要包括Cost(花费)、Descriptors(说明)、Restrictions(限制,约束)、Hierarchy(层次,等级)。

网络属性有四个基本的属性:name、usage type、units、data type。

usage type(使用类型):描述在分析中属性将怎么使用。(在cost, descriptor, restriction, or hierarchy都可识别)。

Cost属性的Units记录了距离或者时间units(例如:centimeters、 meters、 miles、minutes、 seconds)。Descriptors、 hierarchies、and restrictions have unknown units。

Data types可以是Boolean, integer, float, or double类型的。Cost属性不能是Boolean型的,Restrictions通常是Boolean型的,hierarchy通常是integer类型的。

创建网络属性,首先定义属性的名称,它的usage, units, 和data type,然后为每个数据源指派evaluators(运算器)。

(1)Cost

某些属性用来量测模型的阻抗(impedances),例如travel time (drive time, pedestrian time)或者demand(特殊需求,如洒水车浇路),这些属性可沿着edge分派。网络分析中通常有最小花费或者称最优路径分析,通常的情况是寻找fastest route(minimizing travel time)或者shortest route(minimizing distance),因此travel time和distance(meters)也是网络数据集的cost属性。

(2)Descriptors(目前不用)

Descriptors是描述网络或者网络元素特征的一些属性,它不像cost那样可以指派属性。例如一个街道网络中的小路数量、道路的速度限制等都是Descriptors属性。虽然Descriptors属性不能像Cost那样作为一个impedance(阻抗),但是能够使用Descriptors来创建cost属性(例如drive time)。

(3)Restrictions(例如单行道目前没提供这样的数据,但是步行是可以考虑限制的)

Restrictions(限制元素)是在网络分析中的一种特殊元素,被限制的元素不能被穿过(traversed),例如单行线被模拟为限制元素。限制元素为Boolean数据类型。

另外一个例子是某些数据源(道路)是不允许步行通过的(比如说高架),这里可以将这些数据使用No_Pedestrians来限制,在这种情况下,限制被作为最佳路径的参数。

(4)Hierarchy(等级)(道路等级数据有)

Hierarchy是指派给网络元素的顺序或等级。一个street的网络可能有区分洲际公路和本地公路的道路等级。在寻找从一点到另外一点的最短路径过程中,用户可以优先选择或者不选择洲际公路,模型可以通过Hierarchy来模拟这种情况。

在ArcGIS网络分析中,不同类型的Hierarchy被划分为三个层次:primary roads, secondary roads, and local roads,如果我们的网络数据中有更多的类型,则可以在创建数据集的过程中reclassify这些类型,也可以在创建路径(开发)的过程中修改。

在建立带有Hierarchy最短路径分析时候,可以选择使用Hierarchy,也可以不使用exact直接创建exact route。

4、为网络属性指派值(evaluators)

Evaluator为数据源中的每个网络属性指派值。一般情况下,是通过Field evaluator从数据源中的某个字段指派网络属性值。除此之外,也有其他的指派值方式,如constants(常数) field expressions(字段公式)或VBScript。

(1)Field evaluator:字段赋值器,将某个字段的值赋给网络属性

(2)field expressions evaluator:字段公式赋值器,例如对字段的类型做了变换再赋值。

(3)constants evaluator:常数赋值器。

(4)VBScript evaluator:在建立网络数据集的过程中并不赋值,在进行网络分析的过程中动态的赋值,对于网络属性变化比较频繁的情况使用这种方法赋值。

5、转弯(Turns)

    Turns可以在两边相连的任何junction处建立。

    (1)Multiedge turns

(2)U-turns

(3)Properly defined turns:恰当的定义转弯,转弯在使用前必须被定义。

(4)Turn features:ArcGIS网络分析中,Turns被模拟为一个turn feature class,属于ESRI Turn Feature。在网络分析之外,一个turn feature class是无意义的。

(5)Turn attributes:例如转弯需要的时间或者是否限制转弯等。

 

八、编程创建网络数据集

1、创建网络数据集用到的几个重要接口

(1)Geodatabase库中的Network Dataset Object Model(第十三页包含了INetworkDataset等重要接口)

详细查看D:\Program Files\ArcGIS\DeveloperKit\Diagrams\Engine\ GeoDatabaseObjectModel.pdf中的最后一页。

 

(2)IDatasetContainer2接口

首先要通过 IDatasetContainer2::CreateDataset  方法来创建(Creation)Network Datasets。

(3)INetworkBuild接口

Network Datasets在被创建后,需要使用INetworkBuild::BuildNetwork 方法来进行Build.