ArcGIS поддерживает несколько облачных предложений, где базы данных используются как сервис на основе PostgreSQL. Вы можете создать многопользовательскую базу геоданных в большинстве облачных сервисов баз данных PostgreSQL, которые поддерживают Esri .
Если вы создадите базу геоданных из ArcGIS AllSource версии 3.3, версия этой базы геоданных будет 11.3.0.
Выполните необходимые условия
Прежде чем создать базу геоданных, необходимо создать экземпляр базы данных в своей облачной учетной записи, настроить его на получение подключений, создать пользователя sde и схему и предоставить пользователю sde права для создания базы геоданных.
Следуйте инструкциям, предоставленным вашим облачным провайдером, чтобы выполнить эти шаги.
Также надо скопировать файл авторизации с кодом ключа ArcGIS Server на облачный компьютер, где установлен клиент ArcGIS, который будет использоваться для создания базы геоданных.
Перед созданием базы геоданных выполните следующие обязательные шаги:
- Убедитесь, что используемые вами версии ArcGIS поддерживают тип и версию сервиса облачных баз данных, которые вы хотите использовать.
- Создайте экземпляр сервиса баз данных на выбранной вами облачной платформе.
- Создайте логин пользователя с именем sde для экземпляра базы данных.
- Предоставьте пользователю sde права, необходимые для создания базы геоданных для используемого вами типа сервиса баз данных.
- Создайте схему с именем sde в экземпляре базы данных и предоставьте пользователю sde права доступа к схеме.
- Установите клиентское приложение ArcGIS—ArcGIS AllSource или ArcGIS Server—, которое будет использоваться для создания базы геоданных.
Установите клиентское приложение ArcGIS на той же облачной платформе и в том же регионе, где запущен сервис базы данных.
- Убедитесь, что экземпляр базы данных настроен таким образом, чтобы разрешать подключения из клиента ArcGIS.
- С помощью клиента ArcGIS, который был установлен на шаге 6, создайте подключение к базе данных с экземпляром базы данных, подключившись как пользователь sde.
Примеры строк экземпляра смотрите в разделе Подключения к базе данных в ArcGIS AllSource.
Если пользователь sde является пользователем, прошедшим аутентификацию в базе данных, вы должны сохранить пароль пользователя sde в соединении с базой данных.
- Получите файл ключей ArcGIS Server и поместите его в такое место, где он будет доступен для клиента ArcGIS, который будет использоваться для создания базы геоданных.
Теперь вы можете создать базу геоданных в экземпляре базы данных в облаке.
Создайте базу геоданных в экземпляре сервиса базы данных
Если ArcGIS AllSource установлен в том же облачном регионе, что и сервис базы данных, можно запустить инструмент геообработки Включить многопользовательскую базу геоданных для создания базы геоданных в экземпляре базы данных, как описано в первом разделе ниже.
Либо можно запустить функцию EnableEnterpriseGeodatabase ArcPy в окне Python или запустить скрипт Python из установки ArcGIS AllSource или ArcGIS Server в облаке.
Запустите инструмент Включить многопользовательскую базу геоданных (Enable Enterprise Geodatabase)
Следуйте приведенным шагам по созданию базы геоданных с помощью инструмента Включить многопользовательскую базу геоданных в ArcGIS AllSource:
- Войдите в виртуальную машину в облачной среде и запустите ArcGIS AllSource.
- Откройте инструмент Включить многопользовательскую базу геоданных.
- В качестве параметра Входное подключение к базе данных укажите файл подключения к базе данных, который вы создали в рамках выполнения необходимых шагов.
- Чтобы указать Файл авторизации, выберите файл 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.
- Щелкните Запустить.
Теперь у вас есть база геоданных в экземпляре базы данных.
Вы можете найти сообщения, относящиеся к созданию базы геоданных, в файле sde_setup.log, который создается в каталоге, указанном для переменной TEMP, на том компьютере, где запущен этот скрипт. При наличии проблем с созданием базы геоданных посмотрите этот файл журнала для их устранения.
Затем администратор базы данных может создать роли для входа и соответствующие схемы для пользователей, которые будут создавать, редактировать и просматривать данные, а также создать роли входа для редакторов и вьюеров данных.
Запустите функцию ArcPy EnableEnterpriseGeodatabase
Чтобы запустить функции ArcPy , подключитесь к одному из клиентских компьютеров ArcGIS в облаке и запустите функцию из окна Python.
- Войдите в виртуальную машину в облачной среде, на которой установлен ArcGIS AllSource или ArcGIS Server.
- Откройте окно Python.
Смотрите следующее для получения информации о доступе к Python из установок ArcGIS:
- Окно Python — информация об открытии окна из ArcGIS AllSource
- ArcGIS Server и ArcPy—Информация о доступе к окну Python при установке ArcGIS Server
- Запустите функцию EnableEnterpriseGeodatabase ArcPy из окна Python.
Используйте созданный вами файл подключения к базе данных и ссылайтесь на файл авторизации ArcGIS Server, который вы разместили в доступном месте, как часть необходимых шагов.
В следующем примере функция EnableEnterpriseGeodatabase запускается из установки ArcGIS AllSource. Файл подключения к базе данных (postresdbaas.sde) хранится в папке проекта ArcGIS AllSource (C:\proprojects\pg_proj), а файл авторизации (keycodes) хранится в C:\authcodes.
arcpy.management.EnableEnterpriseGeodatabase(r"C:\proprojects\pg_proj\postresdbaas.sde",r"C:\authcodes\keyfile")
В следующем примере функция запускается из установки ArcGIS Server на компьютере с Linux. Файл подключения к базе данных (postresdbaas.sde) хранится в /usr/connectionfiles, а файл кодов ключей находится в расположении ArcGIS Server по умолчанию.
arcpy.management.EnableEnterpriseGeodatabase("/usr/connectionfiles/postresdbaas.sde","/usr/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License/sysgen/keycodes")
Теперь у вас есть база геоданных в экземпляре базы данных.
Вы можете найти сообщения, относящиеся к созданию базы геоданных, в файле sde_setup.log, который создается в каталоге, указанном для переменной TEMP, на том компьютере, где запущена эта функция. При наличии проблем с созданием базы геоданных посмотрите этот файл журнала для их устранения.
Затем администратор базы данных может создать роли для входа и соответствующие схемы для пользователей, которые будут создавать, редактировать и просматривать данные, а также создать роли входа для редакторов и вьюеров данных.
Запуск скрипта Python из клиента ArcGIS
Вы можете использовать этот скрипт, чтобы создать базу геоданных, запустив скрипт из ArcGIS AllSource (Desktop Standard или Desktop Advanced) или на компьютере с ArcGIS Server.
Выполните следующие шаги, чтобы запустить скрипт Python, который вызывает функции CreateDatabaseConnection и EnableEnterpriseGeodatabase ArcPy для подключения к базе данных и создания базы геоданных в сервисе баз данных 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 """ # 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)
- Сохраните файл с расширением .py.
- Запустите скрипт, предоставив параметры и информацию, специфичные для вашего экземпляра.
В следующих примерах файл enable_gdb.py запускается с виртуальной машины в том же облачном регионе, что и сервис базы данных.
В этом примере скрипт запускается из установки ArcGIS Server на компьютере Linux: Он подключается к базе данных с именем myauroradb в экземпляре Amazon Aurora PostgreSQL в регионе us-west-2 (database-1-instance-1.zyxjtlpj9fer.us-west-2.rds.amazonaws.com). Файл с кодами ключей был помещен в /usr/arcgis/auth на компьютере с ArcGIS Server.
./enable_gdb.py --DBMS POSTGRESQL -i database-1-instance-1.zyxjtlpj9fer.us-west-2.rds.amazonaws.com --auth DATABASE_AUTH -u sde -p sdeP@ss -D myauroradb -l '/usr/arcgis/auth/keycodes'
В следующем примере скрипт запускается с компьютера Microsoft Windows в Azure. Он подключается к базе данных с именем azure pdf в экземпляре Microsoft Azure Database for PostgreSQL (гибкий сервер) в my-pg-flex.postgres.database.azure.com. Файл кодов ключей находится в расположении ArcGIS Server по умолчанию.
enable_gdb.py --DBMS POSTGRESQL -i my-pg-flex.postgres.database.azure.com --auth DATABASE_AUTH -u sde -p EsDeeEpass -D azurepgf -l '\\Program Files\ESRI\License\sysgen\keycodes'
В следующем примере скрипт запускается с компьютера, на котором установлен ArcGIS AllSource и в который был помещен файл кодов ключей в Users\MyUser\Documents\AuthFiles\keycodes. Скрипт подключается к базе данных (gcspostgres) в экземпляре Google Cloud SQL for PostgreSQL, доступ к которому осуществляется через общедоступный IP-адрес 98.765.43.210.
enable_gdb.py --DBMS POSTGRESQL -i 98.765.43.210 --auth DATABASE_AUTH -u sde -p Zpassw0rd -D gcspostgres -l '\\Users\MyUser\Documents\AuthFiles\keycodes'
Подсказка:
Введите -h или --help в командной строке для получения справки по синтаксису для этого скрипта.
Теперь у вас есть база геоданных в экземпляре базы данных.
Вы можете найти сообщения, относящиеся к созданию базы геоданных, в файле sde_setup.log, который создается в каталоге, указанном для вашей переменной TEMP или TMP на той виртуальной машине, где запущен этот скрипт. При наличии проблем с созданием базы геоданных посмотрите этот файл журнала для их устранения.
Затем администратор базы данных может создать роли для входа и соответствующие схемы для пользователей, которые будут создавать, редактировать и просматривать данные, а также создать роли входа для редакторов и вьюеров данных.