Что происходит, когда вы создаете класс пространственных объектов с типом хранения геометрии SDO_GEOMETRY?

Когда вы создаете класс пространственных объектов с типом хранения SDO_GEOMETRY, происходит следующее:

Столбец SDO_GEOMETRY добавляется к бизнес-таблице класса объектов.

ArcGIS создает класс объектов, добавляя столбец геометрии к определенной бизнес-таблице. Если параметр GEOMETRY_STORAGE установлен на SDO_GEOMETRY, ArcGIS добавляет столбец SDO_GEOMETRY к бизнес-таблице.

В следующем примере бизнес-таблица имеет свойства имени и численности. После добавления столбца геометрии, она также имеет столбец SDO_GEOMETRY с названием Borders (Границы). Если необходимо, добавляется и публикуется столбец уникального идентификатора объектов (в данном примере это OBJECTID).

Имя

Тип данных

Null?

NAME

VARCHAR2(32)*

POPULATION

NUMBER(11)

BORDERS

MDSYS.SDO_GEOMETRY

OBJECTID

NUMBER(38)

NOT NULL

ПримечаниеПримечание:

*NVARCHAR2(32) используется вместо VARCHAR2(32), если вы используете строки Unicode.

Столбец геометрии может быть добавлен к бизнес-таблице с использованием ArcCatalog, административной утилиты sdelayer, или ArcSDE C и Java API.

Для столбца SDO_GEOMETRY создается пространственный индекс.

Когда столбец SDO_GEOMETRY добавляется в бизнес-таблицу, пространственный индек для этого столбца геометрии уже обычно создан. По умолчанию, ArcGIS создает индекс R-tree для столбца SDO_GEOMETRY.

В качестве альтернативы, ArcGIS может создать класс объектов без пространственного индекса; однако, пространственные запросы не могут выполняться, пока пространственный индекс не создан. Функция SDO_FILTER в Oracle, используемая ArcGIS, требует наличия пространственного индекса.

Вы можете создать пространственный индекс несколькими способами—в ArcCatalog, с помощью административной утилиты sdelayer, используя Oracle Spatial Index Advisor, с помощью SQL, или программно, используя ArcSDE C и Java API.

ArcSDE автоматически удаляет и пересоздает пространственный индекс Oracle Spatial, созданный в ArcGIS, при каждом переключении режима класса объектов из LOAD_ONLY_IO в режим NORMAL_IO и обратно. Пространственные индексы, определенные с помощью приложения Oracle Spatial Index Advisor или созданные с использованием SQL, не удаляются при переключении режима класса объектов на LOAD_ONLY_IO в ArcGIS.

В вид метаданных Oracle Spatial добавляется запись.

Когда ArcGIS добавляет столбец SDO_GEOMETRY в бизнес-таблицу, при этом также добавляется необходимая запись метаданных Oracle Spatial в вид метаданных USER_SDO_GEOM_METADATA. Эти метаданные включают имя таблицы, имя столбца SDO_GEOMETRY, идентификатор пространственной привязки, и информацию о координатных измерениях.

Если использовались SQL или приложения третьих компаний для создания таблицы, пространственного столбца и их метаданных, и таблица затем была зарегистрирована в ArcSDE с использованием инструмента командной строки sdelayer, то ArcSDE не будет удалять метаданные при отмене регистрации таблицы в ArcSDE. Однако ArcSDE всегда будет удалять метаданные при удалении таблицы, таким же образом, как при использовании команды sdetable -o delete.

Координатное измерение задано.

Вы можете создать геометрию в ArcGIS как 2D (x,y), 2D с измерениями, 3D (x,y,z) или 3D с измерениями. При создании нового класса объектов или добавлении столбца SDO_GEOMETRY к существующей таблице, ArcGIS помещает информацию об измерении Oracle Spatial в столбец DIMINFO в виде метаданных.

SRID для каждого значения SDO_GEOMETRY устанавливается на основе привязки координат.

