Наборы классов объектов в базе геоданных в PostgreSQL
Наборы классов объектов – это объекты, которые позволяют объединять связанные классы объектов таким образом, чтобы их можно было использовать для определенных функций. Вы могли бы использовать классы объектов в набор, если они обладают следующими характеристиками:
- Они хранятся в одной системе координат;
- Они используются в топологии;
- Они используются в классе отношений;
- Они являются частью геометрической сети, набора сетевых данных, набора схематических данных, набора кадастровых данных (parcel fabric) или набора данных рельефа (terrain);
- Они имеют класс связанных с объектом аннотаций.
Используйте следующие ссылки, чтобы узнать о различных компонентах наборов классов объектов в PostgreSQL.
- Топологии
- Классы отношений
- Геометрические сети
- Наборы сетевых данных
- Наборы схематических данных
- Наборы данных terrain
- Наборы данных участков
В следующих разделах описано, каким образом набор классов объектов может отображаться в дереве Каталога ArcGIS for Desktop, в системе управления базами данных (СУБД), а также в XML-документе.
Наборы классов объектов в ArcGIS for Desktop
В дереве Каталога наборы классов объектов представлены со следующим значком:
Если развернуть набор классов объектов в дереве Каталога, будут отображаться все классы объектов и другие объекты данных, которые в нем находятся.
В базе геоданных PostgreSQL, имя набора классов объектов включает название базы данных, имя пользователя, которому принадлежит этот набор классов и собственно имя набора классов объектов. Это показано на предыдущем рисунке.
Наборы классов объектов в базе данных PostgreSQL
В базе данных наборы классов объектов являются виртуальными коллекциями классов объектов. Они объединяются по общему ID, который хранится в системной таблице gdb_items.
Если в качестве примера рассмотреть набор классов объектов water, то класс объектов tanks определяется как часть этого набора water посредством таблицы gdb_itemrelationships. Атрибут uuid набора классов объектов соответствует originid, а атрибут uuid класса объектов – destid.
Далее представлены бизнес-таблица и системные таблицы класса объектов tanks, которые отслеживают набор классов объектов water в PostgreSQL.
Пунктирные линии указывают на неявные отношения между столбцами; сплошные линии указывают на явные отношения между столбцами.
Так как наборы классов объектов являются виртуальными коллекциями объектов, классы объектов в таких наборах похожи на отдельные классы объектов тем, что они имеют собственные записи в таблицах, связанных с классами объектов, например sde_layers, sde_table_registry, sde_geometry_columns и sde_column_registry. Поскольку классы объектов, связанные с соответствующими наборами, являются полноценными объектами базы данных, они не могут иметь такое же имя, как другие таблицы или отдельные классы объектов в той же схеме базы данных.
Диаграмму связей классов объектов в базе геоданных см. в разделах Классы объектов базы геоданных в PostgreSQL.
Топологии, геометрические сети, наборы сетевых данных, наборы кадастровых данных участков, наборы схематических данных и наборы данных рельефа (terrain) являются дополнительными объектами базы данных, которые могут входить в набор классов объектов. В этих объектах используются дополнительные системные таблицы, описанные в отдельных разделах.
Наборы классов объектов в XML-документе рабочей области
Наборы классов объектов в XML-документе объединяются в группы по тегу DatasetDefinitions и определяются тегом DataElement типа esri:DEFeatureDataset. Классы объектов, входящие в набор классов объектов, перечисляются в списке в качестве дочерних элементов данных для этого набора. За определениями этих элементов следует определение набора классов объектов. Запись о наборе water в XML-документе будет выглядеть следующим образом:
<DatasetDefinitions xsi: type="esri:ArrayOfDataElement">
<DataElement xsi:type="esri:DEFeatureDataset">
<CatalogPath>/V=sde.DEFAULT/FD=spdata.gis.water</CatalogPath>
<Name>spdata.gis.water</Name>
<Children xsi:type="esri:ArrayOfDataElement">
<DataElement xsi:type="esri:DEFeatureClass">
<CatalogPath>/V=spdata.gis.water/RC=spdata.gis.Anno_19_72</CatalogPath>
<Name>spdata.gis.Anno_19_72</Name>
<DatasetType>esriDTFeatureClass</DatasetType>
<DSID>1</DSID>
<Versioned>false</Versioned>
<CanVersion>true</CanVersion>
<HasOID>false</HasOID>
<OIDFieldName/>
<Fields xsi:type="esri:Fields">
<FieldArray xsi:type="esri:ArrayOfField">
</Fields>
...все остальные дочерние элементы данных...
</Children>
<DatasetType>esriDTFeatureDataset</DatasetType>
<DSID>-1</DSID>
<Versioned>false</Versioned>
<CanVersion>true</CanVersion>
<ConfigurationKeyword></Configuration Keyword>
<Extent xsi:type="esri:EnvelopeN">
<XMin>2210083.8332546502</XMin>
<YMin>386326.52300001681</YMin>
<XMax>2223761.6047394276</XMax>
<YMax>399843.09970059991</YMax>
<SpatialReference xsi:type"esri:ProjectedCoordinateSystem">
<WKT>PROJCS["NAD_1927_StatePlane_Colorado_North_FIPS_0501",
GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",
SPHERIOD["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],
PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",0.0],
PARAMETER["Centeral_Meridian",-105.5],PARAMETER["Stnadard_parallel_1",39.71666666666667],
PARAMETER["Standard_Parallel_2",40.78333333333333],
PARAMETER["Latitude_Of_Origin",39.333333333334],
UNIT["Foot_US",0.3048006096012192],AUTHORITY["EPSG",26753]]</WKT>
<XOrigin>-119259500</XOrigin>
<YOrigin>-96173400</YOrigin>
<XYScale>37140179.758043662</XYScale>
<ZOrigin>-100000</ZOrigin>
<ZScale>10000</ZScale>
<MOrigin>-100000</MOrigin>
<MScale>10000</MScale>
<XYTolerance>0.0032808333333333335</XYTolerance>
<ZTolerance>0.001</ZTolerance>
<MTolerance>0.001</MTolerance>
<HighPrecision>true</HighPrecision>
<WKID>26753</WKID>
</SpatialReference>
</Extent>
</DataElement>
</DatasetDefinitions>
Настройка тега <Versioned> для набора классов объектов со значением Нет (False) не отражает версионное состояние классов объектов в указанном наборе. Чтобы найти эту информацию, выполните поисковый запрос отдельно по каждому классу объектов в наборе классов объектов.