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

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

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

Если вы создаете базу геоданных из ArcGIS Pro 3.2, версия базы геоданных будет 11.2.0.

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

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

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

Для создания базы геоданных в PostgreSQL необходимо выполнить следующее:

  1. Убедитесь в том, что используемые вами версии ArcGIS, PostgreSQL и операционной системы поддерживаются.
  2. Получите файл ключей ArcGIS Server и поместите его в такое место, где он будет доступен для клиента ArcGIS, который будет использоваться для создания базы геоданных.
  3. Определите, кто будет создавать базу геоданных, потому что это влияет на то, кто создает базу данных и каким инструментом вы пользуетесь. Используйте инструкции, подходящие для вашей ситуации.

Вы администратор 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 для хранения базы геоданных на сервере:

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

    Для получения инструкций по установке и настройке PostgreSQL обратитесь к документации PostgreSQL.

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

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

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

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

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

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

Примечание:

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

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

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

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

ST_Geometry

Для использования ST_Geometry в базе геоданных, разместите файл st_geometry.dll в директории PostgreSQL lib.

Вы можете загрузить файл st_geometry.dll с My Esri.

Примечание:

Для st_geometry.dll требуется Microsoft Visual C++ Redistributable Package (x64). См. требования к базе данных PostgreSQL, чтобы узнать о требующейся версии пакета. Если данный пакет отсутствует на сервере PostgreSQL, загрузите его с сайта Microsoft и установите.

Поместите файл st_geometry.dll, относящийся к используемой вами версии PostgreSQL, в директорию PostgreSQL lib. Убедитесь, что вы используете правильную версию файла.

PostGIS

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

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

Запустите инструмент Создать многопользовательскую базу геоданных из 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. Администратор базы геоданных в PostgreSQL должен использовать имя sde, поэтому в поле Администратор базы геоданных уже указано sde.
  9. Введите пароль пользователя sde в поле Пароль администратора базы геоданных.

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

    Подсказка:

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

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

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

  11. Чтобы указать Файл авторизации, выберите файл keycodes, который был создан при авторизации ArcGIS Server (Enterprise).

    Этот файл записывается в \\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 для создания этого файла.

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

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

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

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

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

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

  1. Создайте текстовый файл на клиентском компьютере 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
    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 10.1 and higher releases")
    
    #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:  Not required 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 for SQL Server geodatabase, SDE or DBO. Default=SDE_SCHEMA")
    parser.add_option ("-u", dest="Gdb_admin", type="string", default="", help="Geodatabase administrator user name")
    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")
    parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file")
    parser.add_option ("--type", dest="Spatial_type", type="choice", choices=['ST_GEOMETRY', 'POSTGIS'], default="ST_GEOMETRY", help="Spatial Type for PostgreSQL geodatabase, ST_GEOMETRY or POSTGIS. Default=ST_GEOMETRY")
    
    # 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
    	spatial_type = options.Spatial_type.upper()
    	
    	
    	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( 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.management.CreateEnterpriseGeodatabase(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, spatial_type=spatial_type)
    		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)
  2. Сохраните файл с расширением .py.
  3. Запустите скрипт, предоставив специфичные для вашего сайта опции и информацию.

    В следующем примере запуск выполняется с компьютера с 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\License\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/License/sysgen/keycodes'

    Подсказка:

    Введите -h или --help в командной строке для вывода справки синтаксиса.

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

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

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

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

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

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

  • Роль учетной записи с именем sde со статусом superuser
  • База данных
  • Схема sde в базе данных, для которой учетной записи sde было предоставлено authority.
  • Пространственный тип — Библиотека st_geometry должна быть в папке lib директории установки PostgreSQL или PostGIS должен быть настроен в базе данных.

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

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

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

Примечание:

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

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

    Для получения инструкций по установке и настройке PostgreSQL обратитесь к документации PostgreSQL.

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

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

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

    Подсказка:

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

  5. Создайте базу данных для хранения базы геоданных.
  6. Создайте схему с именем sde в базе данных и убедитесь, что роль учетной записи sde и имеет в ней все права.
  7. Включение пространственного типа данных в базу данных.
    • Для настройки PostGIS в базе данных см. указания в документации PostGIS, затем выполните шаг 9.
    • Для настройки ST_Geometry выполните следующий шаг.
  8. Получите и разместите библиотеку ST_Geometry в директории PostgreSQL lib.
    1. Загрузите файл st_geometry.dll с My Esri.

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

      Примечание:

      Для файла st_geometry.dll необходим Microsoft Visual C++ Redistributable Package (x64). См. требования к базе данных PostgreSQL, чтобы узнать о требующейся версии пакета. Если данный пакет отсутствует на сервере PostgreSQL, загрузите его с сайта Microsoft и установите.

    2. Разместите файл st_geometry.dll в директории PostgreSQL lib на машине, где установлен PostgreSQL.
  9. Предоставьте администратору базы геоданных информацию о подключении к базе данных.

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

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

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

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

Примечание:

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

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

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

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

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

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

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

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

  3. Откройте инструмент Включить многопользовательскую базу геоданных.
  4. Перетащите ваш новый файл подключения в поле Входная база данных.
  5. Чтобы указать Файл авторизации, выберите файл keycodes, который был создан при авторизации ArcGIS Server (Enterprise).

    Этот файл записывается в \\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 (Desktop Standard или Desktop Advanced) или на компьютере с ArcGIS Server.

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

  1. Создайте текстовый файл на клиентском компьютере 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
    """
    
    # 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=['SQL_SERVER', 'ORACLE', 'POSTGRESQL', 'DB2','INFORMIX','DB2ZOS', ''], default="", help="Type of enterprise DBMS:  SQL_SERVER, 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)
    
    		
    	# 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 Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS 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)

  2. Сохраните файл с расширением .py.
  3. Запустите скрипт, предоставив специфичные для вашего сайта опции и информацию.

    В следующем примере файл enable_gdb.py запускается с компьютера Windows. Имя базы данных - spdata, она существует в кластере баз данных с именем pgprod. Подключение выполняется для учетной записи sde с паролем Tgdbst@rtsh3r3. Для авторизации базы геоданных в местоположении по умолчанию ArcGIS Server в Windows задается файл ключей.

    enable_gdb.py --DBMS POSTGRESQL -i pgprod --auth DATABASE_AUTH 
    -u sde -p Tgdbst@rtsh3r3 -D spdata -l '\\Program Files\ESRI\License\sysgen\keycodes'

    В этом примере тот же файл запускается с компьютера Linux, а файл ключей находится местоположении по умолчанию ArcGIS Server в Linux.

    ./enable_gdb.py --DBMS POSTGRESQL -i pgprod --auth DATABASE_AUTH 
    -u sde -p Tgdbst@rtsh3r3 -D spdata -l '/usr/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License/sysgen/keycodes'

    Подсказка:

    Введите -h или --help в командной строке для вывода справки синтаксиса.

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

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

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