Вы можете использовать язык структурированных запросов (SQL) для системы управления базами данных (СУБД), типы данных и форматы таблиц для работы с информацией, хранящейся в базе геоданных или базе данных, в которой был установлен тип ST_Geometry. SQL – это язык баз данных, который поддерживает определение данных и команды для управления данными.
Доступ к данным с помощью SQL позволяет внешним приложениям работать с табличными данными, управляемыми базой геоданных или базой данных. Эти внешние приложения могут быть непространственными приложениями базы данных или пользовательскими пространственными приложениями, разработанными в среде, отличной от ArcObjects.
При вставке или редактировании данных в базе геоданных или базе данных, используя SQL, выполните выражение COMMIT или ROLLBACK после того, как было выполнено выражения SQL, чтобы убедиться, что изменения применены к базе данных или были отменены. Это поможет предотвратить блокировку строк, страниц или таблиц, которые вы редактируете.
Вставка данных ST_Geometry с помощью SQL
Вы можете использовать SQL для вставки данных в таблицу базы данных или базы геоданных, имеющей столбец ST_Geometry. Используйте функции конструктора ST_Geometry, чтобы вставить разные типы геометрии. Вы также можете указать, какие выходные данные будут помещены в существующую таблицу после работы определенных функций пространственных операций.
При вставке геометрии в таблицу через SQL, учитывайте следующее:
- Необходимо задать действительный ID пространственной привязки (SRID).
- Чтобы продолжить использование таблицы в ArcGIS, поле для ObjectID не должно быть пустым.
Идентификаторы пространственной привязки (SRID)
SRID, указанный при вставке геометрии в таблицу Oracle, которая использует пространственный тип ST_Geometry, должен быть в таблице ST_SPATIAL_REFERENCES и иметь соответствующую запись в таблице SDE.SPATIAL_REFERENCES. SRID, указанный при вставке геометрии в таблицу PostgreSQL, которая использует пространственный тип ST_Geometry, должен быть в таблице public.sde_spatial_references. Начиная с версии ArcGIS 10.1, эти таблицы предварительно заполнены значениями пространственных привязок и SRID.
SRID, указанный при вставке геометрии в таблицу SQLite, которая использует пространственный тип ST_Geometry (geometryblob), должен быть в таблице st_spatial_reference_systems.
Если вам нужно применить пользовательскую пространственную привязку, которая не представлена в таблице, наиболее простой способ выполнить это – использовать ArcGIS Desktop, чтобы загрузить или создать класс объектов с желаемыми значениями пространственной привязки. Убедитесь, что в созданном классе объектов используется тип хранения ST_Geometry. Это приведет к созданию записи в SDE.SPATIAL_REFERENCES и таблице ST_SPATIAL_REFERENCES, если используется СУБД Oracle, в таблице public.sde_spatial_references, если используется СУБД PostgreSQL, или записи в таблице st_aux_spatial_reference_systems_table в SQLite.
В базах геоданных, чтобы определить идентификатор SRID, назначенный определенному слою, следует выполнить запрос к таблице LAYERS (Oracle) или sde_layers в (PostgreSQL). Затем этот идентификатор SRID можно использовать при создании пространственных таблиц и добавления данных с помощью SQL.
Вы также можете добавить пространственную привязку в таблицу ST_SPATIAL_REFERENCES или sde_spatial_references с помощью SQL. Более подробную информацию см. в разделе Создание пространственных привязок с помощью SQL.
Дополнительные сведения об идентификаторах SRID и пространственной привязке см. в разделах Что такое SRID? и Пространственные привязки.
идентификаторы ObjectID
Для запроса данных в ArcGIS требуется, чтобы таблица содержала поле уникального идентификатора.
Классы пространственных объектов, созданные в ArcGIS, всегда имеют поле ObjectID в качестве поля идентификатора. При вставке записей в класс пространственных объектов в ArcGIS, в поле ObjectID всегда вставляется уникальное значение. Поле ObjectID в таблице базы геоданных, поддерживается ArcGIS. Поле ObjectID в таблице базы данных, создается из ArcGIS и поддерживается СУБД.
Если вы вставляете записи в таблицу базы геоданных, используя SQL, необходимо использовать функцию Next_RowID, чтобы получить уникальное значение для поля ObjectID. При использовании SQL для вставки записей в таблицу базы данных, созданную в ArcGIS, СУБД заполняет значениями поле ObjectID.
Таблицы базы данных, созданные не в ArcGIS, должны иметь поле (или набор полей), которое ArcGIS может использовать как ObjectID. Если вы применяете родной для базы данных автоинкрементный тип данных для поля ID в вашей таблице, то это поле будет заполняться СУБД, когда вы вставляете запись с помощью SQL. Если вы вручную вносите значения в поле уникального идентификатора, убедитесь при редактировании таблицы из SQL, что все ID уникальны.
Дополнительные сведения см. в разделе Что такое ObjectID?.
Изменение данных ST_Geometry с помощью SQL
Изменения через SQL в существующих файлах часто влияют на непространственные атрибуты, хранящиеся в таблице; однако вы можете внести изменения в данные столбца ST_Geometry с помощью функций конструктора в рамках SQL-выражений UPDATE.
Если данные хранятся в базе геоданных, изучите дополнительные советы, рекомендуемые при редактировании с SQL:
- Не обновляйте записи, используя SQL, если данные были зарегистрированы как версионные. Это можно делать, только если вы используете SQL в сочетании с версионным представлением.
- Не изменяйте никакие атрибуты, которые влияют на другие объекты в базе данных, для которых используются правила поведения в базе геоданных, например, классы отношений, объектно-связанные аннотации, топологии или сети.