Как базы геоданных используют Oracle Spatial?

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

Использование Oracle Spatial в базе геоданных

При создании в первый раз базы геоданных в Oracle типом хранения геометрии по умолчанию будет ST_Geometry. Настройки хранения, используемые по умолчанию, задаются в таблице DBTUNE посредством параметров GEOMETRY_STORAGE.

Если вы хотите хранить только часть ваших классов пространственных объектов, используя тип геометрии SDO_GEOMETRY, то вы можете указать ключевое слово SDO_GEOMETRY при создании класса пространственных объектов. Если вы это сделаете, то созданный класс пространственных объектов будет иметь столбец SDO_GEOMETRY. В файле dbtune ключевое слово SDO_GEOMETRY будет выглядеть следующим образом:

##SDO_GEOMETRY
GEOMETRY_STORAGE    "SDO_GEOMETRY"
ATTRIBUTE_BINARY    "BLOB"
RASTER_STORAGE	    "SDO_GEORASTER"
SDO_COMMIT_INTERVAL  1000
UI_TEXT          "User Interface text description for SDO_GEOMETRY"

COMMENT        "Any general comment for SDO_GEOMETRY keyword"

END

Если вы хотите использовать тип хранения SDO_GEOMETRY для большинства классов объектов, вы можете установить параметр GEOMETRY_STORAGE в ключевом слове DEFAULTS в таблице DBTUNE на SDO_GEOMETRY.

Для того, чтобы изменить тип хранения геометрии по умолчанию, воспользуйтесь командой администрирования sdedbtune с операцией изменения, чтобы установить параметр GEOMETRY_STORAGE в ключевом слове DBTUNE DEFAULTS на SDO_GEOMETRY. После того, как значение параметра GEOMETRY_STORAGE будет изменено на SDO_GEOMETRY, классы объектов будут создаваться со столбцами SDO_GEOMETRY по умолчанию. Например:

sdedbtune -o alter -k DEFAULTS -P GEOMETRY_STORAGE 
-v "SDO_GEOMETRY" -u sde
ПримечаниеПримечание:

Дополнительную информацию о командах ArcSDE можно найти в Справочнике по командам администрирования ArcSDE, который входит в комплект установки сервера приложений ArcSDE.

Базы геоданных в Oracle поддерживают несколько разных типов хранения геометрии – все эти разные типы могут использоваться вместе в одной и той же базе данных. В то время, как тип геометрии по умолчанию может быть только один, отдельные таблицы могут создаваться с применением различных типов геометрии.

Предварительные условия для использования имеющихся таблиц Oracle Spatial с базой геоданных

ArcGIS может с успехом использовать таблицы, содержащие столбцы SDO_GEOMETRY, созданные вне ArcGIS другими приложениями или при помощи SQL (которые иногда называют таблицами сторонних производителей) при условии, что эти таблицы соответствуют определенным условиям.

Рекомендации по использованию в различных условиях

Общим заблуждением является то, что приложения могут работать друг с другом только потому, что они поддерживают один и тот же, базовый, тип геометрии. Однако, тип геометрии – это только один из аспектов базы геоданных и других схем баз данных ГИС. Необходимо общее понимание правил, ограничений, схем и способов реализации. При использовании Oracle Spatial с базой геоданных и ArcGIS вы должны принимать во внимание следующие моменты:

ArcGIS не поддерживает более одного столбца геометрии в таблице.

Таблицы с несколькими столбцами SDO_GEOMETRY доступны через представления, в которых содержится только один столбец SDO_GEOMETRY.

Чтобы использовать данные в таблице Oracle Spatial, содержащей несколько пространственных столбцов, создайте пространственный вид, пользуясь SQL. В этом представлении должен быть только один пространственный столбец. См. раздел Создание представления базы данных в ArcGIS for Desktop.

ArcGIS поддерживает только один тип геометрии в столбце SDO_GEOMETRY.

Если один столбец SDO_GEOMETRY в таблице содержит несколько типов геометрии (например, некоторые записи являются точками, а некоторые – полигонами), то такая таблица не может быть зарегистрирована с данной базой геоданных; класс пространственных объектов должен быть зарегистрирован как класс, содержащий один тип геометрии.

