设为首页 收藏本站
查看: 1135|回复: 0

[经验分享] ArcGIS 帮助 10.1 创建企业级地理数据库 (Data Management)

[复制链接]

尚未签到

发表于 2016-11-22 04:40:22 | 显示全部楼层 |阅读模式
创建企业级地理数据库 (Data Management)               


地理处理 » 工具参考 » 数据管理工具箱

许可等级:Basic Standard Advanced


摘要

  创建企业级地理数据库工具根据所使用的数据库管理系统 (DBMS) 来创建数据库、存储位置,以及作为地理数据库管理员和地理数据库所有者的数据库用户。它授予地理数据库管理员创建地理数据库、以及在数据库中创建地理数据库所需的权限。







用法



  • 下表指示对每种类型的 DBMS 该工具可实现的功能:




    功能


    DBMS




    创建数据库



    PostgreSQL 和 Microsoft SQL Server





    创建表空间



    Oracle





    在数据库中创建地理数据库管理员用户



    Oracle、PostgreSQL 和 SQL Server(如果创建 sde 方案地理数据库)





    授予地理数据库管理员创建地理数据库、升级地理数据库和取消数据库连接所需的权限



    Oracle 和 PostgreSQL





    授予地理数据库管理员创建地理数据库和取消数据库连接所需的权限



    SQL Server(如果创建 sde 方案地理数据库)





    在指定数据库中创建地理数据库



    Oracle、PostgreSQL 和 SQL Server




  • 用来创建地理数据库的计算机上必须安装有 ArcGIS for Desktop(标准版或高级版)、具有 Geodatabase Update 扩展模块的 ArcGIS Engine Runtime 或者 ArcGIS for Server(标准版或高级版)。您必须能够直连到 DBMS,以创建数据库对象和地理数据库。这需要您在安装 ArcGIS 客户端的计算机上安装和配置 DBMS 客户端。




语法


CreateEnterpriseGeodatabase_management (database_platform, instance_name, {database_name}, {account_authentication}, {database_admin}, {database_admin_password}, {sde_schema}, {gdb_admin_name}, {gdb_admin_password}, {tablespace_name}, authorization_file)
参数说明数据类型


database_platform

[database_platform,...]

指定要连接以创建地理数据库的数据库管理系统的类型。



    <esri_enumhead><esri_enumvaluehd><esri_enumdeschd>
  • Oracle —指示您将连接到 Oracle 实例
  • PostgreSQL —指示您将连接到 PostgreSQL 数据库群集
  • SQL_Server —指示您将连接到 SQL Server 实例

String


instance_name

对于 SQL Server,提供 SQL Server 的实例名。对于 Oracle,提供 TNS 名称或 Oracle Easy Connection 字符串。对于 PostgreSQL,提供安装 PostgreSQL 的服务器的名称。

String


database_name

(可选)

该参数只对 PostgreSQL 和 SQL Server DBMS 类型有效。输入现有的、预先配置的数据库名称,或输入要创建的数据库名称。如果要使该工具在 SQL Server 中创建数据库,文件大小可与为 SQL Server 模型数据库定义的大小相同,或者对于 MDF 文件为 500 MB,对于 LDF 文件为 125 MB,取较大值。MDF 文件和 LDF 文件均可在数据库服务器上的默认 SQL Server 位置创建。如果要使该工具在 PostgreSQL 中创建数据库,则 template1 数据库将用作您数据库的模板。

String


account_authentication

(可选)

指定数据库连接要使用的授权类型。



    <esri_enumhead><esri_enumvaluehd><esri_enumdeschd>
  • OPERATING_SYSTEM_AUTH —登录到计算机(运行该工具)时所提供的登录信息将用于验证数据库连接。 如果 DBMS 没有配置为允许操作系统身份验证,则身份验证将失败。
  • DATABASE_AUTH —在数据库中验证身份时必须提供有效的数据库用户名和密码。这是默认的身份验证方法。 如果 DBMS 没有配置为允许数据库身份验证,则身份验证将失败。

Boolean


database_admin

(可选)

如果使用数据库身份验证,则必须指定数据库管理员用户。对于 Oracle,数据库管理员为 sys。对于 Postgres,为 postgres 超级用户。对于 SQL Server,为 sysadmin 固定服务器角色的成员。

String


database_admin_password

(可选)

输入数据库管理员的密码。如果使用的是数据库身份验证,则必须指定数据库管理员用户密码。

Encrypted String


sde_schema

(可选)

该参数只与 SQL Server 相关,并指示地理数据库是在名为 sde 的用户方案中创建还是在数据库的 dbo 方案中创建。如果创建的是一个 dbo 方案地理数据库,连接的用户必须是 SQL Server 实例中的 dbo。因此,如果使用的是操作系统身份验证,所使用的登录用户必须是 SQL Server 实例中的 dbo。



    <esri_enumhead><esri_enumvaluehd><esri_enumdeschd>
  • SDE_SCHEMA —地理数据库资料档案库存储在名为 sde 的用户方案中并归该用户所有。这是默认设置。
  • DBO_SCHEMA —地理数据库资料档案库存储在数据库的 dbo 方案中。

Boolean


gdb_admin_name

