PostgreSQL 中的网络数据集
网络数据集是具有连通性关系的要素类的集合。网络数据集可通过三种类型的源创建,即边要素源(如街道中心线)、交汇点要素源(如包含铁路交叉点的点要素类)以及转弯要素源。这些源可用于构建交通网的模型。要使用网络数据集,必须安装 ArcGIS Network Analyst 扩展模块。
ArcGIS for Desktop 中的网络数据集
在目录树中,包含 PostgreSQL 中网络数据集的要素数据集在展开之前,外观没有什么异样。在展开数据集后,网络数据集将用以下图标来表示:
PostgreSQL 地理数据库中网络的名称包含数据库名称、网络所有者的名称及网络本身的名称。
例如,由 m16 地理数据库中的 hbear 所有的网络数据集 road_network_nd 将以 m16.hbear.road_network_nd 形式在目录树中列出。
创建网络数据集时,还会创建系统交汇点要素类。该要素类的名称是在网络数据集的名称后面附加 _Junctions。
PostgreSQL 数据库中的网络数据集
在 gdb_items 表中对网络数据集进行跟踪。gdb_itemtypes 表存储用于指示对象属于网络数据集的值。gdb_itemrelationships 表存储有关网络与其所在要素数据集之间的关联方式的信息。
在拥有该网络数据集的用户的方案中,还将创建下列各表。如下所示:
- n_<id>_desc:n_<id>_desc 表用于描述网络的元素。此表为标准化表,其行计数等于几何网络中的交汇点数、边数和转弯数。
- n_<id>_props:n_<id>_props 表包含网络属性(如元素计数和最大 EID 值)的概要描述。
- n_<id>_topology:此表存储所有拓扑 BLOB 页面。
- n_<id>_edgeweight:此表为边权重值存储所有 BLOB 页面。
- n_<id>_junctionweight:此表为交汇点权重值存储所有 BLOB 页面。
- n_<id>_turnweight:此表为转弯权重值存储所有 BLOB 页面。
- nd_<itemid>_dirtyareas:nd_<itemid>_dirtyareas 表存储有关网络中已编辑空间要素的信息。
- nd_<itemid>_dirtyobjects:nd_<itemid>_dirtyobjects 表存储有关网络数据集中已编辑关系对象的信息。
前六个表的名称中的 ID 为逻辑网络 ID。后两个表中的 itemID 为 gdb_items 表中的 objectid。
表的结构如下:
n_<id>_desc 表包含网络数据集中每个交汇点、边和转弯元素的项。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
oid |
integer |
网络中元素的唯一标识符 |
NOT NULL |
userclassid |
integer |
元素所属要素类的标识符 |
NOT NULL |
userid |
integer |
要素的 ObjectID |
NOT NULL |
usersubid |
integer |
要素中元素的标识符;仅适用于复杂边要素 |
NOT NULL |
elementtype |
smallint |
指示网络元素类型的代码 |
NOT NULL |
eid |
integer |
网络元素的唯一元素标识符;仅对网络元素类型是唯一的 |
NOT NULL |
n_<id>_props 表包含网络属性(如元素计数和最大 EID 值)的概要描述。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
propertyid |
integer |
The unique identifier of the network property |
NOT NULL |
propertyname |
varchar(32) |
The name of the property |
NOT NULL |
propertyvalue |
integer |
The value of the property |
NOT NULL |
nd_<itemid>_dirtyareas 表用于追踪网络数据集中的已编辑空间要素。
字段名 | 字段类型 | 描述 | 是否允许为空 |
---|---|---|---|
objectid | integer | 记录的唯一标识符 | NOT NULL |
isretired | integer | 指示该要素是否仍然用于追踪网络数据集的脏区 | NOT NULL |
dirtyarea | st_geometry geometry | 脏区的多边形几何 |
nd_<itemid>_dirtyobjects 表用于追踪网络数据集中的已编辑关系对象(例如,转弯和历史流量记录)。
字段名 | 字段类型 | 描述 | 是否允许为空 |
---|---|---|---|
objectid | integer | 记录的唯一标识符 | NOT NULL |
classid | integer | gdb_items 表中的脏对象项目的 objectID | NOT NULL |
oid | integer | 脏对象的对象 ID | NOT NULL |
updatetype | smallint | 执行的编辑类型 - 插入 (0)、更新 (1) 或删除 (2) - 从而导致产生脏对象 | NOT NULL |
其余的所有网络表均包含相同的字段名和字段类型。这些表的结构如下:
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
oid |
integer |
表中 bytea 页的唯一标识符 |
NOT NULL |
pagenumber |
integer |
表中 bytea 页的页码 |
NOT NULL |
pageblob |
bytea |
对表所描述的元素(如边和边状态)进行说明 | |
tableid |
integer |
对于 n_<ID>_edgeweight、n_<ID>_turnweight 和 n_<ID>_junctionweight BLOB 表,tableID 为 weightID。对于 n_<ID>_topology BLOB 表,tableID 为原始表在 GeoDatabase\GeoDatabase\Network\Network\TableDefs.h 文件中所定义的拓扑表数组内的位置。 |
NOT NULL |
下图显示的是 PostgreSQL 中的网络数据集:
虚线表示各列之间的隐含关系。
您可将额外的可选表用作网络数据集的一部分,从而根据历史流量速度对行驶时间建模,或者指示出时区内可能影响网络分析的更改。这些表需要在创建网络数据集之前创建,并将存储在您的方案之中(与在创建者的方案中构建网络所基于的要素类相同)。您需要指定表的名称。有关使用这些历史流量表和时区表的详细信息,请参阅本文档的 ArcGIS Network Analyst 扩展模块部分。
XML 工作空间文档中的网络数据集
网络数据集被标记为逻辑网络。以下 XML 文档(通过从 RoadNetwork 数据集中导出而创建)中的摘录。
<LogicalNetworkName>m16.hbear.RoadNetwork_ND</LogicalNetworkName>
<NetworkType>1</NetworkType>
<Buildable>true</Buildable>
<SupportsTurns>true</SupportsTurns>
<Properties xsi:nil="true" />
<UserData xsi:nil="true" />
<EdgeFeatureSources xsi:type="esri:ArrayOfEdgeFeatureSource">
<EdgeFeatureSource xsi:type="esri:EdgeFeatureSource">
<ID>1</ID>
<ClassID>1</ClassID>
<Name>m16.hbear.Streets</Name>
<ElementType>esriNETEdge</ElementType>
<Properties xsi:nil="true" />
<FromElevationFieldName />
<ToElevationFieldName />
<Connectivity xsi:type="esri:PropertySet">
<PropertyArray xsi:type="esri:ArrayOfPropertySetProperty">
<PropertySetProperty xsi:type="esri:PropertySetProperty">
<Key>Version</Key>
<Value xsi:type="xs:short">1</Value>
</PropertySetProperty>
<PropertySetProperty xsi:type="esri:PropertySetProperty">
<Key>UsesSubtypes</Key>
<Value xsi:type="xs:short">0</Value>
</PropertySetProperty>
<PropertySetProperty xsi:type="esri:PropertySetProperty">
<Key>ClassConnectivity</Key>
<Value xsi:type="xs:short">1</Value>
</PropertySetProperty>
<PropertySetProperty xsi:type="esri:PropertySetProperty">
<Key>SubtypeConnCount</Key>
<Value xsi:type="xs:int">0</Value>
</PropertySetProperty>
<PropertySetProperty xsi:type="esri:PropertySetProperty">
<Key>DefaultGroup</Key>
<Value xsi:type="xs:int">1</Value>
</PropertySetProperty>
<PropertySetProperty xsi:type="esri:PropertySetProperty">
<Key>GroupCount</Key>
<Value xsi:type="xs:int">0</Value>
</PropertySetProperty>
</PropertyArray>
</Connectivity>
</EdgeFeatureSource>
</EdgeFeatureSources>
<JunctionFeatureSources xsi:type="esri:ArrayOfJunctionFeatureSource" />
<SystemJunctionSources xsi:type="esri:ArrayOfSystemJunctionSource">
<SystemJunctionSource xsi:type="esri:SystemJunctionSource">
<ID>3</ID>
<ClassID>4</ClassID>
<Name>m16.hbear.RoadNetwork_ND_Junctions</Name>
<ElementType>esriNETJunction</ElementType>
<Properties xsi:nil="true" />
<ElevationFieldName />
</SystemJunctionSource>
</SystemJunctionSources>
<TurnFeatureSources xsi:type="esri:ArrayOfTurnFeatureSource">
<TurnFeatureSource xsi:type="esri:TurnFeatureSource">
<ID>2</ID>
<ClassID>2</ClassID>
<Name>m16.hbear.Turns</Name>
<ElementType>esriNETTurn</ElementType>
<Properties xsi:nil="true" />
</TurnFeatureSource>
</TurnFeatureSources>
<EvaluatedNetworkAttributes xsi:type="esri:ArrayOfEvaluatedNetworkAttribute">
<EvaluatedNetworkAttribute xsi:type="esri:EvaluatedNetworkAttribute">
<ID>1</ID>
<Name>Oneway</Name>
<Units>Unknown</Units>
<DataType>esriNADTBoolean</DataType>
<UsageType>esriNAUTRestriction</UsageType>
<UserData xsi:nil="true" />
<UseByDefault>true</UseByDefault>
<AttributeParameters xsi:type="esri:ArrayOfNetworkAttributeParameter" />
</EvaluatedNetworkAttribute>
</EvaluatedNetworkAttributes>