Наборы данных terrain в базе геоданных в PostgreSQL
Наборы данных Terrain – это поверхности, представляющие трехмерное пространство. Они используют измерения (хранящиеся как классы пространственных объектов) и правила для создания пирамид нерегулярной триангуляционной сети (TIN) для воссоздания рельефа.
Источник класса пространственных объектов может быть привязан к наборам данных terrain или внедрен в набор данных terrain.
Для объяснения набора данных terrain см. руководство "Разбираемся с наборами данными terrain". Вы можете начать с раздела Что такое набор данных terrain?
Terrain в ArcGIS for Desktop
В дереве каталога наборы данных terrain выглядят аналогично другим наборам классов, но содержат terrain. Наборы данных terrain представляются следующим значком:
Имя набора данных terrain в базе геоданных в PostgreSQL содержит имя базы данных, имя владельца локатора и имя, собственно, локатора.
Например, набор данных terrain topography_terrain, принадлежащий пользователю sasha, в базе геоданных m8db обозначается в дереве Каталога как m8db.sasha.topograhy_terrain.
Вы можете видеть классы пространственных объектов, участвующие в terrain – topo_break_lines, topo_clip_poly, topo_mass_points и topo_water_poly. Чтобы узнать, имеются ли встроенные в набор данных terrain классы объектов, откройте свойства terrain. Щелкните terrain правой кнопкой мыши и выберите закладку Источники данных (Data Sources). Здесь приводится список всех классов объектов, использованных при создании terrain. В этом примере, при создании terrain не использовались внедренные классы объектов. Если бы они были, в списке в диалоговом окне Свойства terrain был бы указан дополнительный класс объектов, не отображающийся в наборе классов объектов в дереве Каталога, и содержащий значение Yes в столбце Embedded.
Наборы данных terrain в базе данных PostgreSQL
Являясь наборами данных, terrain управляются в базе геоданных с использованием таблиц, аналогичных наборам классов объектов, также имеются три специальные terrain таблицы, созданные в схеме пользователя, который создал набор данных terrain. Это следующие таблицы:
Составные листы являются неполными, в терминах покрытия данных, по их периметру. Они могут не содержать полностью всех измерений или только близости одного или нескольких углов. Для определения поверхности, покрывающей экстенты этих листов, используются данные из окружающих листов. Данная таблица используется для идентификации листов, которые являются составными, а также предоставление данных для их завершения соседними листами. На один составной лист используется одна запись.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
id |
integer |
Уникальный идентификатор формы, указывающей на соседние листы |
NOT NULL |
tilenr |
integer |
Номер составного листа Определяется системой листа набора данных terrain. Для одной записи, содержащей центроиды листов периметра terrain, зарезервировано значение -1. |
NOT NULL |
emptytile |
smallint |
Значение -1 указывает, что лист не содержит измерений. Значение 0 указывает, что лист содержит некоторые данные, но не является полным. |
NOT NULL |
othertiles |
st_geometry |
Форма мультиточки хранит центроид листа для каждого окружающего листа, который предоставляет измерения для завершения составного листа |
Измененные области представляют собой листы, ставшие недействительными в результате редактирования классов объектов в одном или более участвующих в построении классе пространственных объектов. Данная таблица используется для слежения за недействительными листами, и записи классов объектов, в которых было выполнено редактирование. Для одного класса пространственных объектов, в котором было выполнено редактирование, используется одна запись. Таблица будет пустой только в том случае, если редактирование не выполняется.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
id |
integer |
Уникальный идентификатор формы |
NOT NULL |
classid |
integer |
Идентификатор класса пространственных объектов, являющегося источником редактирования |
NOT NULL |
tilecount |
integer |
Количество измененных листов в процессе редактирования класса пространственных объектов |
NOT NULL |
dirtyarea |
st_geometry |
Форма мультиточки содержит центроиды листов, ставших недействительными в результате редактирования класса пространственных объектов. |
NOT NULL |
Таблицы Embed используется для хранения класса объектов мультиточки. Может существовать 0..n embed таблиц. Их наличие зависит от того, имеет ли terrain внедренные данные. Для внедренного класса объектов используется одна таблица. Являясь частью структуры пирамиды таблица embed имеет двойную цель. Внедренные данные группируются по листу и уровню слоя пирамиды.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
id |
integer |
Уникальный идентификатор формы |
NOT NULL |
tilerow |
integer |
Номер строки листа terrain, которому принадлежат внедренные точки |
|
tilecol |
integer |
Номер столбца листа terrain, которому принадлежат внедренные точки |
|
resolution |
numeric(38,8) |
Указывает уровень или уровни пирамиды, в которых используются точки. Так как уровни пирамидных слоев являются кумулятивными, данные точки участвуют в уровнях, разрешение которых равно или превосходит их. Специальный случай включает обзор terrain. Разрешение уровня обзора отмечено значением -1. Точки, имеющие данное значение, участвуют в построении всех пирамидных слоев. |
|
pointcount |
integer |
Число точек в мультиточке |
NOT NULL |
neighbordata |
smallint |
Указывает на то, имеются ли точки внутри границы рамки листа; наружные точки используются для обеспечения полного покрытия площади листа. Значение 0 указывает, что точки находятся внутри листа. Значение -1 указывает, что точки находятся снаружи |
NOT NULL |
shape |
st_geometry |
Внедренный тип геометрии мультиточка |
Таблица InsideTiles используется для записи листов terrain, которые находятся в области данных или зоне интерполяции объекта terrain. Эти данные записываются на уровень пирамиды, так как экстент может изменятся по уровням (например, с использованием различных классов объекта вырезания полигона в различных уровнях пирамиды). Одному уровню пирамиды соответствует одна запись. К ним относятся обзор и уровни полного разрешения.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
id |
integer |
Уникальный идентификатор формы |
NOT NULL |
ztolerance |
numeric(38,8) |
Разрешение уровня пирамиды A со значением -1 указывает на уровень обзора. |
NOT NULL |
insidetiles |
st_geometry |
Тип геометрии мультиточка содержит данные о центроидах листа |
MRFC представляет собой структуру пирамиды для невнедренных классов пространственных объектов. Облака точке и вершины линий перегиба для связанных классов пространственных объектов хранятся при условии, что они участвуют в уровне полного разрешения пирамиды (они могут также участвовать и в других уровнях). Данные группируются по листу и уровню слоя пирамиды.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
id |
integer |
Уникальный идентификатор формы |
NOT NULL |
tilerow |
integer |
Номер строки листа terrain, которому принадлежат внедренные точки |
|
tilecol |
integer |
Номер столбца листа terrain, которому принадлежат точки пирамиды/вершины |
|
resolution |
numeric(38,8) |
Указывает уровень или уровни пирамиды, в которых используются точки. Так как уровни пирамидных слоев являются кумулятивными, данные точки участвуют в уровнях, разрешение которых равно или превосходит их. Специальный случай включает обзор terrain. Разрешение уровня обзора отмечено значением -1. Точки, имеющие данное значение, участвуют в построении всех пирамидных слоев. |
|
pointcount |
integer |
Число точек в мультиточке |
NOT NULL |
neighbordata |
smallint |
Указывает на то, имеются ли точки внутри границы рамки листа; наружные точки используются для обеспечения полного покрытия площади листа. Значение 0 указывает, что точки находятся внутри листа. Значение -1 указывает, что точки находятся снаружи |
NOT NULL |
shape |
st_geometry |
Тип геометрии мультиточка |
Таблица terrain props используется для хранения свойств отдельного набора данных terrain, характерных для версии. К ним относится число точек и экстент. Информация хранится в таблице BLOB и не доступна для пользователя по всей таблице. Вместо нее для доступа к информации используется ArcObjects API.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
id |
integer |
Идентификатор объекта для записи |
NOT NULL |
properties |
bytea |
Хранит свойства набора данных, характерные для версии |
Запись также создается в таблице gdb_items для слежения за набором данных terrain. Значение id в именах таблиц terrain получается из поля objectid таблицы gdb_items.
Поскольку наборы данных terrain являются частью набора классов объектов, они также записываются в таблицу gdb_itemrelationships. Набор классов объектов uuid соответствует originid и класс объектов uuid является destid в таблице gdb_itemrelationships. Дополнительные таблицы набора данных terrain показаны здесь. Значение 1 в таблице имен DTM_* берется из поля objectid таблицы gdb_items.
Поскольку в этом наборе данных нет внедренных классов объектов, соответствующая таблица dtm_1_embed не была создана.
Штриховые линии определяют неявные отношения между столбцами.
Использование набора данных terrain ограничено при применении метода хранения геометрии PostGIS.
Наборы данных terrain в XML-документе рабочей области
Наборы данных Terrain указаны в XML-документе типом набора данных ersriDTTerrain.
<DatasetType>esriDTTerrain</DatasetType>
Ниже показана часть документа XML для набора данных terrain. Документ XML excerpt, показанный ниже, содержит определение набора данных, включая источники данных, до момента описания первого класса объектов в наборе данных.
<esri:Workspace xmlns:esri="http://www.esri.com/schemas/ArcGIS/10" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<WorkspaceDefinition xsi:type="esri:WorkspaceDefinition">
<WorkspaceType>esriRemoteDatabaseWorkspace</WorkspaceType>
<Version>sde.DEFAULT</Version>
<Domains xsi:type="esri:ArrayOfDomain" />
<DatasetDefinitions xsi:type="esri:ArrayOfDataElement">
<DataElement xsi:type="esri:DEFeatureDataset">
<CatalogPath>/V=sde.DEFAULT/FD=m8db.sasha.topography</CatalogPath>
<Name>m8db.sasha.topography</Name>
<Children xsi:type="esri:ArrayOfDataElement">
<DataElement xsi:type="esri:DETerrain">
<Version>1</Version>
<CatalogPath>/V=sde.DEFAULT/FD=m8db.sasha.topography/TERR=m8db.sasha.topography_terrain</CatalogPath>
<Name>m8db.sasha.topography_terrain</Name>
<DatasetType>esriDTTerrain</DatasetType>
<DSID>1</DSID>
<FeatureDatasetName>m8db.sasha.topography</FeatureDatasetName>
<Versioned>false</Versioned>
<CanVersion>false</CanVersion>
<ChildrenExpanded>true</ChildrenExpanded>
<MetadataRetrieved>false</MetadataRetrieved>
<FullPropsRetrieved>true</FullPropsRetrieved>
<PyramidType>0</PyramidType>
<TileSize>6000</TileSize>
<MaxShapeSize>5000</MaxShapeSize>
<MaxOverviewSize>50000</MaxOverviewSize>
<TerrainDataSources xsi:type="esri:ArrayOfTerrainDataSource">
<TerrainDataSource xsi:type="esri:TerrainDataSource">
<Version>1</Version>
<FeatureClassID>874</FeatureClassID>
<FeatureClassName>m8db.sasha.topo_break_lines</FeatureClassName>
<GroupID>2</GroupID>
<SourceStatus>1</SourceStatus>
<SourceType>0</SourceType>
<SurfaceFeatureType>1</SurfaceFeatureType>
<IsBase>true</IsBase>
<ApplyToOverview>false</ApplyToOverview>
<AutoGeneralize>false</AutoGeneralize>
<ResolutionLowerBound>0</ResolutionLowerBound>
<ResolutionUpperBound>2.6</ResolutionUpperBound>
<SourceName />
<HeightField>Shape</HeightField>
<TagValueField />
<ReservedFields xsi:type="esri:ArrayOfString" />
</TerrainDataSource>
<TerrainDataSource xsi:type="esri:TerrainDataSource">
<Version>1</Version>
<FeatureClassID>873</FeatureClassID>
<FeatureClassName>m8db.sasha.topo_clip_poly</FeatureClassName>
<GroupID>3</GroupID>
<SourceStatus>1</SourceStatus>
<SourceType>0</SourceType>
<SurfaceFeatureType>10</SurfaceFeatureType>
<IsBase>false</IsBase>
<ApplyToOverview>true</ApplyToOverview>
<AutoGeneralize>false</AutoGeneralize>
<ResolutionLowerBound>0</ResolutionLowerBound>
<ResolutionUpperBound>31</ResolutionUpperBound>
<SourceName />
<HeightField />
<TagValueField />
<ReservedFields xsi:type="esri:ArrayOfString" />
</TerrainDataSource>
<TerrainDataSource xsi:type="esri:TerrainDataSource">
<Version>1</Version>
<FeatureClassID>873</FeatureClassID>
<FeatureClassName>m8db.sasha.topo_mass_points</FeatureClassName>
<GroupID>4</GroupID>
<SourceStatus>1</SourceStatus>
<SourceType>0</SourceType>
<SurfaceFeatureType>2</SurfaceFeatureType>
<IsBase>false</IsBase>
<ApplyToOverview>true</ApplyToOverview>
<AutoGeneralize>false</AutoGeneralize>
<ResolutionLowerBound>0</ResolutionLowerBound>
<ResolutionUpperBound>31</ResolutionUpperBound>
<SourceName />
<HeightField />
<TagValueField />
<ReservedFields xsi:type="esri:ArrayOfString" />
</TerrainDataSource>
<TerrainDataSource xsi:type="esri:TerrainDataSource">
<Version>1</Version>
<FeatureClassID>873</FeatureClassID>
<FeatureClassName>m8db.sasha.topo_water_poly</FeatureClassName>
<GroupID>3</GroupID>
<SourceStatus>1</SourceStatus>
<SourceType>0</SourceType>
<SurfaceFeatureType>10</SurfaceFeatureType>
<IsBase>false</IsBase>
<ApplyToOverview>true</ApplyToOverview>
<AutoGeneralize>false</AutoGeneralize>
<ResolutionLowerBound>0</ResolutionLowerBound>
<ResolutionUpperBound>31</ResolutionUpperBound>
<SourceName />
<HeightField />
<TagValueField />
<ReservedFields xsi:type="esri:ArrayOfString" />
</TerrainDataSource>
</TerrainDataSources>
<TerrainPyramidLevelZTols xsi:type="esri:ArrayOfTerrainPyramidLevelZTol">
<TerrainPyramidLevelZTol xsi:type="esri:TerrainPyramidLevelZTol">
<Version>1</Version>
<PyramidLevelStatus>1</PyramidLevelStatus>
<PointCount>-1</PointCount>
<MaxScale>10000</MaxScale>
<Resolution>5</Resolution>
</TerrainPyramidLevelZTol>
<TerrainPyramidLevelZTol xsi:type="esri:TerrainPyramidLevelZTol">
<Version>1</Version>
<PyramidLevelStatus>1</PyramidLevelStatus>
<PointCount>-1</PointCount>
<MaxScale>20000</MaxScale>
<Resolution>10</Resolution>
</TerrainPyramidLevelZTol>
</TerrainPyramidLevelZTols>
</DataElement>
<DataElement xsi:type="esri:DEFeatureClass">