Skip to main content

Создание базы геоданных в PostgreSQL на Linux

Доступно с лицензией Standard или Advanced.

Чтобы создать базу геоданных в базе данных PostgreSQL, запустите инструмент геообработки или скрипт Python из клиента ArcGIS.

При создании базы геоданных с помощью ArcGIS Pro версии 3.7, версия этой базы геоданных будет 12.1.0.x.

Начните с чтения требований, а затем выполните действия, соответствующие вашей ситуации.

Эти инструкции применяются к установкам PostgreSQL на сервере Linux. Если PostgreSQL установлен на сервере Microsoft Windows Server, см. Создание базы геоданных в PostgreSQL на Windows.

Предварительные условия

Прежде чем создавать базу геоданных в PostgreSQL, сделайте следующее:

  1. Убедитесь в том, что используемые вами версии ArcGIS, PostgreSQL и операционной системы поддерживаются.

  2. Получите файл ключей ArcGIS Server и поместите его в такое место, где он будет доступен для клиента ArcGIS, который будет использоваться для создания базы геоданных.

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

    Одна из системных таблиц базы геоданных создается в общедоступной схеме.

  4. Определите, кто будет создавать базу геоданных, поскольку это влияет на то, кто создает базу данных и каким инструментом вы пользуетесь. Используйте инструкции, подходящие для вашей ситуации:

Вы администратор PostgreSQL и базы геоданных

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

Инструмент Создать многопользовательскую базу геоданных создает объекты базы данных, необходимые для базы геоданных, и предоставляет вам необходимые права. Для этого используются специальные настройки по умолчанию. Ниже описывается инструмент Создать многопользовательскую базу геоданных и используемые им настройки:

  • Он создает базу данных с помощью шаблона PostgreSQL по умолчанию (template1).

    Если вы хотите создать базу данных с помощью другого шаблона – например, использовать шаблон, определенный для вашего кластера базы данных – вам следует создать базу данных до запуска этого инструмента. Затем, при запуске инструмента Создать многопользовательскую базу геоданных или скрипта укажите имя базы данных, которую вы создали.

  • Он создает роль учетной записи sde с проверкой подлинности базы данных в кластере баз данных и предоставляет ей статус superuser.

    Пользователь sde должен иметь статус superuser для создания базы геоданных.

  • Он создает схему sde в базе данных.

    Системные таблицы базы геоданных, представления, функции и процедуры хранятся в схеме sde.

  • Он задает пользователя sde как владельца схемы sde и предоставляет в схеме sde права usage для роли public.

    Роли учетных записей, которые будут работать с базой геоданных, должны иметь доступ к схеме sde. Поскольку роли учетных записей базы геоданных скорее всего еще отсутствуют, инструмент предоставляет право usage для public. После создания базы геоданных, вы можете повысить защищенность базы геоданных, отозвав в схеме sde право usage у public, и предоставив usage только тем ролям и группам, которым требуется доступ к базе геоданных.

  • Он создает базу геоданных.

Сначала вам (или сотруднику вашего ИТ‑отдела) необходимо установить PostgreSQL и настроить кластер базы данных.

Установка и конфигурация PostgreSQL

Выполните эти шаги, чтобы настроить кластер базы данных PostgreSQL для хранения базы геоданных:

  1. Получите, установите поддерживаемую версию PostgreSQL и настройте кластер базы данных.

    Инструкции по установке и настройке PostgreSQL см. в Документации PostgreSQL.

  2. Настройте кластер базы данных на прием подключений.

    Измените файл pg_hba.conf, чтобы кластер базы данных разрешил прием удаленных подключений.

  3. Создайте табличное пространство в кластере базы данных, в которой будет храниться база данных. Если табличное пространство не создано, будет использовано пространство pg_default.

Затем установите и настройте клиента ArcGIS.

Предоставление доступа к пространственному типу

PostgreSQL должен иметь доступ к пространственному типу для хранения базы геоданных. Вы можете предоставить кластеру баз данных доступ к пространственному типу Esri ST_Geometry или установить PostGIS.

Когда кластер баз данных имеет доступ к пространственному типу, вы можете создать базу геоданных.

ST_Geometry

