Классы пространственных объектов в базе геоданных в Oracle
Класс объектов – это набор географических объектов с одинаковым типом геометрии (точка, линия, полигон, мультиточка, аннотация, размер или мультипатч). Например, можно сохранить точки для всех железнодорожных станций вдоль линии железной дороги в одном классе объектов. В другом классе объектов можно сохранить линии, которые изображают все железнодорожные пути.
Этот раздел содержит описание способов отображения класса объектов в окне каталога, в системе управления базами данных (СУБД), а также в XML-документе.
Классы пространственных объектов в ArcGIS for Desktop
В программном обеспечении ArcGIS for Desktop можно создать семь типов классов объектов: точка, мультиточка, линия, полигон, аннотация, размер или мультипатч.
Определить тип класса объектов в дереве каталога можно по его значку. В следующей таблице представлен значок для каждого типа класса объектов.
Значок класса объектов |
Тип класса объектов |
---|---|
Точка или мультиточка |
|
Линия |
|
Полигон |
|
Аннотация |
|
Размер |
|
Мультипатч |
В Oracle имя класса объектов, отображающееся в дереве Каталога, включает имя пользователя, которому принадлежит этот класс, и собственно имя класса объектов.
Например, класс объектов parcels, принадлежащий пользователю Perrita, в дереве Каталога обозначается как PERRITA.Parcels.
Описание различных типов классов объектов см. в разделе Классы пространственных объектов.Основные понятия.
Таблицы классов пространственных объектов в базе данных Oracle
Классы пространственных объектов в базах данных Oracle используют один их трех типов хранения геометрии: ST_Geometry (по умолчанию), двоичную или SDO_Geometry.
Все классы объектов имеют базовую таблицу (также называемую бизнес-таблицей), в которой хранится информация атрибутов, идентификатор объекта и поле Форма (Shape). Поля Идентификатор объекта (Object ID) и Форма (Shape) могут иметь различные имена, но должны присутствовать в базовой таблице класса объектов.
Классам объектов аннотаций и размеров в базовых таблицах соответствуют дополнительные требуемые поля. Список этих полей см. в разделах Управление свойствами класса объектов аннотаций и Свойства объекта размера.
Таблицы классов пространственных объектов в базе данных Oracle хранятся с типом геометрии ST_Geometry.
Классы пространственных объектов, хранящиеся используя геометрию ST_Geometry, тип которой задан пользователем, состоят из базовой таблицы и пространственного индекса. В классах пространственных объектов с геометрией ST_Geometry, пространственный столбец ST_Geometry хранит геометрию класса пространственных объектов в подклассах, таких как ST_LineString, ST_MultiPoint или ST_Polygon. Значения геометрии хранятся непосредственно в этом пространственном столбце.
Классы пространственных объектов, использующие способ хранения ST_Geometry, также имеют связанную с ними таблицу пространственного индекса (spatial index (S) table). Соглашение о наименовании таблицы пространственного индекса связано с идентификатором, который генерируется в таблице ST_GEOMETRY_INDEX при создании пространственного индекса для класса пространственных объектов. Например, пространственный индекс со значением INDEX_ID в таблице ST_GEOMETRY_INDEX, равным 16, будет именоваться S16_IDX$.
Создание пространственного индекса на таблицу создает запись для этой таблицы в системных таблицах ST_GEOMETRY_COLUMNS и ST_GEOMETRY_INDEX. Таблица схемы информации ST_GEOMETRY_COLUMNS используется для выполнения выборки и операций DML с метаданными. Сохраненные процедуры используются для вставки и удаления записей из таблицы ST_GEOMETRY_COLUMNS.
Когда в приложении ArcGIS с помощью хранилища ST_Geometry создается класс объектов, в схеме владельца формируется бизнес-таблица со столбцом ST_Geometry. Кроме того, для отслеживания информации о классе объектов в таблицы LAYERS, TABLE_REGISTRY, GEOMETRY_COLUMNS, COLUMN_REGISTRY, sde_spatial_references (если была определена пространственная привязка) и GDB_ITEMS схемы пользователя sde добавляются записи. Таблица GDB_ITEMTYPES в схеме пользователя sde определяет тип данных, к которому в данном случае относится класс объектов.
Создание таблицы со столбцом геометрии ST (ST_Geometry) не обеспечивает вставку метаданных геометрии ST (ST_Geometry). Регистрация информации об этих метаданных является вашей обязанностью (или обязанностью приложения).
Управление системными таблицами вручную Esri не поддерживается. Для таблиц с пространственным столбцом геометрии ST (ST_Geometry), которые были зарегистрированы или созданы в ArcSDE, чрезвычайно важно, чтобы метаданные для этих таблиц не изменялись вручную.
View a diagram of a feature class using ST_Geometry storage in Oracle.
Для открытия файла необходим Adobe Acrobat Reader.
Пунктирные линии указывают на неявные отношения между столбцами; сплошные линии указывают на явные отношения между столбцами.
Таблицы классов пространственных объектов в базе данных Oracle, использующих для хранения двоичный тип геометрии
Классы пространственных объектов, сохраненные в двоичном формате—либо сжатые двоичные ArcSDE, либо представление геометрии в стандартном двоичном формате (OGC well-known binary representation of geometry)—в базе геоданных в Oracle состоит из базовой таблицы, с одной стороны, и связанного пространственного объекта и таблиц пространственных индексов с другой, как описано далее.
-
Базовая таблица
При двоичном выполнении схемы пространственный столбец в базовой таблице содержит идентификатор пространственного объекта, который дает уникальную ссылку на определенные пространственные данные. Идентификатор пространственного объекта связывает базовую таблицу с двумя другими таблицами: таблицей объектов и таблицей пространственных индексов. Для поддержания отношений между записями в базовой таблице и таблице объектов в пространственно определенной неверсионной базовой таблице задается триггер базы данных. Все неверсионные базовые таблицы класса пространственных объектов имеют триггер каскадного удаления, который отвечает за удаление пространственного столбца из таблицы объектов при удалении его в базовой таблице. Вы можете увидеть эти триггеры в многопользовательском менеджере Oracle. Эти триггеры автоматически отбрасываются каждый раз, когда класс объектов, автономный или в наборе классов, регистрируется как версионный. Триггеры снова создаются, когда регистрация класса объектов как версионного отменяется. Если вы измените один из этих триггеров, а затем зарегистрируете класс объектов как версионный, то этот триггер будет отброшен.
-
Таблица объектов (f<layer_id>)
В таблице объектов хранятся геометрические формы каждого объекта. Данная таблица идентифицируется по номеру столбца LAYER_ID таблицы LAYERS. Отношения между базовой таблицей и таблицей объектов управляются через идентификатор объекта (Feature ID, или FID). Данный ключ, управляемый с помощью ArcSDE, является уникальным для пространственного столбца.
Определение таблицы объектовИмя поля
Тип поля
Описание
Null?
FID
NUMBER(38)
Первичный ключ; уникальный идентификатор, который соединяет таблицу объектов с базовой таблицей.
NOT NULL
NUMOFPTS
NUMBER(38)
Число точек, определяющих пространственный объект
NOT NULL
ENTITY
NUMBER(38)
Тип геометрии, хранящийся в пространственном столбце (например, точка, линия или текст).
NOT NULL
EMINX
FLOAT(64)
Минимальное x-значение в объекте; вместе с eminy, emaxx и emaxy определяет конверт объекта
NOT NULL
EMINY
FLOAT(64)
Минимальное y-значение в объекте; вместе с eminx, emaxx и emaxy определяет конверт объекта
NOT NULL
EMAXX
FLOAT(64)
Максимальное x-значение в объекте; вместе с eminx, eminy и emaxy определяет конверт объекта
NOT NULL
EMAXY
FLOAT(64)
Максимальное y-значение в объекте; вместе с eminx, eminy и emaxx определяет конверт объекта
NOT NULL
EMINZ
FLOAT(64)
Минимальное z-значение в трехмерном объекте
EMAXZ
FLOAT(64)
Максимальное z-значение в трехмерном объекте
MIN_MEASURE
FLOAT(64)
Минимальное значение измерения в объекте
MAX_MEASURE
FLOAT(64)
Максимальное значение измерения в объекте, нулевые значения допустимы
AREA (ПЛОЩАДЬ)
FLOAT(64)
Площадь геометрии
LEN
FLOAT(64)
Длина периметра геометрии
POINTS
LONG RAW
Содержит поток байтов координат точек, определяющих геометрию
По мере того, как происходит вставка или обновление объектов, значения таких столбцов как экстентов и numofpts автоматически пересчитываются.
Отношения между бизнес-таблицей и таблицей объектов управляются через пространственный столбец и идентификатор объекта (Feature ID, или FID). Данный ключ, который поддерживается ArcSDE, является уникальным. Важным вопросом является поддержание целостности на уровне ссылок между базовой таблицей и таблицей объектов. Вы не должны изменять записи таблицы объектов или таблицы пространственных индексов. С целью обеспечения такой целостности в базовую таблицу, а также таблицы объектов и пространственных индексов были добавлены несколько индексов и ограничений. Однако, эти индексы и ограничения удаляются при конвертации класса объектов в режим загрузка только I/O (load-only I/O), то есть в режим, соответствующий состоянию, когда возможна быстрая вставка данных в класс объектов.
Когда класс объектов будет приведен назад в нормальный режим I/O (normal I/O mode), то есть в состояние, позволяющее пользователю произвести запрос к классу объектов через клиента ArcSDE, индексы будут перестроены, а ограничения включены. Переход в нормальный режим I/O (normal I/O mode) не произойдет, если будет невозможно построить уникальные индексы в пространственном столбце базовой таблицы или столбце FID таблицы объектов. Переход в нормальный режим также не состоится, если значение в пространственном столбце базовой таблицы будет отличным от значения в столбце FID таблицы объектов. В таком случае в таблицу SDE_EXCEPTIONS будет загружена ссылка на запись в проблемной базовой таблице.
Таблицы объектов хранят геометрию, аннотацию и элементы системы автоматического проектирования (CAD) в столбце POINTS. Столбец POINTS может быть задан или как BLOB, или как LONG RAW, в зависимости от настройки параметра хранения GEOMETRY_STORAGE DBTUNE. Установите параметр хранения GEOMETRY_STORAGE DBTUNE в положение SDEBINARY, если вы хотите хранить сжатые двоичные пространственные данные в столбце, заданном как LONG RAW; в противном случае установите параметр хранения в положение SDELOB, если вы хотите хранить сжатые двоичные пространственные данные в столбце, заданном как BLOB.
-
Таблица пространственного индекса (S<layer_id>)
Пространственным индексом двоичной реализации является таблица пространственного индекса. Она хранит ссылки на геометрию, основанные на простой, регулярной сетке. Данная таблица идентифицируется по значению (номеру) из столбца LAYER_ID в таблице LAYERS.
Пространственный индекс содержит запись для каждой геометрии, а также комбинацию ячеек сетки, чтобы поддерживались пространственные запросы. Объект, перекрещивающийся в три ячейки сетки, имеет три записи в таблице. При выполнении пространственного запроса ячейки сетки, попадающие в область поиска, идентифицируются и используются для получения списка подходящей геометрии (кандидатов).
Определение таблицы пространственного индекса
Таблица пространственного индексаИмя поля
Тип поля
Описание
Null?
SP_FID
NUMBER(38)
Первичный ключ; уникальный идентификатор, который соединяет таблицу пространственного индекса с базовой таблицей.
NOT NULL
GX
NUMBER(38)
х-значение сетки пространственного индекса
NOT NULL
GY
NUMBER(38)
y-значение сетки пространственного индекса
NOT NULL
EMINX
NUMBER(38)
Минимальное x-значение в объекте; вместе с eminy, emaxx и emaxy определяет конверт объекта
NOT NULL
EMINY
NUMBER(38)
Минимальное y-значение в объекте; вместе с eminx, emaxx и emaxy определяет конверт объекта
NOT NULL
EMAXX
NUMBER(38)
Максимальное x-значение в объекте; вместе с eminx, eminy и emaxy определяет конверт объекта
NOT NULL
EMAXY
NUMBER(38)
Максимальное y-значение в объекте; вместе с eminx, eminy и emaxx определяет конверт объекта
NOT NULL
Таблица пространственного индекса определяет диапазон значений сетки и экстент всей геометрии в классе пространственных объектов ArcSDE.
- sp_fid—содержит уникальный идентификатор, который соединяет таблицу объектов с базовой таблицей
- gx/gy—определяет экстент объекта в ячейках сетки
- eminx/eminy/emaxx/emaxy—определяет экстент объекта в системных единицах
В данном примере столбец FEATURE-ID из базовой таблицы WELLS дает ссылку на объекты из таблицы объектов и из таблицы пространственного индекса:
WELL_ID DEPTH ACTIVE FEATURE-ID 1 30029 Yes 101 2 13939 No 102 3 92891 No 103 … … … FID AREA LEN EMINX,EMINY,… POINTS 101 <compressed feature> 102 <compressed feature> 103 <compressed feature> … … SP_FID GX GY {EMINX,EMINY,EMAXX,EMAXY} 101 70 100 102 70 100 103 71 100 … A business/feature/spatial index key reference
Таблица пространственных индексов для классов двоичных объектов связана со значением LAYER_ID в таблице LAYERS, тогда как таблица пространственных индексов для класса объектов ST_Geometry связана с INDEX_ID, который был создан в таблице ST_GEOMETRY_INDEX.
View a diagram of a feature class using binary storage in Oracle.
Для открытия файла необходим Adobe Acrobat Reader.
Пунктирные линии указывают на неявные отношения между столбцами; сплошные линии указывают на явные отношения между столбцами.
Таблицы классов пространственных объектов в базе данных Oracle, сохраненные с применением типа пространственной геометрии Oracle Spatial.
Oracle Spatial использует пространственный тип геометрии—MDSYS.SDO_GEOMETRY. Эти классы объектов тоже имеют базовую таблицу, но эта базовая таблица имеет пространственный столбец SDO_Geometry, который хранит геометрию класса объектов. Значения геометрии хранятся непосредственно в этом пространственном столбце.
View a diagram of a feature class using SDO_Geometry storage in Oracle..
Для открытия файла необходим Adobe Acrobat Reader.
Пунктирные линии указывают на неявные отношения между столбцами; сплошные линии указывают на явные отношения между столбцами.
Классы пространственных объектов в XML-документе
Классы объектов определены в элементах DataElement. Тип тегов DataElement для класса объектов настроен со значением esri:DEFeatureClass. В элементе DataElement класса объектов находятся другие элементы, которые определяют класс объектов, такие как элементы Поле (Field), Домен (Domain), Ключевое слово конфигурации (ConfigurationKeyword) и Пространственная привязка (SpatialReference).
Ниже перечислена лишь малая часть содержимого XML-документа для класса объектов Участки (Parcels).
<DataElement xsi:type="esri:DEFeatureClass">
<CatalogPath>/V=SDE.DEFAULT/FC=PERRITA.PARCELS</CatalogPath>
<Name>PERRITA.PARCELS</Name>
<DatasetType>esriDTFeatureClass</DatasetType>
<DSID>21</DSID>
<Versioned>false</Versioned>
<CanVersion>true</CanVersion>
<HasOID>true</HasOID>
<OIDFieldName>OID</OIDFieldName>
<Fields xsi:type="esri:Fields">
<FieldArray xsi:type="esri:ArrayOfField">
<Field xsi:type="esri:Field">
<Name>OID</Name>
<Type>esriFieldTypeInteger</Type>
<IsNullable>false</IsNullable>
<Length>4</Length>
<Precision>10</Precision>
<Scale>0</Scale>
<Required>true</Required>
<Editable>false</Editable>
<AliasName>OBJECTID</AliasName>
<ModelName>OBJECTID</ModelName>
</Field>
Все остальные элементы, определяющие класс объектов
</DataElement>