Тип геометрии ArcGIS и PostGIS
PostGIS – это продукт, который расширяет возможности базы данных PostgreSQL для работы с пространственными данными. PostGIS соответствует спецификации простых объектов (Simple Features specification) для языка SQL, разработанной Open Geospatial Consortium, Inc. (OGC). В этом продукте используется стандартные двоичные (WKB) и текстовые (WKT) представления геометрии.
В PostGIS имеется два пространственных типа: geometry и geography. В ArcGIS поддерживается только тип geometry.
При использовании типа хранения geometry в PostGIS с ArcGIS нужно учесть следующее:
- Нужно использовать шаблон базы данных PostGIS для создания базы данных PostgreSQL, используемой для базы геоданных, или активировать PostGIS в базе данных. См. раздел "Подготовка базы данных к использованию геометрии PostGIS".
- Пользователь sde и любой пользователь, создающий данные в базе геоданных, должен получить разрешения для используемых таблиц PostGIS. См. раздел "Предоставление пользователям прав на создание таблиц со столбцами геометрии PostGIS".
- Классы создаваемых пространственных объектов могут использовать только пространственные привязки, перечисленные в таблице PostGIS public.spatial_ref_sys. Если указана привязка, не перечисленная в таблице, класс объектов создан не будет.
- Следует указать ключевое слово конфигурации, которое содержит параметр GEOMETRY_STORAGE, присвоенный для PG_GEOMETRY, чтобы создать класс объекта, использующий тип геометрии PostGIS.
- Нельзя переименовывать пространственные таблицы, сохраненные с использованием типа геометрии PostGIS. Данное ограничение связано с тем, что не существует функции PostGIS для обновления имени таблицы в public.geometry_columns.
В следующих разделах представлена более подробная информация об использовании типа хранения геометрии PostGIS в приложениях ArcGIS.
Подготовка базы данных к использованию геометрии PostGIS
Для использования типа геометрии PostGIS следует установить PostGIS. PostGIS устанавливается после установки PostgreSQL. Убедитесь, что вы установили версию PostGIS, поддерживаемую версией ArcGIS, с которой вы работаете.
См. страницу системных требований к базе данных в Центре ресурсов ArcGIS чтобы узнать, какие версии PostGIS поддерживаются используемой вами версией ArcGIS.
При установке PostGIS создается шаблон базы данных PostGIS в кластере базы данных PostgreSQL. Используйте шаблон базы данных PostGIS для создания базы данных, в которой будет храниться ваша база геоданных.
Если база геоданных создается с использованием инструмента геообработки Создать многопользовательскую базу геоданных (Create Enterprise Geodatabase), ваша база данных будет создана с использованием шаблона, отличающегося от шаблона PostGIS. Поэтому, если вы хотите использовать тип геометрии PostGIS, следует создать базу данных вручную, используя шаблон PostGIS. После этого при запуске инструмента геообработки Создать многопользовательскую базу геоданных (Create Enterprise Geodatabase) можно выбрать существующую базу данных, в которой будет создана база геоданных.
Предоставление пользователям прав на создание таблиц со столбцами геометрии PostGIS
Если для базы данных разрешено использование PostGIS, в общей схеме будут созданы две таблицы – geometry_columns и spatial_ref_sys. Как минимум, нужно выдать права SELECT, INSERT, UPDATE и DELETE для столбцов таблицы geometry_columns, а также выбрать SELECT для таблицы spatial_ref_sys для пользователя sde и всех пользователей, которые будут создавать данные в базе геоданных.
GRANT select, insert, update, delete
ON TABLE public.geometry_columns
TO <user_name>;
GRANT select
ON TABLE public.spatial_ref_sys
TO <user_name>;
Создание классов пространственных объектов в базе геоданных PostgreSQL с использованием формата хранения PostGIS geometry
После разрешения использования геометрии PostGIS в базе данных вы можете создавать таблицы для хранения пространственной информации, которые содержат столбец геометрии (пространственный столбец). Географические (пространственные) объекты хранятся в пространственных столбцах.
Доступ к таблицам для хранения пространственных данных осуществляется через ArcGIS for Desktop или путем создания приложений, использующих программный интерфейс (API) для приложений ArcSDE C. Опытные программисты SQL также могут использовать вызов пространственных функций.
Создание классов пространственных объектов с использованием ArcGIS
Тип хранения geometry, используемый для классов пространственных объектов, созданных с помощью ArcGIS, контролируется путем настройки параметров в таблице sde_dbtune. Этот параметр имеет название GEOMETRY_STORAGE. В базах геоданных, работающих в базах данных PostgreSQL, используют один из двух типов хранения геометрии: ST_GEOMETRY или PG_GEOMETRY (значение параметра типа хранения PostGIS geometry). Таким образом, если нужно создать класс объектов с использованием ArcGIS на базе типа хранения PostGIS geometry, следует указать ключевое слово конфигурации, которое содержите параметр GEOMETRY_STORAGE со значением PG_GEOMETRY.
По умолчанию для хранения данных геометрии для новых классов объектов в базе геоданных ArcSDE для PostgreSQL используется ST_Geometry. Если нужно сохранить большинство данных с типом хранения PostGIS, измените параметр GEOMETRY_STORAGE в ключевом слове DEFAULTS в таблице sde_dbtune на PG_GEOMETRY. (Используйте команду sdedbtune, чтобы изменить параметры в таблице sde_dbtune. Более подробно о применении этой команды см. в Руководстве по командам администрирования ArcSDE (ArcSDE Administration Command Reference). Если вы хотите хранить только часть ваших классов пространственных объектов, используя тип геометрии PostGIS, то вы можете указать ключевое слово PG_GEOMETRY при создании класса пространственных объектов. В файле dbtune.sde, который можно создать путем экспорта содержимого таблицы sde_dbtune с помощью команды sdedbtune, ключевое слово PG_GEOMETRY будет иметь следующий вид:
##PG_GEOMETRY GEOMETRY_STORAGE "PG_GEOMETRY" UI_TEXT "User Interface text description for POSTGIS geometry storage" END
Остальные параметры хранения будут взяты из ключевого слова DEFAULTS. Более подробную информацию о sde_dbtune можно найти в следующих разделах:
Использование существующих таблиц PostGIS
ArcGIS может использовать таблицы, содержащие столбцы геометрии формата PostGIS, созданные вне ArcGIS другими приложениями или при помощи SQL (которые иногда называют таблицами третьих лиц) при условии, что эти таблицы соответствуют следующим условиям.
- Каждая таблица должна содержать один столбец геометрии. Если нет, определите слой запроса или представление, которые будут содержать только один пространственный столбец.
- Таблицы не должны иметь других столбцов, тип которых задается пользователем.
- Таблицы должны иметь один тип геометрии (точки, линии или полигоны), при этом геометрия может быть составной.
- В каждой таблице необходимо наличие столбца с целочисленными, уникальными значениями (не NULL), которые можно использовать в качестве идентификатора строки.
- В каждой таблице должен присутствовать пространственный индекс.
Сведения о создании таблиц со столбцом PostGIS с помощью SQL находятся в документации к PostGIS.
Регистрация сторонних таблиц, содержащих столбцы геометрии PostGIS
Можно подключиться к базе данных PostgreSQL, содержащей таблицы PostGIS, через ArcGIS for Desktop и зарегистрировать их в базе геоданных. Дополнительную информацию см. в разделе Регистрация таблицы в базе геоданных.
Где найти документацию по PostGIS и PostgreSQL
Документацию PostGIS можно найти на сайте PostGIS: http://www.postgis.org/documentation/.
Общие сведения о PostgreSQL можно найти в документации на веб-сайте PostgreSQL: http://www.postgresql.org/docs/.