Классы пространственных объектов в базе геоданных в 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, ST_GEOMETRY_COLUMNS, COLUMN_REGISTRY, ST_SPATIAL_REFERENCES (если была определена пространственная привязка) и GDB_ITEMS в схему пользователя sde для отслеживания информации о классе объектов. Таблица GDB_ITEMTYPES в схеме пользователя sde определяет тип данных, к которому в данном случае относится класс объектов.
Создание таблицы со столбцом ST_Geometry не добавляет автоматически метаданные 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 – в базе геоданных в Oracle, состоят из базовой таблицы и связанных таблиц и пространственных индексов, как описано здесь.
-
Базовая таблица
При двоичном выполнении схемы пространственный столбец в базовой таблице содержит идентификатор пространственного объекта, который дает уникальную ссылку на определенные пространственные данные. Идентификатор пространственного объекта связывает базовую таблицу с двумя другими таблицами: таблицей объектов и таблицей пространственных индексов. Для поддержания отношений между записями в базовой таблице и таблице объектов в пространственно определенной неверсионной базовой таблице задается триггер базы данных. Все неверсионные базовые таблицы класса пространственных объектов имеют триггер каскадного удаления, который отвечает за удаление пространственного столбца из таблицы объектов при удалении его в базовой таблице. Вы можете увидеть эти триггеры в Oracle Enterprise Manager. Эти триггеры автоматически удаляются каждый раз, когда класс объектов, автономный или в наборе классов объектов, регистрируется как версионный. Они создаются заново, когда класс пространственных объектов исключается из версионных. Если вы измените один из этих триггеров, а затем зарегистрируете класс объектов как версионный, то этот триггер будет удален.
-
Таблица объектов (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)
Минимальное х-значение в объекте; вместе с 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)
Максимальное значение измерения в объекте, допускается отсутствие значения (null)
AREA
FLOAT(64)
Площадь геометрии
LEN
FLOAT(64)
Длина периметра геометрии
POINTS
LONG RAW
Содержит поток байтов координат точек, которые определяют геометрию
По мере того, как происходит вставка или обновление объектов, значения в таких столбцах, как extents и numofpts, автоматически пересчитываются.
Отношения между бизнес-таблицей и таблицей объектов управляются через пространственный столбец и идентификатор объекта (Feature ID, или FID). Данный ключ, который поддерживается ArcSDE, является уникальным. Между базовой таблицей и таблицей объектов важно поддерживать ссылочную целостность. Вы не должны изменять записи таблицы объектов или таблицы пространственных индексов. С целью обеспечения такой целостности в базовую таблицу, а также таблицы объектов и пространственных индексов были добавлены несколько индексов и ограничений. Однако, эти индексы и ограничения удаляются при конвертации класса объектов в режим загрузка только I/O (load-only I/O), то есть в режим, соответствующий состоянию, когда возможна быстрая вставка данных в класс объектов.
Когда класс объектов будет приведен назад в нормальный режим I/O (normal I/O mode), то есть в состояние, позволяющее пользователю произвести запрос к классу объектов через клиента ArcSDE, индексы будут перестроены, а ограничения включены. Перевод в обычный режим ввода/вывода невозможен, если нельзя построить уникальные индексы по пространственному столбцу базовой таблицы или столбцу 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>