Oracle Spatial не обязательно устанавливает ограничения по типу геометрии на столбец SDO_GEOMETRY. Без такого правила одно приложение может делать попытки поддержать правило одного типа геометрии, в то время как другое приложение может допустить вставку разных типов геометрии. Начиная с Oracle9i, у вас есть опция, позволяющая принудительно вставлять в таблицу тип геометрии с параметром создания пространственного индекса. В более ранних версиях Oracle другой опцией применения ограничений по типу геометрии являлось создание триггера вставки и обновления (insert-update trigger), который проверял свойства SDO_GEOMETRY GTYPE.

Проверка геометрии в ArcGIS и SDO_GEOMETRY неодинакова.

ArcGIS проверяет геометрию при вставке геометрии или ее обновлении. В Oracle 10g сама Oracle Spatial не проводит автоматически проверку геометрии при вставке или обновлении значения SDO_GEOMETRY, если эту вставку или обновление вы производите, используя методы, отличные от клиентских приложений ArcGIS, к примеру – SQL. В Oracle 11g, Oracle Spatial проверяет геометрию по индексу вставки.

Если на клиентские приложения ArcGIS будут переданы нелегальные или сформированные с ошибками значения геометрии, то могут возникнуть проблемы. Чтобы снизить вероятность возникновения этих потенциальных проблем, вы должны проверять любую геометрию, созданную или измененную любым методом, отличным от приложения ArcGIS.

Существует два инструмента для проверки геометрии. Oracle's VALIDATE_GEOMETRY_WITH_CONTEXT проверяет геометрию, используя правила проверки форм Oracle (Oracle's shape validation rules), и sdelayer –o feature_info проверяет геометрию, используя правила ArcGIS. Операция feature_info (The feature_info operation) дополнительно к выходным данным содержит информацию о том, является ли геометрия определенной формы применимой для ArcGIS. Дополнительную информацию об использовании этой операции можно найти в Справочнике по командам администрирования, который входит в комплект установки сервера приложений ArcSDE.

Проверка геометрии ArcGIS не такая, как проверка геометрии Oracle Spatial. Хотя проверка геометрии Oracle Spatial имеет важное значение, успешное прохождение этой проверки не гарантирует, что эта геометрия успешно пройдет проверку посредством ArcGIS.

Можно создать триггер вставки-обновления, чтобы запустить функцию SDO_VALIDATE для проверки типов SDO_GEOMETRY.

Можно использовать ArcSDE C API и с его помощью написать приложение, которое бы извлекало объекты даже в том случае, если бы они не прошли успешно проверку форм ArcGIS. Однако, в дальнейшем пригодность геометрии или возможность ее настройки будет определяться клиентским приложением.

Большинство приложений, способных читать объекты SDO_GEOMETRY, не могут читать данные SDO_ETYPE 0, созданные другими приложениями.

Oracle Spatial позволяет приложениям вставлять характерные для данного приложения данные в объект SDO_GEOMETRY. Приложения выполняют это, вставляя свои данные, используя значение SDO_ETYPE, равное 0. Это позволяет приложениям быть очень гибкими и хранить много типов нетрадиционной геометрии и других данных. Однако, такие характерные для приложения данные имеют значение только для приложений, создающих специальные объекты SDO_GEOMETRY. Такие данные, характерные для данного приложения, не могут надежно поддерживаться в интероперабельной среде. Приложения, читающие объекты SDO_GEOMETRY, возможно, не будут не в состоянии прочесть данные SDO_ETYPE 0, созданные другими приложениями. Приложения, обновляющие объекты SDO_GEOMETRY, не смогут ни редактировать, ни сохранить данные SDO_ETYPE 0.

При чтении объектов SDO_GEOMETRY, содержащих элементы SDO_ETYPE 0, ArcGIS игнорирует данные SDO_ETYPE 0 и передает в приложение только простейшие элементы геометрии объектов, которые он поддерживает.

При обновлении объектов SDO_GEOMETRY, содержащих элементы SDO_ETYPE 0, ArcGIS не сохраняет данные SDO_ETYPE 0. Поэтому приложения, требующие сохранения данных SDO_ETYPE 0, не должны давать пользователям доступ к UPDATE (обновление) в таблице.

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

Если привязка координат не определена, значение SRID должно быть NULL в соответствии с описанием в справочном руководстве пользователя Oracle Spatial.

