Доступно с лицензией Standard или Advanced.
Настройка базы геоданных зависит от настроек вашего сайта. Используйте инструкции для сценария, подходящего для вас.
- Вы администратор PostgreSQL и базы геоданных.
- Администратор PostgreSQL создает базу данных; администратор базы геоданных создает базу геоданных.
Этот раздел применим только к установке PostgreSQL на сервере Windows. Если PostgreSQL установлен на сервере Linux, см. Настройка базы геоданных в PostgreSQL на Linux.
Вы администратор PostgreSQL и базы геоданных
Если вы играете роль администраторов базы данных и геоданных и, следовательно, знаете пароли обоих ролей учетных записей, вы можете использовать инструмент геообработки Создать многопользовательскую базу геоданных или скрипт Python для создания базы геоданных в PostgreSQL.
Инструмент Создать многопользовательскую базу геоданных облегчает настройку базы геоданных, поскольку создает объекты базы данных и предоставляет вам необходимые права. Для этого используются специальные настройки по умолчанию. Ниже описывается инструмент Создать многопользовательскую базу геоданных и используемые им настройки:
- Он создает базу данных с помощью шаблона PostgreSQL по умолчанию (template1).
Если вы хотите создать базу данных с помощью другого шаблона – например, использовать шаблон postgis – следует создать базу данных до запуска этого инструмента. Затем вы можете запустить инструмент Создать многопользовательскую базу геоданных или скрипт и указать имя предварительно созданной базы данных.
- Он создаст роль учетной записи sde в базе данных и предоставит ей статус superuser.
Пользователь sde должен иметь статус superuser для создания базы геоданных.
- Он создает схему sde в базе данных.
Системные таблицы базы геоданных, представления, функции и процедуры хранятся в схеме sde.
- Он задает пользователя sde как владельца схемы sde и предоставляет в схеме sde права usage для роли public.
Роли учетных записей, которые будут работать с базой геоданных, должны иметь доступ к схеме sde. Поскольку роли учетных записей базы геоданных скорее всего еще отсутствуют, инструмент предоставляет право usage для public. После создания базы геоданных, вы можете повысить защищенность базы геоданных, отозвав в схеме sde право usage у public, и предоставив usage только тем ролям и группам, которым требуется доступ к базе геоданных.
- Он создает базу геоданных.
Сначала необходимо установить PostgreSQL и настроить кластер базы данных.
Настройка PostgreSQL
Выполните эти шаги, чтобы настроить кластер базы данных PostgreSQL для хранения базы геоданных на сервере Windows:
-
Установите поддерживаемую версию PostgreSQL и настройте кластер базы данных.
Вы можете загрузить пакет установки PostgreSQL с My Esri. Если вы воспользуетесь этим пакетом установки, вам не понадобятся другие настройки, отличающиеся от настроек по умолчанию, для использования PostgreSQL с ArcGIS. Необходимо только убедиться, что выбраны правильные языковые настройки и параметры местоположения, если вы не используете эти параметры, заданные по умолчанию. Файлы для установки PostgreSQL можно также получить самостоятельно.
Инструкции по установке и настройке PostgreSQL находятся на веб-сайте PostgreSQL.
- Настройте кластер базы данных на прием подключений.
Измените файл pg_hba.conf, чтобы кластер базы данных разрешил прием удаленных подключений.
- Установите клиента ArcGIS, из которого вы будете создавать базу геоданных.
Обычно база геоданных создается из ArcGIS for Server или ArcGIS for Desktop (Standard или Advanced). Эти клиенты обычно устанавливаются на компьютерах отдельно от кластера базы данных PostgreSQL, но это не обязательно. Помните, что хотя вы можете установить ArcGIS for Server на тот же компьютер, что и PostgreSQL; это не рекомендуется, поскольку СУБД интенсивно использует память и будет конкурировать с ArcGIS Server за ресурсы.
- Если вы хотите использовать ArcGIS for Desktop для создания базы геоданных, загрузите библиотеки libpq клиента PostgreSQL с My Esri и поместите их в папку bin в ArcGIS Desktop. Более подробно см. в разделе Подключение к PostgreSQL.
- Создайте табличное пространство в кластере базы данных, в которой будет храниться ваша база данных. Если табличное пространство не создано, будет использовано пространство pg_default.
Затем установите и настройте клиента ArcGIS.
Настройка клиента ArcGIS
Для создания базы геоданных можно запустить скрипт Python из ArcGIS for Desktop (Стандартный или Дополнительно), ArcGIS Engine Runtime с дополнительным модулем Geodatabase Update или ArcGIS for Server. Если вы хотите запустить инструмент геообработки Создать многопользовательскую базу геоданных вместо скрипта, используйте ArcGIS for Desktop.
Установите клиента ArcGIS, из которого вы будете создавать базу геоданных. Обычно база геоданных создается из ArcGIS for Server или ArcGIS for Desktop (Standard или Advanced).
Теперь ArcGIS установлен, и у вас есть доступ к файлу st_geometry.dll, который нужно разместить на сервере PostgreSQL.
Размещение файла st_geometry.dll
Перед созданием базы геоданных необходимо поместить файл st_geometry.dll в директорию lib на PostgreSQL.
Файлы st_geometry.dll устанавливаются вместе с клиентом ArcGIS. В следующей таблице указано, где в папке установки клиента ArcGIS найти каждую версию файла st_geometry.dll. Необходимо использовать свою библиотеку st_geometry.dll для определенной версии PostgreSQL. Если соответствующая библиотека st_geometry.dll не будет помещена в директорию PostgreSQL lib, вы не сможете создать базу геоданных.
Версия PostgreSQL | Директория установки клиента ArcGIS |
---|---|
PostgreSQL 9.1 | DatabaseSupport\PostgreSQL\9.1\Windows64 |
PostgreSQL 9.2 | DatabaseSupport\PostgreSQL\9.2\Windows64 |
PostgreSQL 9.3 | DatabaseSupport\PostgreSQL\9.3\Windows64 |
Скопируйте файл st_geometry.dll из директории DatabaseSupport ArcGIS в папку lib сервера PostgreSQL.
Кластер базы данных и клиент ArcGIS теперь готовы для создания базы геоданных.
Создание базы геоданных
Для создания базы геоданных вы можете запустить инструмент Создать многопользовательскую базу геоданных из ArcGIS for Desktop или скрипт Python из ArcGIS for Desktop, ArcGIS for Server или клиента ArcGIS Engine.
Запустите инструмент Создать многопользовательскую базу геоданных
Вы можете запустить инструмент Создать многопользовательскую базу геоданных из ArcGIS for Desktop (Standard или Advanced), чтобы создать базу данных и базу геоданных в кластере PostgreSQL.
- Запустите ArcMap или ArcCatalog.
- Откройте инструмент Создать многопользовательскую базу геоданных (Create Enterprise Geodatabase).
Этот инструмент вы найдете в группе инструментов Администрирование баз геоданных набора инструментов Управление данными.
- В раскрывающемся списке Платформа базы данных (Database Platform) выберите PostgreSQL.
- Введите имя сервера PostgreSQL в поле Экземпляр (Instance).
- В поле База данных (Database) введите имя базы данных, которую вы хотите создать для хранения базы геоданных.
- Необходимо подключиться к кластеру базы данных как суперпользователь postgres, чтобы создать базу данных и другие объекты, поэтому, в поле Администратор базы данных (Database Administrator) по умолчанию указано имя postgres. Если суперпользователь postgres имеет другое имя, введите его в поле Администратор базы данных (Database Administrator).
- Введите пароль для суперпользователя postgres в поле Пароль администратора базы данных (Database Administrator Password).
- Введите пароль администратора базы геоданных (пользователя sde) в поле Администратор базы геоданных (Geodatabase Administrator Password).
Если пользователь sde уже есть в кластере базы данных, введите пароль этого пользователя, и схема sde будет создана в базе данных. Если пользователь sde еще не создан, пользователь с именем sde и заданным вами паролем будет создан в кластере базы данных, а в базе данных будет создана соответствующая схема. Разрешение usage в схеме sde задается для группы public.
- Если у вас имеется предварительно настроенная табличная область, которую вы хотите использовать как табличную область для базы данных по умолчанию, введите имя этой области в поле Имя табличной области (Tablespace Name).
Этот инструмент не создает табличное пространство; необходимо либо задать имеющееся, либо оставить это поле пустым. Если вы не указали табличное пространство, база данных будет создана в пространстве pg_default.
- Чтобы указать Файл авторизации (Authorization File), выберите файл keycodes, который был создан при авторизации ArcGIS for Server Enterprise.
Этот файл записывается в папку \\Program Files\ESRI\License<release#>\sysgen в Windows и в папку /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen в Linux. Если данная процедура еще не выполнена, авторизуйте ArcGIS for Server сейчас для создания этого файла.
- Щелкните OK, чтобы запустить инструмент.
Создание базы геоданных (GDBCreateGeodatabase<№>.log) регистрируется в файле журнала, который сохраняется в каталоге, указанном для переменной %TEMP%, на том компьютере, где запущен инструмент.
Теперь у вас есть база геоданных в PostgreSQL.
Затем вы можете создать пользователя, который будет загружать данные в базу геоданных.
Запуск скрипта Python с клиентского компьютера ArcGIS
Вы можете скопировать, сохранить и запустить указанный здесь скрипт для создания базы геоданных из ArcGIS for Desktop (Standard или Advanced), ArcGIS for Server или из клиента ArcGIS Runtime (с дополнительным модулем Geodatabase Update).
-
Создайте текстовый файл на клиентском компьютере ArcGIS и скопируйте следующий скрипт в файл.
""" Name: create_enterprise_gdb.py Description: Provide connection information to a DBMS instance and create an enterprise geodatabase. Type create_enterprise_gdb.py -h or create_enterprise_gdb.py --help for usage """ # Import system modules import arcpy import os import optparse import sys # Define usage and version parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for " + arcpy.GetInstallInfo()['Version'] ) #Define help and options parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQLSERVER', 'ORACLE', 'POSTGRESQL', ''], default="", help="Type of enterprise DBMS: SQLSERVER, ORACLE, or POSTGRESQL.") parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name") parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name: Do not specify for Oracle") parser.add_option ("--auth", dest="Account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive): DATABASE_AUTH, OPERATING_SYSTEM_AUTH. Default=DATABASE_AUTH") parser.add_option ("-U", dest="Dbms_admin", type="string", default="", help="DBMS administrator user") parser.add_option ("-P", dest="Dbms_admin_pwd", type="string", default="", help="DBMS administrator password") parser.add_option ("--schema", dest="Schema_type", type="choice", choices=['SDE_SCHEMA', 'DBO_SCHEMA'], default="SDE_SCHEMA", help="Schema type applies to geodatabases in SQL Server only. Type SDE_SCHEMA to create geodatabase in SDE schema or type DBO_SCHEMA to create geodatabase in DBO schema. Default=SDE_SCHEMA") parser.add_option ("-u", dest="Gdb_admin", type="string", default="", help="Geodatabase administrator user name; Must always be sde for PostgreSQL, sde-schema geodatabases in SQL Server, and master sde geodatabase in Oracle") parser.add_option ("-p", dest="Gdb_admin_pwd", type="string", default="", help="Geodatabase administrator password") parser.add_option ("-t", dest="Tablespace", type="string", default="", help="Tablespace name; For PostgreSQL, type name of existing tablespace in which to store database. If no tablespace name specified, pg_default is used. For Oracle, type name of existing tablespace, or, if tablespace with specified name does not exist, it will be created and set as the default tablespace for the sde user. If no tablespace name is specified, SDE_TBS tablespace is created and set as sde user default. Tablespace name not supported for SQL Server.") parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file; file created when ArcGIS for Server Enterprise authorized, and stored in \\Program Files\ESRI\License<release#>\sysgen on Windows or /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen on Linux") # Check if value entered for option try: (options, args) = parser.parse_args() #Check if no system arguments (options) entered if len(sys.argv) == 1: print("%s: error: %s\n" % (sys.argv[0], "No command options given")) parser.print_help() sys.exit(3) #Usage parameters for spatial database connection database_type = options.Database_type.upper() instance = options.Instance database = options.Database.lower() account_authentication = options.Account_authentication.upper() dbms_admin = options.Dbms_admin dbms_admin_pwd = options.Dbms_admin_pwd schema_type = options.Schema_type.upper() gdb_admin = options.Gdb_admin gdb_admin_pwd = options.Gdb_admin_pwd tablespace = options.Tablespace license = options.Authorization_file if (database_type == "SQLSERVER"): database_type = "SQL_SERVER" if( database_type ==""): print(" \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified.")) parser.print_help() sys.exit(3) if (license == ""): print(" \n%s: error: \n%s\n" % (sys.argv[0], "Authorization file (-l) must be specified.")) parser.print_help() sys.exit(3) if(database_type == "SQL_SERVER"): if(schema_type == "SDE_SCHEMA" and gdb_admin.lower() != "sde"): print("\n%s: error: %s\n" % (sys.argv[0], "To create SDE schema on SQL Server, geodatabase administrator must be SDE.")) sys.exit(3) if (schema_type == "DBO_SCHEMA" and gdb_admin != ""): print("\nWarning: %s\n" % ("Ignoring geodatabase administrator specified when creating DBO schema...")) if( account_authentication == "DATABASE_AUTH" and dbms_admin == ""): print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified with database authentication")) sys.exit(3) if( account_authentication == "OPERATING_SYSTEM_AUTH" and dbms_admin != ""): print("\nWarning: %s\n" % ("Ignoring DBMS administrator specified when using operating system authentication...")) else: if (schema_type == "DBO_SCHEMA"): print("\nWarning: %s %s, %s\n" % ("Only SDE schema is supported on", database_type, "switching to SDE schema..." )) if( gdb_admin.lower() == ""): print("\n%s: error: %s\n" % (sys.argv[0], "Geodatabase administrator must be specified.")) sys.exit(3) if( gdb_admin.lower() != "sde"): if (database_type == "ORACLE"): print("\nGeodatabase admin user is not SDE, creating user schema geodatabase on Oracle...\n") else: print("\n%s: error: %s for %s.\n" % (sys.argv[0], "Geodatabase administrator must be SDE", database_type)) sys.exit(3) if( dbms_admin == ""): print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified!")) sys.exit(3) if (account_authentication == "OPERATING_SYSTEM_AUTH"): print("Warning: %s %s, %s\n" % ("Only database authentication is supported on", database_type, "switching to database authentication..." )) # Get the current product license product_license=arcpy.ProductInfo() # Checks required license level if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print("\n" + product_license + " license found!" + " Creating an enterprise geodatabase requires an ArcGIS for Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS for Server license.") sys.exit("Re-authorize ArcGIS before creating enterprise geodatabase.") else: print("\n" + product_license + " license available! Continuing to create...") arcpy.AddMessage("+++++++++") try: print("Creating enterprise geodatabase...\n") arcpy.CreateEnterpriseGeodatabase_management(database_platform=database_type,instance_name=instance, database_name=database, account_authentication=account_authentication, database_admin=dbms_admin, database_admin_password=dbms_admin_pwd, sde_schema=schema_type, gdb_admin_name=gdb_admin, gdb_admin_password=gdb_admin_pwd, tablespace_name=tablespace, authorization_file=license) for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") except: for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) #Check if no value entered for option except SystemExit as e: if e.code == 2: parser.usage = "" print("\n") parser.print_help() parser.exit(2)
- Сохраните файл с расширением .py.
- Запустите скрипт, предоставив специфичные для вашего сайта опции и информацию.
В следующем примере запуск выполняется с компьютера с Windows, файл create_gdb.py запускается для кластера базы данных pgprod, с пользователем postgres уровня superuser, с паролем N0pe3king!. Он создает базу данных entgdb в табличном пространстве gis и роль учетной записи sde с паролем Tgdbst@rtsh3r3. Для авторизации базы геоданных в местоположении для ArcGIS Server по умолчанию задаётся файл ключей.
create_gdb.py --DBMS POSTGRESQL -i pgprod -D entgdb --auth DATABASE_AUTH -U postgres -P N0pe3king! -u sde -p Tgdbst@rtsh3r3 -t gis -l \\Program Files\ESRI\License10.3\sysgen\keycodes
В этом примере тот же скрипт запускается на компьютере с Linux:
./create_gdb.py --DBMS POSTGRESQL -i pgprod -D entgdb --auth DATABASE_AUTH -U postgres -P N0pe3king! -u sde -p Tgdbst@rtsh3r3 -t gis -l /usr/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License10.3/sysgen/keycodes
Теперь у вас есть база геоданных в PostgreSQL.
Затем вы можете создать пользователя, который будет загружать данные в базу геоданных.
Администратор PostgreSQL создает базу данных; администратор базы геоданных создает базу геоданных.
Если сотрудник, создающий базу геоданных, не имеет доступа к паролю администратора базы данных, то администратор базы данных может настроить базу данных, затем администратор базы геоданных может подключиться с ней, используя роль учетной записи sde и создать базу геоданных с помощью инструмента геообработки Включить многопользовательскую базу геоданных или скрипта Python.
Инструмент Включить многопользовательскую базу геоданных использует файл подключения к базе данных и создает системные таблицы базы геоданных, представления, функции и процедуры в схеме sde. Перед запуском инструмента администратор базы данных должен настроить в кластере PostgreSQL следующее:
- Роль учетной записи с именем sde со статусом superuser
- Базу данных
- Схему sde в базе данных, принадлежащую роли sde
- Библиотека st_geometry должна быть в папке установки PostgreSQL
Чтобы настроить базу геоданных, следуйте инструкциям к вашей ОС, на которой установлен PostgreSQL.
Настройка PostgreSQL
Сначала, администратор базы данных должен подготовить PostgreSQL для хранения базы геоданных.
Для настройки кластера базы данных PostgreSQL на сервере Windows администратор базы данных должен выполнить следующие инструкции. Помните, что все имена объектов базы данных (база данных, схема и роли учетных записей) должны использовать только символы нижнего регистра.
-
Установите поддерживаемую версию PostgreSQL и настройте кластер базы данных.
Вы можете загрузить пакет установки PostgreSQL с My Esri. Если вы воспользуетесь этим пакетом установки, вам не понадобятся другие настройки, отличающиеся от настроек по умолчанию, для использования PostgreSQL с ArcGIS. Необходимо только убедиться, что выбраны правильные языковые настройки и параметры местоположения, если вы не используете эти параметры, заданные по умолчанию. Файлы для установки PostgreSQL можно также получить самостоятельно.
Инструкции по установке и настройке PostgreSQL находятся на веб-сайте PostgreSQL.
- Настройте кластер базы данных на прием подключений.
Измените файл pg_hba.conf, чтобы кластер базы данных разрешил прием удаленных подключений.
- Дополнительно вы можете создать табличное пространство в кластере базы данных, в которой будет храниться ваша база данных.
- Создайте роль учетной записи с именем sde со статусом superuser:
- Создайте базу данных для хранения базы геоданных.
- Создайте схему с именем sde в базе данных и убедитесь, что роль учетной записи sde и имеет в ней все права.
- Необходимо также поместить файл библиотеки st_geometry.dll в папку lib в PostgreSQL. Этот файл устанавливается вместе с клиентами ArcGIS. Попросите администратора базы геоданных предоставить вам файл, соответствующий установленному PostgreSQL, если он выполнял установку клиента ArcGIS.
- Предоставьте администратору базы геоданных информацию о подключении к базе данных.
Администратор базы геоданных должен знать имя кластера базы данных, имя базы данных и пароль роли sde.
Теперь, когда база данных создана, администратор базы геоданных может подготовить клиента ArcGIS и создать базу геоданных.
Настройка клиента ArcGIS
Для подготовки клиента ArcGIS и создания базы геоданных администратор базы геоданных должен выполнить следующие шаги:
- Установите клиента ArcGIS, из которого вы будете создавать базу геоданных.
Обычно база геоданных создается из ArcGIS for Server или ArcGIS for Desktop (Standard или Advanced).
- После установки клиента ArcGIS, вы можете получить доступ к файлу st_geometry.so, который требуется администратору базы данных для завершения настройки кластера базы данных. Предоставьте администратору базы данных соответствующий файл.
В следующей таблице указано, где в папке установки клиента ArcGIS найти каждую версию файла st_geometry.dll. Необходимо использовать свою библиотеку st_geometry.dll для определенной версии PostgreSQL. Если соответствующая библиотека st_geometry.dll не будет помещена в директорию PostgreSQL lib, вы не сможете создать базу геоданных.
Версия PostgreSQL Директория установки клиента ArcGIS PostgreSQL 9.1
DatabaseSupport\PostgreSQL\9.1\Windows64
PostgreSQL 9.2
DatabaseSupport\PostgreSQL\9.2\Windows64
PostgreSQL 9.3
DatabaseSupport\PostgreSQL\9.3\Windows64
- Если вы хотите использовать ArcGIS for Desktop для создания базы геоданных, загрузите библиотеки libpq клиента PostgreSQL с My Esri и поместите их в папку bin в ArcGIS Desktop. Более подробно см. в разделе Подключение к PostgreSQL.
Клиент ArcGIS теперь готов подключиться к базе данных и создать базу геоданных.
Создание базы геоданных
Для создания базы геоданных в имеющейся базе данных администратор базы геоданных может запустить инструмент Включить многопользовательскую базу геоданных из ArcGIS for Desktop (Standard или Advanced) или скрипт Python из ArcGIS for Desktop, ArcGIS for Server или из клиента ArcGIS Engine.
Запустите инструмент Включить многопользовательскую базу геоданных
Можно запустить инструмент Включить многопользовательскую базу геоданных из ArcGIS for Desktop, чтобы создать базу геоданных в базе данных PostgreSQL.
- Запустите ArcMap или ArcCatalog.
- Подключитесь к базе данных PostgreSQL из дерева Каталога, используя роль учетной записи sde.
Убедитесь в том, что в диалоговом окне Подключение базы данных сохранен пароль пользователя.
- Щелкните правой кнопкой мыши подключение к базе данных и выберите Включить базу геоданных (Enable Geodatabase).
Откроется инструмент Включить многопользовательскую базу геоданных (Enable Enterprise Geodatabase), в поле Входное подключение к базе данных (Input Database Connection) будет указано имя и расположение файла подключения.
- Перейдите к файлу авторизации ArcGIS for Server, который был создан при авторизации ArcGIS for Server, и добавьте его в текстовое поле Файл авторизации (Authorization File).
При использовании мастера для авторизации ArcGIS for Server файл ключей записывается на сервер, где установлено программное обеспечение. Если вы авторизовали ArcGIS for Server на компьютере с Linux, файл ключей был создан в /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release>/sysgen. Если вы авторизовали на сервере Windows, то файл был создан в Program Files\ESRI\License<release>\sysgen. Если данная процедура еще не выполнена, авторизуйте ArcGIS for Server для создания этого файла.
- Щелкните OK, чтобы запустить инструмент.
В базе данных создается база геоданных.
Создание базы геоданных (GDBCreateGeodatabase<№>.log) регистрируется в файле журнала, который сохраняется в каталоге, указанном для переменной %TEMP%, на том компьютере, где запущен инструмент. При наличии проблем с запуском инструмента изучите этот файл журнала для их устранения.
Затем вы можете создать пользователя, который будет загружать данные в базу геоданных.
Запуск скрипта Python с клиентского компьютера с ArcGIS Server на Windows
Если вы хотите создать базу геоданных, запустив скрипт из ArcGIS for Server, ArcGIS for Desktop или ArcGIS Runtime на компьютере с Windows, вы можете использовать этот скрипт.
Выполните следующие действия, чтобы запустить скрипт Python для создания базы геоданных в базе данных PostgreSQL:
- Создайте текстовый файл на клиентском компьютере ArcGIS и скопируйте следующий скрипт в файл.
""" Name: enable_enterprise_gdb.py Description: Provide connection information to an enterprise database and enable enterprise geodatabase. Type enable_enterprise_gdb.py -h or enable_enterprise_gdb.py --help for usage Author: Esri """ # Import system modules import arcpy, os, optparse, sys # Define usage and version parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for " + arcpy.GetInstallInfo()['Version'] ) #Define help and options parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQLSERVER', 'ORACLE', 'POSTGRESQL', 'DB2','INFORMIX','DB2ZOS', ''], default="", help="Type of enterprise DBMS: SQLSERVER, ORACLE, POSTGRESQL, DB2, INFORMIX, or DB2ZOS.") parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name") parser.add_option ("--auth", dest="account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive): DATABASE_AUTH, OPERATING_SYSTEM_AUTH. Default=DATABASE_AUTH") parser.add_option ("-u", dest="User", type="string", default="", help="Geodatabase administrator user name") parser.add_option ("-p", dest="Password", type="string", default="", help="Geodatabase administrator password") parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name: Not required for Oracle") parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file") # Check if value entered for option try: (options, args) = parser.parse_args() #Check if no system arguments (options) entered if len(sys.argv) == 1: print "%s: error: %s\n" % (sys.argv[0], "No command options given") parser.print_help() sys.exit(3) #Usage parameters for spatial database connection database_type = options.Database_type.upper() instance = options.Instance account_authentication = options.account_authentication.upper() username = options.User.lower() password = options.Password database = options.Database.lower() license = options.Authorization_file if( database_type ==""): print " \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified.") parser.print_help() sys.exit(3) if (license == ""): print " \n%s: error: \n%s\n" % (sys.argv[0], "Authorization file (-l) must be specified.") parser.print_help() sys.exit(3) if (database_type == "SQLSERVER"): database_type = "SQL_SERVER" # Get the current product license product_license=arcpy.ProductInfo() if (license == ""): print " \n%s: error: %s\n" % (sys.argv[0], "Authorization file (-l) must be specified.") parser.print_help() sys.exit(3) # Checks required license level if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print "\n" + product_license + " license found!" + " Enabling enterprise geodatabase functionality requires an ArcGIS for Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS for Server license." sys.exit("Re-authorize ArcGIS before enabling an enterprise geodatabase.") else: print "\n" + product_license + " license available! Continuing to enable..." arcpy.AddMessage("+++++++++") # Local variables instance_temp = instance.replace("\\","_") instance_temp = instance_temp.replace("/","_") instance_temp = instance_temp.replace(":","_") Conn_File_NameT = instance_temp + "_" + database + "_" + username if os.environ.get("TEMP") == None: temp = "c:\\temp" else: temp = os.environ.get("TEMP") if os.environ.get("TMP") == None: temp = "/usr/tmp" else: temp = os.environ.get("TMP") Connection_File_Name = Conn_File_NameT + ".sde" Connection_File_Name_full_path = temp + os.sep + Conn_File_NameT + ".sde" # Check for the .sde file and delete it if present arcpy.env.overwriteOutput=True if os.path.exists(Connection_File_Name_full_path): os.remove(Connection_File_Name_full_path) print "\nCreating Database Connection File...\n" # Process: Create Database Connection File... # Usage: out_file_location, out_file_name, DBMS_TYPE, instnace, database, account_authentication, username, password, save_username_password(must be true) arcpy.CreateDatabaseConnection_management(out_folder_path=temp, out_name=Connection_File_Name, database_platform=database_type, instance=instance, database=database, account_authentication=account_authentication, username=username, password=password, save_user_pass="TRUE") for i in range(arcpy.GetMessageCount()): if "000565" in arcpy.GetMessage(i): #Check if database connection was successful arcpy.AddReturnMessage(i) arcpy.AddMessage("\n+++++++++") arcpy.AddMessage("Exiting!!") arcpy.AddMessage("+++++++++\n") sys.exit(3) else: arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") # Process: Enable geodatabase... try: print "Enabling Enterprise Geodatabase...\n" arcpy.EnableEnterpriseGeodatabase_management(input_database=Connection_File_Name_full_path, authorization_file=license) for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") except: for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) if os.path.exists(Connection_File_Name_full_path): os.remove(Connection_File_Name_full_path) #Check if no value entered for option except SystemExit as e: if e.code == 2: parser.usage = "" print "\n" parser.print_help() parser.exit(2)
- Сохраните файл с расширением .py.
- Запустите скрипт, предоставив специфичные для вашего сайта опции и информацию.
В следующем примере файл enable_gdb.py запускается для базы данных spdata на кластере pgprod. Подключение выполняется для учётной записи sde с паролем Tgdbst@rtsh3r3. Для авторизации базы геоданных в местоположении для ArcGIS Server по умолчанию задаётся файл ключей.
enable_gdb.py --DBMS POSTGRESQL -i pgprod --auth DATABASE_AUTH -u sde -p Tgdbst@rtsh3r3 -D spdata -l \\Program Files\ESRI\License10.3\sysgen\keycodes
Теперь у вас есть база геоданных в PostgreSQL.
Затем вы можете создать пользователя, который будет загружать данные в базу геоданных.