Создание базы геоданных с помощью скриптов в Informix
Для создания базы геоданных в системе управления базами данных IBM Informix, вы можете скопировать и отредактировать пример скрипта.
Перед запуском скрипта необходимо выполнить дополнительные действия. Описание этих действий и самого скрипта приводится ниже.
- Установите и настройте Informix на своем сервере.
- Убедитесь, что модуль Informix Basic Text Search зарегистрирован
- Зарегистрируйте модуль Informix Spatial DataBlade.
- В операционной системе на сервере Informix создайте пользователя с именем sde.
- Внесите следующие изменения в файл ONCONFIG в Informix:
- Снимите комментарий с параметра VPCLASS jvp,num=1.
Это позволяет создать в базе геоданных функцию sde.retrieve_uid(), которая требуется для репликации, автономного использования карт и SQL-редактирования таблиц, содержащих столбцы глобальных идентификаторов ID или GUID.
- Задайте параметру USEOSTIME значение 1, чтобы использовать значения времени менее секунды.
Задание этого параметра позволяет вам выполнять редактирование рабочих процессов, которые требуют редактирования неверсионных данных в автономном режиме.
- Перезапустите Informix, чтобы применить изменения, внесенные в файл ONCONFIG.
- Снимите комментарий с параметра VPCLASS jvp,num=1.
- Создайте базу данных в экземпляре Informix и сконфигурируйте пространство хранения.
- Определите роль EXTEND и права доступа RESOURCE для пользователя sde, которого вы создали в шаге 4.
- Если вы будете запускать скрипт Python с другого компьютера, а не с сервера Informix, установите и конфигурируйте клиент Informix на компьютере, с которого будет запускаться скрипт Python.
Клиент Informix можно загрузить с портала поддержки пользователей Esri (Esri Customer Care Portal). Информацию об установке клиента Informix смотрите в документации IBM. Если вы устанавливаете клиент Informix, чтобы запустить 32-разрядный клиент ArcGIS, установите клиентское 32-разрядное приложение Informix IConnect. Если вы устанавливаете клиент Informix для ArcGIS for Server, установите 64-разрядное клиентское приложение IConnect. Дополнительные сведения см. в разделе Настройка подключения к Informix.
- Скопируйте этот пример скрипта в окно Python в ArcGIS for Desktop или на любой Python IDE, например, PythonWin или WING, на компьютере, где установлен ArcGIS for Desktop (Standard или Advanced), ArcGIS for Server (Standard или Advanced) или ArcGIS Engine с установленным расширением Geodatabase Update.
В этом примере показан скрипт, который запускает функциональность базы геоданных в существующей базе данных Informix:
""" 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)
- Измените скрипт, чтобы включить в него вашу локальную информацию.
- Запустите скопированный и измененный скрипт.
Файл отчета о создании базы геоданных (GDBCreateGeodatabase<#>.log) будет записан в папку, заданную переменной TEMP или TMP на компьютере, где был запущен скрипт.