Для использования ST_Geometry в базе геоданных, разместите файл st_geometry.so в директории PostgreSQL lib. Местоположение директории lib в Linux может меняться в зависимости от способа установки PostgreSQL. Чтобы определить корректное местоположение для установки PostgreSQL, запустите pg_config в качестве пользователя postgres. Значение, возвращаемое для PKGLIBDIR, является директорией lib, в которую необходимо поместить библиотеку st_geometry.

Вы можете скачать файл st_geometry.so из My Esri.

ST_Geometry требуется наличие библиотеки libstdcc++.so.6.0.29 или более поздней версии. Если компьютер, на котором установлен PostgreSQL, не включает эту библиотеку, скачайте libstdcc++.so.6 библиотеку PostgreSQL на My Esri.

Как пользователь root, поместите файл библиотеки st_geometry.so, соответствующий используемой версии PostgreSQL, в директорию PostgreSQL lib. Если вы не разместите корректную библиотеку st_geometry.so в директории PostgreSQL lib, вы не сможете создать базу геоданных. Если нужно, поместите файл libstdcc++.so.6 в ту же папку.

Кластер базы данных и клиент ArcGIS теперь готовы для создания базы геоданных.

PostGIS

Чтобы использовать пространственные типы PostGIS в базе геоданных, установите PostGIS в кластер базы данных PostgreSQL. Убедитесь, что вы установили версию PostGIS, поддерживаемую ArcGIS.

Установка клиента ArcGIS

Вы (или кто-то из вашего IT-отдела) должны установить ArcGIS Pro (Standard или Advanced) или ArcGIS Server. Вы можете запустить скрипт Python для создания базы геоданных через любой из этих клиентов. Чтобы запустить инструмент геообработки Создать многопользовательскую базу геоданных вместо скрипта, установите ArcGIS Pro.

Примечание:

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

Создание базы геоданных

Запустите инструмент ArcGIS Pro Создать многопользовательскую базу геоданных или запустите скрипт Python, который вызывает инструмент с компьютера ArcGIS Pro или ArcGIS Server для создания базы геоданных.

Запустить инструмент Создать многопользовательскую базу геоданных

Следуйте приведенным шагам по созданию базы геоданных с помощью инструмента ArcGIS Pro Создать многопользовательскую базу геоданных:

  1. Запустите ArcGIS Pro.

  2. Откройте инструмент Создать многопользовательскую базу геоданных.

    Этот инструмент вы найдете в группе инструментов Администрирование баз геоданных набора инструментов Управление данными. Для основной информации об открытии инструментов геообработки см. Поиск инструмента геообработки.

  3. В раскрывающемся списке Платформа базы данных выберите PostgreSQL.

  4. Введите имя сервера PostgreSQL в поле Экземпляр.

  5. В поле База данных введите имя базы данных, которую вы хотите создать для хранения базы геоданных.

    Примечание:

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

  6. Необходимо подключиться к кластеру базы данных как суперпользователь postgres, чтобы создать базу данных и другие объекты, поэтому, в поле Администратор базы данных по умолчанию указано имя postgres.

    Если суперпользователь имеет другое имя, введите его в поле Администратор базы данных.

    В этом выпуске нельзя использовать логин superuser postgres с проверкой подлинности операционной системы.

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

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

    Подсказка:

    Администратор базы геоданных должен использовать имя sde в PostgreSQL, поэтому в поле Администратор базы геоданных уже указано sde.

    Если пользователь sde уже есть в кластере базы данных, введите пароль этого пользователя, и схема sde будет создана в базе данных. Если пользователь sde еще не создан, пользователь с именем sde и заданным вами паролем будет создан в кластере базы данных, а в базе данных будет создана соответствующая схема. Разрешение usage в схеме sde задается для группы public.

    Подсказка:

    Чтобы сделать схему более защищенной, можно отозвать usage у роли public, создать новую роль, присвоить usage этой роли в схеме sde, а затем предоставить групповую роль всем подключающимся ролям, которым необходим доступ к базе геоданных.

  9. Если у вас есть настроенная табличная область, которую вы хотите использовать как табличную область для базы данных по умолчанию, введите имя этой области в поле Имя табличной области.

    Этот инструмент не создает табличное пространство, необходимо либо задать имеющееся, либо оставить это поле пустым. Если вы не указали табличное пространство, база данных будет создана в пространстве pg_default.

  10. Чтобы указать Файл авторизации, выберите файл ключей, который был создан при авторизации ArcGIS Server.

    Этот файл записывается в \\Program Files\ESRI\License<release#>\sysgen при установке ArcGIS Server на Windows и в /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen при установке ArcGIS Server на Linux. Скопируйте этот файл в местоположение, доступное для того клиента, из которого вы создадите базу геоданных. Если вы ещё не сделали этого, авторизуйте ArcGIS Server сейчас, чтобы создать этот файл.

  11. Используйте ниспадающий список Пространственный тип, чтобы выбрать пространственный тип, который будет использоваться базой геоданных: ST_Geometry или PostGIS.

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

