SDO_GEOMETRY и ArcGIS

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

Таблица со столбцом SDO_GEOMETRY создана.

Если указать ключевое слово конфигурации DBTUNE, которое имеет параметр GEOMETRY_STORAGE, установленный как SDO_GEOMETRY, при создании класса объектов в базе геоданных в Oracle, ArcGIS использует столбец SDO_GEOMETRY для поля геометрии.

Следующий пример класса объектов имеет уникальный идентификатор поля (ObjectID), имя, атрибуты населения и столбец геометрии SDO_GEOMETRY.

НазваниеТип данныхNull?

ИМЯ

VARCHAR2(32)*

POPULATION

NUMBER(11)

SHAPE

MDSYS.SDO_GEOMETRY

OBJECTID

NUMBER(38)

NOT NULL

Примечание:

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

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

По умолчанию ArcGIS создает пространственный индекс R-tree для столбца SDO_GEOMETRY класса объектов. ArcGIS использует функцию Oracle – SDO_FILTER для выполнения пространственных запросов по классу объектов; поэтому пространственный индекс необходим для осуществления пространственных запросов.

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, идентификатор пространственной привязки, и информацию о координатных измерениях.

При использовании ArcGIS для удаления класса объектов, метаданные Oracle Spatial также удаляются.

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

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

  • X-координата является первым измерением.
  • Y-координата является вторым измерением.
  • Z-координата является третьим измерением, если класс объектов определен, как имеющий высоты.
  • M-координата является последним измерением (третьим или четвертым, в зависимости от наличия или отсутствия z-координаты), если класс объектов определен, как имеющий измерения.

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

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

  • Создайте 4-значный SDO_GTYPE основываясь на названии экземпляра геометрии.
  • Установите тип SDO_SRID.
  • Запишите значения координат в соответствующей системе привязки координат.
  • Запишите значения координат в порядке x, y, z, и m, определяя координаты высоты и измерения только если присутствует объект SE_SHAPE.
  • Если координаты высоты и/или измерения существуют в исходном объекте SE_SHAPE, сохраните все координаты с координатами высоты и/или измерения.
  • Установите координаты высоты и измерения на NaN ("not a number"), если выбранные координаты в геометрии содержат неопределенные значения высоты или измерения.
  • Разрешите измерения для любого типа геометрии, не только линий. Первая и последняя координата не обязаны содержать значения измерений.
  • Не запрещайте значениям измерений быть отсортированными по возрастанию или убыванию.
  • Записывайте круговые кривые в тип SDO_GEOMETRY.
  • Конвертируйте некруговые дуги (такие, как параметрические кривые или сплайны) в линии с прямыми ребрами и сохраните представление в SE_ANNO_CAD_DATA.
  • Проверьте все объекты перед сохранением их в базу данных.
  • Используйте SDO_POINT для добавления односоставной точки x,y или x,y,z в объект SDO_GEOMETRY. Для других типов точечных классов объектов, добавляйте вершины точек в объект SDO_ORDINATE_ARRAY.
Примечание:

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

Дополнительный столбец добавляется к бизнес-таблице для хранения свойств САПР и аннотаций.

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

НазваниеТип данныхNull?

ИМЯ

VARCHAR2(32)*

POPULATION

NUMBER(11)

SHAPE

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. Свойство SE_ANNO_CAD_DATA содержит данные из нескольких компонентов ArcGIS:

  • Параметрические объекты, такие как кубические сплайны и параметрические кривые из ArcMap
  • Патчи поверхности из дополнительного модуля ArcGIS Spatial Analyst extension

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

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

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