(可选)

如果使用的是 PostgreSQL,该值必须为 sde。如果 sde 登录角色不存在,此工具将创建 sde 登录角色并授予其超级用户权限。同时还会在数据库中创建 sde 方案。如果 sde 登录角色已存在,当其没有超级用户权限时,此工具将对其授予这一权限。
如果使用的是 Oracle,则默认值为 sde。然而,如果在主 sde 地理数据库内创建用户方案地理数据库,请指定拥有地理数据库的用户名称。如果 DBMS 中不存在用户,则创建企业级地理数据库工具将创建用户并授予其创建和升级地理数据库以及删除用户与 DBMS 之间连接所需的权限。如果用户已经存在,则该工具将向此用户授予所需的权限。
如果使用的是 SQL Server 并指定了一个 sde 方案地理数据库,则该值必须为 sde。此工具将创建 sde 登录、数据库用户和方案,并授予其创建地理数据库以及删除与 SQL Server 实例之间连接所需的权限。如果指定了 dbo 方案,则不要为该参数提供值。

String


gdb_admin_password

(可选)

为地理数据库管理员用户提供密码。如果地理数据库管理员用户已经存在于 DBMS 中,输入的密码必须与现有密码相匹配。如果地理数据库管理员用户尚未存在,则为新用户输入一个有效的数据库密码。该密码必须符合 DBMS 强制的密码策略。
密码是一个地理处理加密字符串。

Encrypted String


tablespace_name

(可选)

该参数只对 Oracle 和 PostgreSQL DBMS 类型有效。对于 Oracle,请执行以下某项操作:


  • 为 sde 用户提供用作默认表空间的现有表空间名称。
  • 输入一个有效名称,将会在 Oracle 默认存储位置处创建一个 400 MB 的表空间,并设置为 sde 用户的默认表空间。
  • 将表空间留空,之后会创建表空间 SDE_TBS (400 MB),并设置为 sde 用户的默认表空间。
对于 PostgreSQL,必须为数据库提供用作默认表空间的现有表空间名称,或将此参数留空。此工具不会在 PostgreSQL 中创建表空间。如果没有为此参数提供值,则将在 PostgreSQL 的 pg_default 表空间中创建数据库。

String


authorization_file

提供授权 ArcGIS for Server 企业级时创建的密钥代码文件的路径和文件名。此文件位于 \\Program Files\ESRI\License<release#>\sysgen 文件夹中 (Windows) 和 /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen 目录下 (Linux)。如果尚未执行此操作,则授权ArcGIS for Server 创建此文件。

File



代码实例


CreateGeodatabase 示例 1


以下脚本可在 Oracle 数据库中创建地理数据库。它创建 sde 用户并为该 sde 用户创建默认表空间 sdetbs。密钥代码文件位于远程 Linux 服务器上。



#Import arcpy module
import arcpy
arcpy.CreateEnterpriseGeodatabase("ORACLE", "ora11g:1521/elf", "", "DATABASE_AUTH", "sys", "manager", "", "sde", "supersecret", "sdetbs", "//myserver/mymounteddrive/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License10.1/sysgen/keycodes")


CreateGeodatabase 示例 2


该脚本连接到 SQL Server 实例 (tor\ssinstance),在其中创建一个名为 sp_data 的数据库和一个 sde 方案数据库。使用操作系统身份验证建立连接。密钥代码文件位于远程 Windows 服务器上。



#Import arcpy module
import arcpy
arcpy.CreateEnterpriseGeodatabase("SQLSERVER", "tor\ssinstance1", "sp_data", "OPERATING_SYSTEM_AUTH", "", "", "SDE_SCHEMA", "sde", "sde", "", "//myserver/Program Files/ESRI/License10.1/sysgen/keycodes")


CreateGeodatabase 示例 3


该脚本连接到服务器上名为 feldspar 的 PostgreSQL 数据库群集。如同在现有表空间 gdbspace 中创建数据库 pggdb 那样来创建 sde 用户。密钥代码文件位于本地 Linux 服务器上。



#Import arcpy module
import arcpy
arcpy.CreateEnterpriseGeodatabase("POSTGRESQL", "feldspar", "pggdb", "DATABASE_AUTH", "postgres", "averturis", "", "sde", "nomira", "gdbspace", "/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License10.1/sysgen/keycodes")


CreateGeodatabase 独立脚本


以下独立 Python 脚本可以提供特定于使用选项的站点的信息。



"""
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 release")
#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")
# 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"
sys.exit(3)
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)




环境


此工具不使用任何地理处理环境


相关主题




在 Oracle 中使用脚本创建地理数据库

为在 PostgreSQL 中创建数据库和地理数据库 (geodatabase) 编写脚本

GUID-FFA1028B-DD35-45DC-B84D-9A5EC512022C

ArcGIS for Desktop 中的数据库连接

“地理数据库管理”工具集概述


许可信息


ArcGIS for Desktop Basic:否

ArcGIS for Desktop Standard:是

ArcGIS for Desktop Advanced:是



http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#//001700000162000000

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-303571-1-1.html 上篇帖子: postGIS安装与shp文件的存储示范 下篇帖子: [Postgres]合并多行到一列(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表