Oracle Spatial предоставляет предопределенные привязки координат в таблице MDSYS.CS_SRS. При использовании ArcGIS для создания нового класса объектов, чтобы задать определенный SRID для столбца SDO_GEOMETRY, выберите подходящее определение привязки координат Oracle Spatial, затем установите в классе объектов параметр хранения SDO_SRID DBTUNE на это значение.

Например:

#MY_SDO_KEYWORD
GEOMETRY_STORAGE SDO_GEOMETRY
SDO_SRID 8307
UI_TEXT "MY_SDO_KEYWORD"
END

Если параметр хранения SDO_SRID не установлен, ArcGIS устанавливает SRID для каждого значения SDO_GEOMETRY на NULL, также как и SRID в соответствующей записи метаданных.

ArcGIS не требует заполненных SRID в Oracle Spatial; ArcGIS управляет информацией о привязке координат для каждого класса объектов в его таблице SPATIAL_REFERENCES, независимо от Oracle Spatial. Для получения дополнительной информации о поддерживаемых привязках координат, см. Oracle Spatial User's Guide and Reference.

Публикуется столбец SDO_GEOMETRY.

При сохранении геометрии в базе геоданных, ArcGIS заполняет значение SDO_GEOMETRY из объекта ArcSDE API с названием SE_SHAPE. Объект SE_SHAPE может содержать простую и сложную геометрию, включая высоты, измерения, данные CAD, аннотации, и патчи поверхности. Тип данных SDO_GEOMETRY поддерживает поднабор этих геометрических свойств. Поскольку нет отображения один-к-одному компонент SDO_GEOMETRY и объекта SE_SHAPE, ArcGIS следует набору правил при хранении данных в таблицах Oracle Spatial:

ПримечаниеПримечание:

ArcGIS не поддерживает неоднородные (с разными типами) коллекции геометрий в объекте SDO_GEOMETRY, и ArcGIS не кодирует элементы SDO_ETYPE 0 в объекте SDO_GEOMETRY. Элементы SDO_ETYPE 0 являются специфическими для приложений.

Дополнительный столбец добавляется к бизнес-таблице, если сохраняются свойства CAD и аннотаций.

Тип SDO_GEOMETRY не может хранить все возможные типы геометрических элементов, которые хранение в ArcGIS должно поддерживать. Когда необходимо хранение этих элементов (что определяется по выбранным флагам типа геометрии при создании класса объектов), ArcGIS добавляет столбец с названием SE_ANNO_CAD_DATA к бизнес-таблице. Используя пример класса объектов из первой секции данного раздела, бизнес-таблица будет содержать следующее:

Имя

Тип данных

Null?

NAME

VARCHAR2(32)*

POPULATION

NUMBER(11)

BORDERS

MDSYS.SDO_GEOMETRY

SE_ANNO_CAD_DATA

BLOB

OBJECTID

NUMBER(38)

NOT NULL

ПримечаниеПримечание:

*NVARCHAR2(32) используется вместо VARCHAR2(32), если вы используете строки Unicode.

Когда ArcGIS определяет, что источником данных являются данные CAD, ArcGIS пишет простое геометрическое представление данных CAD в значение SDO_GEOMETRY и затем записывает неизмененные данные CAD в значение SE_ANNO_CAD_DATA. Если источник данных не имеет данных CAD, ArcGIS устанавливает значение SE_ANNO_CAD_DATA на NULL. Свойство SE_ANNO_CAD_DATA содержит данные из нескольких компонентов ArcGIS:

Пространственные запросы к классу объектов выполняются с использованием функций фильтра Oracle Spatial.

ArcGIS использует функцию SDO_FILTER в Oracle Spatial, чтобы выполнять первичный пространственный запрос. ArcGIS выполняет вторичный фильтр SDO_GEOMETRY на основе пространственного отношения, запрашиваемого приложением.

Приложения могут также включать функции первичного и вторичного фильтров Oracle Spatial в выражениях SQL WHERE clause, поддерживаемых в ArcGIS. Используя пространственные фильтры в выражении WHERE clause, приложения могут распространять пространственный запрос на сервер базы данных, сервер приложений ArcSDE, и на само приложение.

9/11/2013