PostgreSQL 地理数据库中的几何网络
几何网络是要素数据集中具有连通性关系的线(边)和点(交汇点)要素类的集合。几何网络用于为电力公用设施管线和下水道系统等基础设施构建模型。
是否随网络创建表取决于网络中是否存在转弯。
ArcGIS for Desktop 中的几何网络
在目录树中,包含几何网络的要素数据集的外观与其展开之前相同。在展开数据集后,几何网络将用以下图标来表示:
在 PostgreSQL 中,地理数据库中几何网络的名称包含数据库名称、几何网络所有者名称和几何网络本身的名称。
例如,如果几何网络 water_net 归用户 gdb 所有,并且位于名为 sdedb 的地理数据库中,则它将以 sdedb.gdb.water_net 的形式列在目录树中。
构建几何网络时,会在要素数据集中创建孤立交汇点要素类。该要素类的名称为所构建网络的名称加 _Junctions。
创建几何网络时遇到的任何错误都将放置在构建错误表中,此表也可在目录中查看。此表的名称为 <网络名称>_builderr。如果在构建 water_net 几何网络时发生了错误,将在地理数据库中创建名为 sdedb.gdb.water_net_builderr 的表。
PostgreSQL 数据库中的几何网络
在 gdb_items 表中对几何网络进行追踪。gdb_itemtypes 表存储用于指示对象是几何网络的值。gdb_itemrelationships 表存储有关网络与其所在要素数据集之间的关联方式的信息。
除了这些表之外,网络还由一组各种不同大小的表构成,它们储存在该几何网络创建者的用户方案中。这些表的大小取决于网络的大小 - 例如,交汇点和边的数量都影响着网络的大小。
每一网络都有 9 个固定表,它们通过以下的命名约定进行标识:N_<ID>_<表描述符>,其中 ID 表示逻辑网络 ID,存储在 gdb_items 表内的网络定义中;例如,N_1_<表描述符>、N_2_<表描述符>。
表的实际数量取决于该网络所包含的元素。对于包含转弯和权重的网络来说,最多可创建 21 个表。
所有这些表都会随网络本身一起进行版本化。
对于任何网络来说,将会始终创建以下各个表:n_<id>_desc、n_<id>_e<#>、n_<id>_estatus、n_<id>_etopo、n_<id>_flodir、n_<id>_jdesc、n_<id>_jstatus、n_<id>_jtopo 和 n_<id>_props。
N_<ID>_* 表可在 DBMS 中进行查看,但不应使用 SQL/第三方应用程序加以更改,否则会对网络造成损坏。
n_<id>_<>
地理数据库中以 N_ 开头的表用来存储网络相关信息。
n_<id>_desc
n_<id>_desc 表用于描述网络的元素。此表为标准化表,其行计数等于几何网络中的交汇点数和边数。
字段类型 |
描述 |
是否允许为空 | |
---|---|---|---|
oid 字段名 |
integer |
几何网络中元素的唯一标识符 |
NOT NULL |
userclassid |
integer |
元素所属要素类的标识符 |
NOT NULL |
userid |
integer |
要素的 ObjectID |
NOT NULL |
usersubid |
integer |
要素中元素的标识符;仅适用于复杂边要素 |
NOT NULL |
elementtype |
smallint |
用来指示网络元素类型的代码;1 = 交汇点,2 = 边 |
NOT NULL |
eid |
integer |
网络元素的唯一元素标识符;仅对网络元素类型是唯一的 |
NOT NULL |
n_<id>_props
n_<id>_props 表包含网络属性(如元素计数和最大 EID 值)的概要描述。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
propertyid |
integer |
网络属性的唯一标识符 |
NOT NULL |
propertyname |
varchar(32) |
属性名称 |
NOT NULL |
propertyvalue |
integer |
属性值 |
NOT NULL |
其余的所有网络表均包含相同的字段名和字段类型。表定义下方介绍了表名称和表追踪内容。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
oid |
integer |
表中 bytea 页的唯一标识符 |
NOT NULL |
pagenumber |
integer |
表中 bytea 页的页码 |
NOT NULL |
pageblob |
bytea |
对表所描述的元素(如边和边状态)进行说明 |
- n_<id>_e<#> - 描述网络边权重;# = 2、3、4 或 5
- n_<id>_edesc - 描述网络中的边
- n_<id>_estatus - 描述每条边的状态,包括删除和禁用状态
- n_<id>_etopo - 描述网络边拓扑或连通性
- n_<id>_flodir - 描述网络流向
- n_<id>_j<#> - 描述网络交汇点权重;# = 0 或 1
- n_<id>_jdesc - 描述网络交汇点
- n_<id>_jstatus - 描述每个网络交汇点的状态,包括删除和禁用状态
- n_<id>_jtopo - 描述交汇点元素与边元素的连通性
- n_<id>_jtopo2 - 描述当有多条边连接到单个交汇点时交汇点元素与边元素的连通性
- n_<id>_t<#>* - 描述每个转弯元素的权重值
- n_<id>_tdefn* - 通过列出构成转弯的边和交汇点来定义每个转弯元素
- n_<id>_tdefn2* - 转弯元素定义的溢出表;例如,多条边构成一个转弯时
- n_<id>_tdesc* - 描述网络中的转弯
- n_<id>_tstatus* - 描述每个网络转弯的状态,包括删除和禁用状态
View a diagram of a geometric network in PostgreSQL.
虚线表示各列之间的隐含关系。
需要使用 Adobe Acrobat Reader 才能打开此文件。
有关构建错误表的描述,请参阅网络构建错误表方案。
XML 工作空间文档中的几何网络
对于几何网络,XML 文档中的数据元素以 GeometricNetwork 类型的形式列出。以下代码示例是从包含几何网络的要素数据集导出的部分 XML 文档:
<DataElement xsi:type="esri:DEGeometricNetwork">
<CatalogPath>/V=sde.DEFAULT/FD=m6db.perrita.Electric/GN=m6db.perrita.Electric_Net</CatalogPath>
<Name>m6db.perrita.Electric_Net</Name>
<DatasetType>esriDTGeometricNetwork</DatasetType>
<DSID>-1</DSID>
<Versioned>false</Versioned>
<CanVersion>true</CanVersion>
<Extent xsi:type="esri:EnvelopeN">
<XMin>0</XMin>
<YMin>0</YMin>
<XMax>6229821.98995209</XMax>
<YMax>2299265.90002099</YMax>
<SpatialReference xsi:type="esri:ProjectedCoordinateSystem">
<WKT>PROJCS["NAD_1983_StatePlane_California_VI_FIPS_0406_Feet", GEOGCS["GCS_North_American_1983", DATUM["D_North_American_1983", SPHEROID["GRS_1980",6378137.0,298.257222101]], PRIMEM["Greenwich",0.0], UNIT["Degree",0.0174532925199433]], PROJECTION["Lambert_Conformal_Conic"], PARAMETER["False_Easting",6561666.666666666], PARAMETER["False_Northing",1640416.666666667], PARAMETER["Central_Meridian",-116.25], PARAMETER["Standard_Parallel_1",32.78333333333333], PARAMETER["Standard_Parallel_2",33.88333333333333], PARAMETER["Latitude_Of_Origin",32.16666666666666], UNIT["Foot_US",0.3048006096012192]]</WKT>
<XOrigin>5937666.642992</XOrigin>
<YOrigin>2016067.94250924</YOrigin>
<XYScale>31249.9999708962</XYScale>
<ZOrigin>0</ZOrigin>
<ZScale>1</ZScale>
<MOrigin>0</MOrigin>
<MScale>1</MScale>
<XYTolerance>6.56166666666667E-04</XYTolerance>
<ZTolerance>0.00002</ZTolerance>
<MTolerance>0.00002</MTolerance>
<HighPrecision>true</HighPrecision>
</SpatialReference>
</Extent>
<SpatialReference xsi:type="esri:ProjectedCoordinateSystem">
<WKT>PROJCS["NAD_1983_StatePlane_California_VI_FIPS_0406_Feet", GEOGCS["GCS_North_American_1983", DATUM["D_North_American_1983", SPHEROID["GRS_1980",6378137.0,298.257222101]], PRIMEM["Greenwich",0.0], UNIT["Degree",0.0174532925199433]], PROJECTION["Lambert_Conformal_Conic"], PARAMETER["False_Easting",6561666.666666666], PARAMETER["False_Northing",1640416.666666667], PARAMETER["Central_Meridian",-116.25], PARAMETER["Standard_Parallel_1",32.78333333333333], PARAMETER["Standard_Parallel_2",33.88333333333333], PARAMETER["Latitude_Of_Origin",32.16666666666666], UNIT["Foot_US",0.3048006096012192]]</WKT>
<XOrigin>5937666.642992</XOrigin>
<YOrigin>2016067.94250924</YOrigin>
<XYScale>31249.9999708962</XYScale>
<ZOrigin>0</ZOrigin>
<ZScale>400000</ZScale>
<MOrigin>0</MOrigin>
<MScale>400000</MScale>
<XYTolerance>6.56166666666667E-04</XYTolerance>
<ZTolerance>0.00002</ZTolerance>
<MTolerance>0.00002</MTolerance>
<HighPrecision>true</HighPrecision>
</SpatialReference>
<NetworkType>esriNTUtilityNetwork</NetworkType>
<OrphanJunctionFeatureClassName>m6db.perrita.Electric_Net_Junctions</OrphanJunctionFeatureClassName>
<FeatureClassNames xsi:type="esri:Names">
<Name>m8db.perrita.Prime</Name>
<Name>m8db.perrita.Secondary</Name>
<Name>m8db.perrita.bridging</Name>
<Name>m8db.perrita.circuit_bkr</Name>
<Name>m8db.perrita.StreetLights</Name>
<Name>m8db.perrita.meters</Name>
<Name>m8db.perrita.switch</Name>
<Name>m8db.perrita.transformers</Name>
<Name>m8db.perrita.Tapwire</Name>
<Name>m8db.perrita.Electric_Net_Junctions</Name>
</FeatureClassNames>
<ConnectivityRules xsi:type="esri:ArrayOfConnectivityRule" />
<NetworkWeights xsi:type="esri:ArrayOfNetWeight">
<NetWeight xsi:type="esri:NetWeight">
<WeightID>0</WeightID>
<WeightName>switch</WeightName>
<WeightType>esriWTInteger</WeightType>
<BitGateSize>0</BitGateSize>
</NetWeight>
</NetworkWeights>
<WeightAssociations xsi:type="esri:ArrayOfNetWeightAssociation">
<NetWeightAssociation xsi:type="esri:NetWeightAssociation">
<WeightID>0</WeightID>
<TableName>m8db.perrita.switch</TableName>
<FieldName>Status</FieldName>
</NetWeightAssociation>
</WeightAssociations>
</DataElement>