ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS for Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

在 DB2 中创建地理数据库

在 Standard 或 Advanced 许可等级下可用。

  • 安装并配置 DB2
  • 配置客户端
  • 创建地理数据库

安装并配置 IBM DB2 和 ArcGIS 客户端,然后使用启用企业级地理数据库地理处理工具或 Python 脚本在 DB2 数据库中创建地理数据库。

本主题涵盖在 Linux、UNIX 或 Windows 服务器的 DB2 上创建地理数据库。有关在 z 操作系统 (z/OS) 的 DB2 中创建地理数据库的说明,请参阅在 DB2 z/OS 中创建地理数据库。

安装并配置 DB2

在运行启用企业级地理数据库工具或脚本在 DB2 中创建地理数据库之前,必须首先安装和配置 DB2 数据库管理系统。创建地理数据库之前,请查看 ArcGIS DB2 系统要求,以确保要使用的数据库、ArcGIS 和硬件组合能得到支持。

应遵循 IBM 提供的说明来安装和配置 DB2 实例。然后,按照这些步骤来配置用于地理数据库的数据库和登录帐户。

  1. 在 DB2 服务器上创建名为 sde 的操作系统登录帐户。

    您将通过 sde 登录帐户连接到数据库来创建地理数据库。

  2. 创建一个 DB2 数据库并将其注册到 Spatial Extender 模块。
  3. 在数据库中授予 sde 用户 DBADM 权限。

接下来,设置 ArcGIS 客户端,您将从该客户端连接和创建 DB2 数据库中的地理数据库。

配置客户端

可以从 ArcGIS Desktop (Desktop Standard 或 Desktop Advanced)、ArcGIS Engine Geodatabase Update、或 ArcGIS Server(企业版)中运行 Python 脚本,来创建地理数据库。如果您想要运行启用企业级地理数据库地理处理工具,而并非脚本,则使用 ArcGIS Desktop。

注:

您需要一个 ArcGIS Server(企业版)密钥代码文件,以便在下一部分中授权地理数据库。即使不在 ArcGIS Server 计算机上运行 Python 脚本来创建地理数据库,也必须安装和授权 ArcGIS Server 才能获取密钥代码文件。可能需要将 ArcGIS Server 计算机中的文件复制到可使用地理处理工具或 Python 脚本访问的位置。

  1. 安装要用于创建地理数据库的 ArcGIS 客户端。

    遵循软件安装指南中提供的说明。

  2. 在大多数情况下,ArcGIS 客户端将安装在不同于 DB2 服务器的计算机上;因此,需要在 ArcGIS 客户端计算机上安装和配置 DB2 客户端。

    您可以从 My Esri 下载 IBM Data Server Runtime Client for DB2,也可以使用自己的 DB2 客户端安装程序。请参阅 DB2 文档以获取安装说明。如果要在 64 位的操作系统上安装 DB2 客户端,请运行 64 位可执行文件;该文件将同时安装 32 位和 64 位文件,使您可以从 32 位和 64 位 ArcGIS 客户端进行连接。

  3. 可使用非 DSN 连接字符串从 ArcGIS 连接至 DB2 数据库。但是,如果要使用数据源名称进行连接,则必须将数据库编入目录,从而配置数据源名称。请参阅 IBM DB2 文档以获取有关创建数据源名称的说明。

现在,您可以创建地理数据库。

创建地理数据库

使用以下方法之一在 DB2 数据库中创建地理数据库:

使用启用企业级地理数据库工具

如果安装和配置了 ArcGIS Desktop 来连接 DB2 数据库,则可以运行启用企业级地理数据库工具。

请按照以下步骤通过 ArcMap 创建地理数据库:

  1. 启动 ArcMap 或 ArcCatalog。
  2. 连接到 DB2 数据库。通过 sde 登录帐户进行连接。

    确保将 sde 用户密码保存在数据库连接对话框中。

  3. 右键单击数据库连接,然后单击启用地理数据库。

    随即将打开启用企业级地理数据库工具。

  4. 将 DB2 数据库的数据库连接文件添加到输入数据库文本框中。
  5. 浏览至授权 ArcGIS Server 时创建的 ArcGIS Server 密钥代码文件,并将其添加到授权文件文本框。

    使用向导来授权 ArcGIS Server 之后,密钥代码文件将被写入安装该软件的计算机。如果在 Linux 计算机上授权 ArcGIS Server,则文件在 /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release>/sysgen 中创建。如果在 Windows 服务器上进行授权,则文件在 Program Files\ESRI\License<release>\sysgen 中创建。将该文件复制到可使用启用企业级地理数据库工具访问的位置。如果尚未执行此操作,则请授权 ArcGIS Server 来创建此文件。

  6. 单击确定以运行工具。

    可在 sde_setup.log 文件中查找创建地理数据库的相关消息,该文件是在为运行工具的计算机上的 %TEMP% 变量指定的目录中创建的。如果在创建地理数据库时出现问题,可查看此文件以解决这些问题。

将在 DB2 数据库中创建地理数据库。

接下来,创建用户以便将数据加载到地理数据库中。请参阅 IBM DB2 信息中心以获取创建用户的说明。

使用 Python 脚本

可以从 ArcGIS Desktop(Desktop Standard 或 Desktop Advanced)、ArcGIS Server(企业版)、或 ArcGIS Engine Geodatabase Update 客户端计算机中运行 Python 脚本以在 DB2 数据库中创建地理数据库。

按照以下步骤运行 Python 脚本以在 DB2 数据库中创建地理数据库:

  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=['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 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. 运行脚本,同时提供特定于您的站点的选项和信息。

    在以下从 Windows 计算机运行的示例中,针对实例 db2prod 上的数据库 spdata 运行文件 enable_gdb.py。使用 sde 登录帐户通过密码 Tgdbst@rtsh3r3 进行连接。默认 ArcGIS Server 位置中指定的密钥代码文件用于授权地理数据库。

    enable_gdb.py --DBMS DB2 -i db2prod --auth DATABASE_AUTH 
    -u sde -p Tgdbst@rtsh3r3 -D spdata -l \\Program Files\ESRI\License10.5\sysgen\keycodes
    

    这是在 Linux 计算机上运行脚本的示例:

    /enable_gdb.py --DBMS DB2 -i db2prod --auth DATABASE_AUTH 
    -u sde -p Tgdbst@rtsh3r3 -D spdata -l /usr/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License10.5/sysgen/keycodes
    
    提示:

    在命令提示符处输入 -h 或 --help 以获取语法帮助。

    可在 sde_setup.log 文件中查找创建地理数据库的相关消息,该文件是在为运行 Python 脚本的计算机上的 TEMP 或 TMP 变量指定的目录中创建的。如果在创建地理数据库时出现任何问题,可查看此文件以解决这些问题。

将在 DB2 数据库中创建地理数据库。

接下来,创建用户以便将数据加载到地理数据库中。请参阅 IBM DB2 信息中心以获取有关创建用户和授予加载数据权限的说明。

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS 平台

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2019 Esri. | 隐私政策 | 法律声明