Когда вы создаете класс пространственных объектов с типом хранения 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, приложения могут распространять пространственный запрос на сервер базы данных и на само приложение.