Skip to main content

Добавление типа 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, выполните следующие шаги:

  1. Загрузите сжатый файл ST_Geometry из My Esri.

    Сжатые файлы зависят от версии программного обеспечения ArcGIS, с помощью которой вы создадите пространственный тип.

    Если опция загрузки отсутствует, свяжитесь с администратором вашей организации ArcGIS.

  2. Извлеките содержимое файла.

    Примечание:

    Библиотеки st_geometry предназначены для определенных операционных систем и версий PostgreSQL. Убедитесь, что вы скопировали правильную библиотеку.

  3. Поместите файл 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 в директорию PostgreSQL lib вместе с библиотекой st_geometry.so.

  4. Откройте проект в ArcGIS Pro, откройте панель Каталог и подключите базу данных от имени superuser PostgreSQL.

    Файл подключения к базе данных (.sde) создан в вашей папке проекта.

  5. Откройте инструмент Создать пространственный тип.

    Вы можете воспользоваться окном Поиск для поиска инструмента или открыть его из группы инструментов Рабочая область набора инструментов Управление данными.

  6. Добавьте подключение к базе данных, созданное на шаге 2, в текстовое поле параметра Входное подключение к базе данных.

  7. Введите пароль пользователя базы данных sde в поле параметра Пароль пользователя SDE.

    Подсказка:

    Если в кластере баз данных PostgreSQL уже есть роль входа sde, пароль, который вы предоставляете, должен соответствовать паролю существующей роли входа sde. Например, если у вас есть многопользовательская база геоданных в том же кластере баз данных, роль sde уже будет существовать, и вы должны использовать здесь пароль для нее.

  8. Оставьте поле параметра Имя табличного пространства пустым.

  9. Щелкните Запустить.

Тип ST_Geometry, подтипы и функции создаются в схеме пользователя sde указанной вами базы данных.

Использование функций ArcPy

На любом компьютере с ArcGIS Pro или ArcGIS Server используйте функцию ArcPy CreateDatabaseConnection для создания файла подключения к базе данных (.sde), который подключается к базе данных PostgreSQL в качестве суперпользователя PostgreSQL. Затем используйте файл .sde и функцию ArcPy CreateSpatialType для создания типа ST_Geometry, подтипа и функций в базе данных.

  1. Скачайте st_geometry библиотеку с My Esri и поместите её в каталог PostgreSQL lib.

    Примечание:

    Если ваша операционная система Linux не включает libstdcc++.so.6.0.29 или более поздний выпуск библиотеки, также загрузите библиотеку libstdcc++.so.6 для PostgreSQL из My Esri и поместите ее в директорию PostgreSQL lib вместе с библиотекой 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 на сервере.

  2. Запустите функцию 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"
    )
    
  3. Запустите функцию ArcPy CreateSpatialType для установки типа ST_Geometry в экземпляре PostgreSQL.

    В этом примере используется файл подключения с предыдущего шага, а пароль sde установлен на pw0rd4sde.

    import arcpy
    arcpy.management.CreateSpatialType(
       "suserconnection.sde",
       "pw0rd4sde"
    )
    
    

Тип ST_Geometry, подтипы и функции создаются в схеме пользователя sde в базе данных, указанной в файле подключения к базе данных.