Теперь у вас есть база геоданных в базе данных PostgreSQL.

Вы можете найти сообщения, относящиеся к созданию базы геоданных, в файле sde_setup.log, который создается в директории, указанной для переменной TEMP, на том компьютере, где запущен этот скрипт. При наличии проблем с созданием базы геоданных изучите этот файл журнала для их устранения.

Затем вы можете создать пользователя, который будет загружать данные в базу геоданных.

Запуск скрипта Python с компьютера клиента ArcGIS

Вы можете скопировать, сохранить и запустить указанный здесь скрипт для создания базы геоданных из ArcGIS Pro (Standard или Advanced) или компьютера ArcGIS Server.

Подсказка:

Сведения о запуске Python с компьютера ArcGIS Server см. в разделе ArcGIS Server и ArcPy.

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

    """
    Name: create_enterprise_gdb.py
    Description: Create an enterprise geodatabase in PostgreSQL with provided DBMS connection information
    Author: Esri
    """
    # Import system modules
    import arcpy, os
    # Local variables
    # Replace license path with keycodes file location at your site
    # Replace all arcpy.management.CreateEnterpriseGeodatabase values except "POSTGRESQL", "sde", and license with information appropriate for your site
    license = os.fsencode("/arcgis/path/to/authorization_file/keycodes")
    try:
      arcpy.management.CreateEnterpriseGeodatabase(
        "POSTGRESQL",
        "pgprod",
        "pggdb",
        "DATABASE_AUTH",
        "postgres",
        "N0pe3king!",
        "",
        "sde",
        "sdepwd2vr9dzmctBuB",
        "gis",
        license,
        "ST_GEOMETRY"
      )
      for i in range(arcpy.GetMessageCount()):
        arcpy.AddReturnMessage(i)
        arcpy.AddMessage("+++++++++\n")
    except:
      for i in range(arcpy.GetMessageCount()):
        arcpy.AddReturnMessage(i)
    
  2. Замените значения, как указано в скрипте.

  3. Сохраните файл с расширением .py.

  4. Запустите скрипт.

    Вы можете найти сообщения, относящиеся к созданию базы геоданных, в файле sde_setup.log, который создается в каталоге, указанном для переменной TEMP или TMP, на том компьютере, где запущен этот скрипт. При наличии проблем с созданием базы геоданных изучите этот файл журнала для их устранения.

Теперь у вас есть база геоданных в базе данных PostgreSQL.

Затем вы можете создать пользователя, который будет загружать данные в базу геоданных.

Администратор PostgreSQL создает базу данных, администратор базы геоданных создает базу геоданных

Если пользователь, создающий базу геоданных, не имеет доступа к паролю администратора базы данных (superuser postgres), администратор базы данных может сам создать базу данных, роль и схему учетной записи sde. Затем администратор базы геоданных может подключиться в базе данных с помощью учетной записи sde и создать базу геоданных с помощью инструмента геообработки Включить многопользовательскую базу геоданных или скрипта Python, вызывающего инструмент.

Инструмент Включить многопользовательскую базу геоданных используют файл подключения к базе данных и создает системные таблицы базы геоданных, представления, функции и процедуры в схеме sde. Перед запуском инструмента администратор базы данных должен настроить в кластере PostgreSQL следующее:

  • Роль учетной записи с именем sde со статусом superuser.

  • База данных.

  • Схема sde в базе данных, для которой учетной записи sde было предоставлено authority.

  • Пространственный тип — библиотека st_geometry должна быть в папке директории установки PostgreSQL lib или в базе данных должен быть настроен PostGIS.

