Геометрические сети в базе геоданных в PostgreSQL
Геометрические сети представляют собой наборы классов объектов линий (границ) и точек (соединений) в наборе данных объектов, который имеет связующие отношения. Геометрические сети используются для моделирования инфраструктуры, например линий электропередач и канализационных систем.
Создание в сети таблиц зависит от присутствия в сети поворотов.
Геометрические сети в ArcGIS for Desktop
В дереве каталога наборы классов объектов, которые содержат геометрические сети, до раскрытия набора данных выглядят аналогично. После раскрытия набора данных можно увидеть геометрическую сеть, представленную следующим значком:
Имя геометрической сети в базе геоданных в PostgreSQL содержит имя базы данных, имя владельца геометрической сети и имя самой геометрической сети.
Например, геометрическая сеть water_net, принадлежащая пользователю gdb, в базе геоданных sdedb обозначается в дереве Каталога как sdedb.gdb.water_net.
При построении геометрической сети создается независимый класс объектов соединения в наборе классов объектов. Имя этого класса объектов совпадает с именем сети, но имеет суффикс _Junctions.
Любые ошибки, появляющиеся в процессе создания геометрической сети, записываются в таблицу ошибок построения, которую также можно увидеть в Каталоге. Имя этой таблицы <network_name>_builderr. Если при создании геометрической сети water_net имелись ошибки, в базе геоданных будет создана таблица sdedb.gdb.water_net_builderr.
Геометрические сети в базе данных PostgreSQL
Геометрические сети отслеживаются в таблице gdb_items. В таблице gdb_itemtypes хранится значение, указывающее, что объект является геометрической сетью. В таблице gdb_itemrelationships хранится информация об отношениях сети и набора пространственных объектов.
В дополнение к этим таблицам сети создаются из набора таблиц разного размера, который хранится в схеме пользователя, создавшего геометрическую сеть. Размер этих таблиц зависит от размера сети. Например, на размер сети могут повлиять количество соединений и количество границ.
Всего в каждой сети имеется 9 фиксированных таблиц, которые идентифицируются следующими обозначениями: N_<ID>_<table_descriptor>, где ID – логический идентификатор сети, который хранится в определении сетей в таблице gdb_items; например, N_1_<table descriptor>, N_2_<table descriptor>.
Фактическое количество таблиц может быть различным – в зависимости от элементов, содержащихся в сети. Для сети с поворотами и весами может быть создано не более 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, and n_<id>_props.
Таблицы N_<ID>_* можно просматривать в СУБД, но не следует изменять с помощью SQL или сторонних приложений, поскольку это может привести к порче сети.
n_<id>_<>
В таблицах базы геоданных, имя которых начинается с префикса N_, хранится информация о сетях.
n_<id>_desc
Таблица n_<id>_desc описывает элементы сети. Это нормализованная таблица, количество строк которой равно количеству соединений и границ в геометрической сети.
Тип поля |
Описание |
Null? | |
---|---|---|---|
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.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
propertyid |
integer |
Уникальный идентификатор сетевого свойства |
NOT NULL |
propertyname |
varchar(32) |
Имя свойства |
NOT NULL |
propertyvalue |
integer |
Значение свойства |
NOT NULL |
Все остальные таблицы сети содержат аналогичные имена полей и типы. Имена полей таблицы и отслеживаемые этими полями параметры описаны под определениями таблицы.
Имя поля |
Тип поля |
Описание |
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>