До выхода Oracle9i, Oracle Spatial не применяла в автоматическом режиме проверку идентификатора пространственной привязки на вставку или обновление значения SDO_GEOMETRY. Для запуска проверки типов SDO_GEOMETRY на этих устаревших экземплярах Oracle вы можете создать триггер вставки-обновления, который будет запускать функцию SDO_VALIDATE. Oracle Spatial требует, чтобы SRID каждой геометрии соответствовали один другому и SRID пространственных метаданных, даже при их значении NULL.

И в Oracle Spatial, и в ArcGIS предполагается, что первым и вторым измерением SDO_GEOMETRY являются соответственно x и y.

Если объект SDO_GEOMETRY будет иметь три измерения, ArcGIS интерпретирует третье измерение как измерение в том случае, если имя измерения (в пространственных метаданных) будет начинаться с буквы "m"; в противном случае третье измерение будет интерпретировано как высота рельефа. Вы можете управлять интерпретацией третьего измерения ArcGIS, установив отметку соответственно сущности класса объектов: либо высота рельефа, либо одно из измерений.

Oracle позволяет кодировать, какое измерение содержит ордината. Вторым знаком четырехзначного SDO_GTYPE может быть 0, 3 или 4. Если вторым знаком будет 3 или 4, то это будет указывать на измерение, которое содержит ордината. ArcGIS прочитывает эту кодировку. Если объект SDO_GEOMETRY имеет четыре измерения, измерение будет интерпретироваться как последняя ордината.

Oracle Spatial (но не Oracle Locator) обеспечивает функции для вычисления системы линейных координат (LRS), используя значения измерений.

Функции системы линейных координат Oracle Spatial (Oracle Spatial LRS) требуют, чтобы все значения измерений в геометрии были монотонно возрастающими или монотонно убывающими без значений NaN. Пространственная система линейных координат Oracle (Oracle Spatial LRS) также ограничивает значения измерений до ломаных линий (linestrings).

ArcGIS позволяет проводить измерения и вычисления LRS на всех типах геометрии, с поддержкой для произвольно заданных значений измерений и значений NaN.

Если вы собираетесь пользоваться функциями Oracle Spatial LRS, настройте ваши приложение и базу данных для работы в условиях ограничений, налагаемых Oracle Spatial LRS.

В пространственной таблице ArcGIS требуется уникальный идентификатор объектов для того, чтобы выполнять пространственные запросы, запросы к файлам журнала, а также для выполнения операций в одну строку (single-row operations) и операций с версионными базами данных (versioned database operations).

В сжатой двоичной схеме ArcSDE для этой цели может служить столбец геометрии, поскольку он является внешним ключом к таблице пространственных объектов и определяется как уникальное целочисленное значение, отличное от NULL. SDO_GEOMETRY не имеет уникального значения идентификации, поэтому когда ArcGIS добавляет в имеющуюся таблицу столбец SDO_GEOMETRY, он также может добавить и уникальный столбец идентификации. Такой столбец является зарегистрированным столбцом идентификатора строки. Этот столбец часто называют OBJECTID, но он может иметь и другое имя. Имеющийся столбец также может быть использован взамен зарегистрированного столбца идентификатора строки, пока он индексируется и является целочисленным, уникальным и не NULL. Зарегистрированные столбцы идентификатора строки, поддерживаемые ArcGIS, должны быть NUMBER(38) UNIQUE (уникальными) и NOT NULL (кроме NULL).

Зарегистрированный столбец идентификатора строки может быть добавлен при помощи административной команды sdetable или при помощи приложения ArcCatalog. Многие приложения, такие как ArcGIS, требуют, чтобы зарегистрированный столбец идентификатора строки был в каждой таблице или классе объектов. Каждое приложение имеет свои требования и ограничения.

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

ArcGIS может создавать и поддерживать сети и интегрированные топологические классы пространственных объектов из простых классов пространственных объектов, которые используют тип геометрии SDO_GEOMETRY. ArcGIS находит применение отношениям и ограничениям во многих различных источниках данных. ArcGIS управляет отношениями и поддерживает топологическую целостность данных; изменения через ArcGIS объектов, лежащих в основе этих данных, находит отражение в упомянутых выше интегрированных сетях, топологиях и отношениях.

Изменение классов пространственных объектов Oracle Spatial, участвующих в сетях, топологии, отношениях и ограничениях, должно быть ограничено приложениями ArcGIS. Другие приложения могут с легкостью читать эти данные, но вносимые ими изменения некорректно отражаются в базе геоданных.

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

5/10/2014