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.