Добавление типа ST_Geometry в базу данных PostgreSQL
Доступно с лицензией Standard или Advanced.
Чтобы использовать тип ST_Geometry для хранения пространственных данных в базе данных PostgreSQL, администратор базы данных может запустить инструмент геообработки Создать пространственный тип или скрипт Python, который вызывает функцию ArcPy CreateSpatialType для добавления типа, его подтипов и функций в базу данных.
Подсказка:
Если вы использовали инструмент геообработки Создать многопользовательскую базу геоданных с параметром Пространственный тип, установленным на PostGIS, для создания базы геоданных в PostgreSQL, и позже решили добавить тип ST_Geometry в эту базу геоданных, вы можете запустить инструмент Создать пространственный тип, чтобы добавить ST_Geometry в эту базу геоданных. Во всех других случаях следует использовать инструмент Создать пространственный тип в базе данных.
Инструмент Создать пространственный тип и функция выполняет следующие действия:
Создает роль учетной записи sde в кластере базы данных PostgreSQL.
Присваивает пользователю sde права суперпользователя (они могут быть отозваны после создания типа ST_Geometry).
Создайте в базе данных схему с именем sde.
Присваивает пользователю sde все права для схемы sde.
Выдайте права
USAGEк схеме sde для группы персональных учетных записей. Вы можете отозвать данное право доступа, но должны присвоить правоUSAGEсхемы sde всем пользователям, нуждающимся в доступе к типу, подтипам или функциям ST_Geometry.Создает необходимые функции, домены, таблицы (sde_coordinate_systems и sde_geometry_columns), виды (st_geometry_columns и st_spatial_references) в схеме sde, а также таблицу sde_spatial_references в общей схеме.
Перед запуском инструмента или функции необходимо скопировать библиотеку st_geometry на сервер PostgreSQL.
Примечание:
При развертывании на сервере Microsoft Windows, для файла st_geometry.dll требуется Microsoft Visual C++ Redistributable Package (x64). См. Требования ArcGIS к базе данных PostgreSQL, чтобы узнать о требующейся версии пакета. Если данный пакет отсутствует на сервере PostgreSQL, загрузите его с сайта Microsoft и выполните установку.
Использование инструмента геообработки Создать пространственный тип
Чтобы запустить инструмент геообработки Создать пространственный тип для установки типа ST_Geometry в базу данных PostgreSQL, выполните следующие шаги:
Загрузите сжатый файл ST_Geometry из My Esri.
Сжатые файлы зависят от версии программного обеспечения ArcGIS, с помощью которой вы создадите пространственный тип.
Если опция загрузки отсутствует, свяжитесь с администратором вашей организации ArcGIS.
Извлеките содержимое файла.
Примечание:
Библиотеки st_geometry предназначены для определенных операционных систем и версий PostgreSQL. Убедитесь, что вы скопировали правильную библиотеку.
Поместите файл st_geometry в директорию PostgreSQL
lib.Если PostgreSQL установлен на сервере Windows, поместите файл
st_geometry.dllв директорию%PostgreSQL%\libна сервере.Местоположение директории
libв Linux может меняться в зависимости от способа установки PostgreSQL. Чтобы определить корректное местоположение для установки PostgreSQL, выполните командуpg_configв качестве пользователя postgres. Значение, возвращаемое для PKGLIBDIR, является директориейlib, в которую необходимо поместить файлst_geometry.so. Войдите в систему как пользователь root, чтобы скопировать этот файл в местоположениеlib.
Примечание:
Если ваша операционная система Linux не включает
libstdcc++.so.6.0.29или более поздний выпуск библиотеки, также поместите библиотекуlibstdcc++.so.6в директорию PostgreSQLlibвместе с библиотекойst_geometry.so.Откройте проект в ArcGIS Pro, откройте панель Каталог и подключите базу данных от имени superuser PostgreSQL.
Файл подключения к базе данных (
.sde) создан в вашей папке проекта.Откройте инструмент Создать пространственный тип.
Вы можете воспользоваться окном Поиск для поиска инструмента или открыть его из группы инструментов Рабочая область набора инструментов Управление данными.
Добавьте подключение к базе данных, созданное на шаге 2, в текстовое поле параметра Входное подключение к базе данных.
Введите пароль пользователя базы данных sde в поле параметра Пароль пользователя SDE.
Подсказка:
Если в кластере баз данных PostgreSQL уже есть роль входа sde, пароль, который вы предоставляете, должен соответствовать паролю существующей роли входа sde. Например, если у вас есть многопользовательская база геоданных в том же кластере баз данных, роль sde уже будет существовать, и вы должны использовать здесь пароль для нее.
Оставьте поле параметра Имя табличного пространства пустым.
Щелкните Запустить.
Тип ST_Geometry, подтипы и функции создаются в схеме пользователя sde указанной вами базы данных.
Использование функций ArcPy
На любом компьютере с ArcGIS Pro или ArcGIS Server используйте функцию ArcPy CreateDatabaseConnection для создания файла подключения к базе данных (.sde), который подключается к базе данных PostgreSQL в качестве суперпользователя PostgreSQL. Затем используйте файл .sde и функцию ArcPy CreateSpatialType для создания типа ST_Geometry, подтипа и функций в базе данных.
Скачайте
st_geometryбиблиотеку с My Esri и поместите её в каталог PostgreSQLlib.Примечание:
Если ваша операционная система Linux не включает
libstdcc++.so.6.0.29или более поздний выпуск библиотеки, также загрузите библиотекуlibstdcc++.so.6для PostgreSQL из My Esri и поместите ее в директорию PostgreSQLlibвместе с библиотекойst_geometry.so.Библиотеки st_geometry различаются для разных операционных систем, версий PostgreSQL и версий ArcGIS.
Местоположение директории
libв Linux может меняться в зависимости от способа установки PostgreSQL. Чтобы определить корректное местоположение для установки PostgreSQL, выполните командуpg_configв качестве пользователя postgres. Значение, возвращаемое для PKGLIBDIR, является директориейlib, в которую необходимо поместить файлst_geometry.so. Войдите в систему как пользователь root, чтобы скопировать этот файл в местоположениеlib.Если PostgreSQL установлен на сервере Windows, поместите файл
st_geometry.dllв директорию%PostgreSQL%\libна сервере.
Запустите функцию
CreateDatabaseConnectionдля создания файла.sde.Вы должны подключиться в качестве суперпользователя PostgreSQL и сохранить учетные данные.
В следующем примере файл подключения создается в директории с именем TempFiles, имя файла подключения — suserconnection.sde, учетные данные предоставляются для суперпользователя и сохраняются вместе с файлом для подключения к базе данных с именем pgdb в кластере баз данных pginstance.
import arcpy arcpy.management.CreateDatabaseConnection( "/user/TempFiles", "suserconnection.sde", "POSTGRESQL", "pginstance", "DATABASE_AUTH", "postgres", "Cl@rkK3nt", "SAVE_USERNAME", "pgdb" )Запустите функцию ArcPy
CreateSpatialTypeдля установки типа ST_Geometry в экземпляре PostgreSQL.В этом примере используется файл подключения с предыдущего шага, а пароль sde установлен на pw0rd4sde.
import arcpy arcpy.management.CreateSpatialType( "suserconnection.sde", "pw0rd4sde" )
Тип ST_Geometry, подтипы и функции создаются в схеме пользователя sde в базе данных, указанной в файле подключения к базе данных.