Установка и настройка PostgreSQL и пространственного типа

Сначала администратор базы данных должен подготовить PostgreSQL для хранения базы геоданных.

Чтобы настроить кластер базы данных PostgreSQL в качестве администратора базы данных, выполните следующие действия:

Примечание:

Все имена объектов базы данных должны использовать только символы нижнего регистра.

  1. Получите, установите поддерживаемую версию PostgreSQL и настройте кластер базы данных.

    Инструкции по установке и настройке PostgreSQL см. в Документации PostgreSQL.

  2. Настройте кластер базы данных на прием подключений.

    Измените файл pg_hba.conf, чтобы кластер базы данных разрешил прием удаленных подключений.

  3. Установите следующие переменные среды для пользователя postgres, если они еще не установлены:

    • PGDATA — должен быть задан в процессе установки PostgreSQL. Если нет, задайте его в соответствии с расположением директории data в PostgreSQL. (Он находится в установочной директории PostgreSQL.)

    • PATH — задайте переменную PATH, чтобы она содержала postgresql/bin.

    • LD_LIBRARY_PATH — если вы настроите ST_Geometry type для базы геоданных, задайте переменную LD_LIBRARY_PATH для папки PostgreSQL lib. Местоположение директории lib меняется в зависимости от способа установки PostgreSQL. Чтобы определить корректное местоположение для PostgreSQLinstallation, запустите pg_config в качестве пользователя postgres. Задайте для LD_LIBRARY_PATH значение, необходимое для PKGLIBDIR.

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

  5. Создайте роль учетной записи с именем sde со статусом superuser.

    Подсказка:

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

  6. Создайте базу данных для хранения базы геоданных.

  7. Создайте схему с именем sde в базе данных и убедитесь, что роль учетной записи sde и имеет в ней все права.

  8. Включение пространственного типа данных в базу данных.

    • Для настройки PostGIS в базе данных см. инструкции в Документации PostGIS, затем выполните шаг 10.

    • Для настройки ST_Geometry выполните следующий шаг.

  9. Получите и разместите библиотеку ST_Geometry в директории PostgreSQL lib.

    1. Скачайте пакет ST_Geometry на My Esri.

      Пакеты специфичны для версии ArcGIS, из которой вы будете создавать базу геоданных.

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

    2. Распакуйте содержимое пакета.

    3. Войдите как пользователь root на сервер, где установлен PostgreSQL.

    4. Поместите файл st_geometry.so в директорию lib PostgreSQL.

      Местоположение директории lib в Linux может меняться в зависимости от способа установки PostgreSQL. Чтобы определить корректное местоположение для установки PostgreSQL, запустите pg_config в качестве пользователя postgres. Значение, возвращаемое для PKGLIBDIR, является директорией lib, в которую необходимо поместить библиотеку st_geometry.

    5. Если библиотека libstdcc++.so.6.0.29 или более поздней версии отсутствуют на машине, где установлен PostgreSQL, также поместите файл libstdcc++.so.6 в папку PostgreSQL lib.

  10. Предоставьте администратору базы геоданных информацию о подключении к базе данных.

    Администратор базы геоданных должен знать имя кластера базы данных, имя базы данных и пароль роли sde.

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

Установка клиента ArcGIS

Администратору‏ базы геоданных требуется клиент ArcGIS для создания базы геоданных: либо ArcGIS Pro (Standard или Advanced), либо ArcGIS Server.

Примечание:

Для авторизации базы геоданных в следующем разделе вам потребуется файл ключей ArcGIS Server. Даже если вы не запускаете скрипт Python с компьютера ArcGIS Server для создания базы геоданных, вы должны установить и авторизовать ArcGIS Server для того, чтобы получить файл ключей. Может потребоваться скопировать файл ключей с ArcGIS Server в директорию, к которой есть доступ у инструмента геообработки Включить многопользовательскую базу геоданных.

После того, как клиент ArcGIS установлен, вы можете подключиться к базе данных и создать базу геоданных.

Создание базы геоданных

Администратор базы геоданных может либо запустить инструмент Включить многопользовательскую базу геоданных из ArcGIS Pro (Standard или Advanced), либо запустить скрипт Python из ArcGIS Pro либо ArcGIS Server, который вызывает функцию ArcPy для создания базы геоданных в существующей базе данных.

