Классы пространственных объектов в базе геоданных в 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>

Связанные темы

9/11/2013