Запустите инструмент Включить многопользовательскую базу геоданных

Следуйте приведенным шагам по созданию базы геоданных с помощью инструмента Включить многопользовательскую базу геоданных в ArcGIS Pro:

  1. Запустите ArcGIS Pro.

  2. Подключитесь к базе данных PostgreSQL в качестве пользователя sde.

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

  3. Откройте инструмент Включить многопользовательскую базу геоданных.

    Для основной информации об открытии инструментов геообработки см. Поиск инструмента геообработки.

  4. Перетащите новый файл подключения в поле Входная база данных.

  5. Чтобы указать значение Файла авторизации, выберите файл ключей, который был создан при авторизации ArcGIS Server.

    Этот файл записывается в \\Program Files\ESRI\License<release#>\sysgen при установке ArcGIS Server на Windows и в /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen при установке ArcGIS Server на Linux. Скопируйте этот файл в местоположение, доступное для того клиента, из которого вы создадите базу геоданных. Если вы ещё не сделали этого, авторизуйте ArcGIS Server сейчас, чтобы создать этот файл.

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

Теперь у вас есть база геоданных в базе данных PostgreSQL.

Вы можете найти сообщения, относящиеся к созданию базы геоданных, в файле sde_setup.log, который создается в директории, указанной для переменной TEMP, на том компьютере, где запущен этот скрипт. При наличии проблем с созданием базы геоданных изучите этот файл журнала для их устранения.

Затем администратор базы данных может создать роли для входа и соответствующие схемы для пользователей, которые будут создавать, редактировать и просматривать данные, а также создать роли входа для редакторов и вьюеров данных и предоставьте этим пользователям соответствующие права.

Запуск скрипта Python с компьютера клиента ArcGIS

Чтобы создать базу геоданных с помощью скрипта из ArcGIS Pro (Standard или Advanced) или компьютера ArcGIS Server, используйте предоставленный здесь скрипт.

Подсказка:

Сведения о запуске Python с компьютера ArcGIS Server см. в разделе ArcGIS Server и ArcPy.

Выполните следующие шаги, чтобы запустить скрипт Python для создания базы геоданных в существующей базе данных PostgreSQL:

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

    # Name: enable_enterprise_gdb.py
    # Description: Create an enterprise geodatabase in an existing PostgreSQL database
    # Import system modules
    import arcpy, os
    # Local variables
    # Replace paths with those appropriate to your site
    license = "/arcgis/path/to/authorization_file/keycodes"
    tempdir = "/tmp/"
    connection_file_name = "egdb_connection.sde"
    # Check for the .sde file and delete it if present
    connection_file_name_path = os.path.join(tempdir, connection_file_name)
    arcpy.env.overwriteOutput=True
      if os.path.exists(connection_file_name_path):
         os.remove(connection_file_name_path)
    # Create a connection to the geodatabase as the geodatabase administrator
    # Replace "pgprod" with the name of your PostgreSQL instance, "N0L0oking" with the sde password, and "entgdb" with the name of the database
    arcpy.management.CreateDatabaseConnection(
      tempdir,
      connection_file_name,
      "POSTGRESQL",
      "pgprod",
      "DATABASE_AUTH",
      "sde",
      "N0L0oking",
      "SAVE_USERNAME",
      "entgdb"
    )
    # Enable geodatabase
    try:
      arcpy.management.EnableEnterpriseGeodatabase(connection_file_name_path, license)
    except:
      for i in range(arcpy.GetMessageCount()):
        arcpy.AddReturnMessage(i)
    
  2. Замените значения, как указано в скрипте.

  3. Сохраните файл с расширением .py.

  4. Запустите скрипт.

    Вы можете найти сообщения, относящиеся к созданию базы геоданных, в файле sde_setup.log, который создается в каталоге, указанном для переменной TEMP или TMP, на том компьютере, где запущен скрипт. При наличии проблем с созданием базы геоданных изучите этот файл журнала для их устранения.

Теперь у вас есть база геоданных в базе данных PostgreSQL.

Затем администратор базы данных может создать роли для входа и соответствующие схемы для пользователей, которые будут создавать, редактировать и просматривать данные, а также создать роли входа для редакторов и вьюеров данных и предоставьте этим пользователям соответствующие права.