Disponible con una licencia Standard o Advanced.
La forma de configurar una geodatabase depende de las situaciones del sitio. Siga las instrucciones del escenario que corresponda.
- Usted es el administrador de PostgreSQL y de la geodatabase.
- El administrador de PostgreSQL crea la base de datos; el administrador de la geodatabase, la geodatabase.
Tenga en cuenta que este tema está relacionado con instalaciones de PostgreSQL en un servidor Linux. Si tiene PostgreSQL instalado en un servidor de Windows, consulte Configurar una geodatabase de PostgreSQL en un servidor de Windows.
Usted es el administrador de PostgreSQL y de la geodatabase
Si desempeña el rol tanto de administrador de base de datos como de administrador de la geodatabase y, por lo tanto, conoce la contraseña de ambos roles de inicio de sesión, puede usar la herramienta de geoprocesamiento Crear geodatabase corporativa o una secuencia de comandos de Python para crear una geodatabase en PostgreSQL.
La herramienta Crear geodatabase corporativa facilita la configuración de una geodatabase porque crea los objetos de base de datos y otorga los privilegios que necesita. Para lograrlo, se usa una configuración predeterminada específica. A continuación se describe lo que hace la herramienta Crear geodatabase corporativa y la configuración que utiliza:
- Crea una base de datos PostgreSQL utilizando la plantilla predeterminada (template1).
Si necesita crear la base de datos con una plantilla distinta (por ejemplo, si desea usar la plantilla postgis), debe hacerlo antes de ejecutar esta herramienta. A partir de ese momento, puede ejecutar la herramienta Crear geodatabase corporativa o una secuencia de comandos y especificar el nombre de la base de datos creada previamente.
- Crea un rol de inicio de sesión sde en el clúster de base de datos y le otorga estado de superusuario.
El usuario sde debe ser un superusuario para crear la geodatabase.
- Crea un esquema sde en la base de datos.
Las tablas del sistema, vistas, funciones y procedimientos de geodatabase se almacenan en el esquema sde.
- Establece el usuario sde como propietario del esquema sde y otorga el uso al rol público en el esquema sde.
Los roles de inicio de sesión que usarán la geodatabase deben ser capaces de acceder al esquema sde. Como es probable que los roles de inicio de sesión de geodatabase no existan aún, esta herramienta otorga el uso al público. Después de crearse la geodatabase, puede reforzar su seguridad revocando el uso del público en el esquema sde y otorgándolo solo a los grupos y roles de inicio de sesión que necesitan acceso a la geodatabase.
- Crea una geodatabase.
En primer lugar, debe instalar PostgreSQL y configurar el clúster de base de datos.
Configurar PostgreSQL
Siga estos pasos para configurar un clúster de base de datos de PostgreSQL para almacenar una geodatabase en un servidor Linux:
-
Obtenga e instale una versión compatible de PostgreSQL y configure el cluster de la base de datos.
Pude descargar instalaciones de PostgreSQL desde My Esri. Si utiliza esta instalación, no es necesaria ninguna configuración específica no predeterminada para utilizar PostgreSQL con ArcGIS. Solo asegúrese de cambiar la configuración regional y la ubicación si desea utilizar un valor diferente al predeterminado. Como alternativa, puede obtener la instalación de PostgreSQL por su cuenta.
Consulte la documentación de PostgreSQL para obtener instrucciones sobre la instalación y configuración de PostgreSQL.
- Configure el clúster de la base de datos para aceptar las conexiones.
Esto incluye modificar el archivo pg_hba.conf para permitir que el clúster de bases de datos acepte conexiones remotas.
- Establezca las siguientes variables de entorno para el usuario postgres si no están ya establecidas correctamente:
- PGDATA: este se debería haber establecido con la instalación de PostgreSQL. Si no, establézcalo en la ubicación del directorio de datos de PostgreSQL. (Se encuentra en el directorio de instalación de PostgreSQL).
- LD_LIBRARY_PATH: establezca la variable LD_LIBRARY_PATH en el directorio lib de PostgreSQL. La ubicación del directorio lib varía en función de cómo haya instalado PostgreSQL. Para determinar la ubicación correcta para la instalación de PostgreSQL, ejecute pg_config como usuario de postgre. Establecer LD_LIBRARY_PATH en el valor que se muestra para PKGLIBDIR.
- PATH: establezca la variable PATH para que contenga postgresql/bin.
- Cree un espacio de tabla en el cluster de la base de datos en la que almacenó su base de datos. Si no crea un espacio de tabla, se utilizará el espacio de tabla pg_default.
A continuación, instale y configure un cliente de ArcGIS.
Configurar un cliente de ArcGIS
Puede ejecutar una secuencia de comandos de Python desde ArcGIS for Desktop (Estándar o Avanzado), desde ArcGIS Engine Runtime con la extensión Geodatabase Update o desde ArcGIS for Server para crear una geodatabase. Si desea ejecutar la herramienta de geoprocesamiento Crear geodatabase corporativa en lugar de una secuencia de comandos, use ArcGIS for Desktop.
ArcGIS for Desktop solo se admite en sistemas operativos Windows y, por lo tanto, está instalado en un equipo distinto de PostgreSQL. Puede instalar ArcGIS for Server en el mismo equipo que PostgreSQL; sin embargo, como los sistemas de administración de bases de datos son aplicaciones que requieren mucha memoria, no es aconsejable.
- Instale el cliente de ArcGIS desde el cual creará la geodatabase.
Normalmente, las geodatabases se crean desde ArcGIS for Server o ArcGIS for Desktop (Standard o Advanced).
- Si va a utilizar ArcGIS for Server con la geodatabase en PostgreSQL, establezca o modifique las siguientes variables para la cuenta de ArcGIS:
- SDEHOME: establezca esta variable en el directorio de instalación de ArcGIS for Server.
Por ejemplo, si ArcGIS for Server está instalado en la ubicación predeterminada en un servidor Linux, establezca exportar SDEHOME=/home/ags/arcgis/server.
- PG_HOME: establezca PG_HOME en /opt/PostgreSQL/<version>.
En este ejemplo, PG_HOME se configura para una instalación de PostgreSQL 9.3.9: exportar PG_HOME=/opt/PostgreSQL/9.3.
- Si ArcGIS for Server está instalado en un servidor de Windows, agregue las ubicaciones PG_HOME\bin y SDEHOME\bin a la variable PATH.
Por ejemplo, establezca exportar PATH=$PATH:$PG_HOME/bin:$SDEHOME/bin en Linux.
- Si ArcGIS for Server está instalado en un servidor Linux, agregue $PG_HOME\lib y $SDEHOME\lib a la variable LD_LIBRARY_PATH.
Por ejemplo, establezca exportar LD_LIBRARY_PATH=$LD_LIBRARY_PATH$PG_HOME/lib:$SDEHOME/lib.
- SDEHOME: establezca esta variable en el directorio de instalación de ArcGIS for Server.
Ahora que ArcGIS está instalado, tendrá acceso al archivo st_geometry.so, que debe colocarse en el servidor de PostgreSQL.
Colocar el archivo st_geometry.so
Debe colocar el archivo st_geometry.so en el directorio lib de PostgreSQL antes de poder crear una geodatabase. La ubicación del directorio lib en Linux puede variar en función de cómo haya instalado PostgreSQL. Para determinar la ubicación correcta para la instalación de PostgreSQL, ejecute pg_config como usuario de postgre. El valor que se devuelve para PKGLIBDIR es el directorio lib donde es necesario colocar la biblioteca st_geometry.
Los archivos st_geometry.so se instalan con clientes de ArcGIS. En la siguiente tabla se indica dónde encontrar cada versión de la biblioteca st_geometry.so en la instalación del cliente de ArcGIS. Debe usar la biblioteca st_geometry.so específica de la versión de PostgreSQL que está utilizando. Si no coloca la biblioteca st_geometry.so correcta en el directorio lib de PostgreSQL, no podrá crear una geodatabase.
Versión de PostgreSQL | Directorio de instalación del cliente de ArcGIS |
---|---|
PostgreSQL 9.2.x | DatabaseSupport/PostgreSQL/9.2/Linux64 |
PostgreSQL 9.3.x | DatabaseSupport/PostgreSQL/9.3/Linux64 |
PostgreSQL 9.4.x | DatabaseSupport/PostgreSQL/9.4/Linux64 |
Como usuario raíz, mueva el archivo de la biblioteca st_geometry.so del directorio DatabaseSupport de ArcGIS al directorio lib de PostgreSQL.
Ahora, su clúster de base de datos y cliente de ArcGIS están listos para que cree una geodatabase.
Crear una geodatabase
Puede ejecutar la herramienta Crear geodatabase corporativa desde ArcGIS for Desktop (Standard o Advanced) o ejecutar una secuencia de comandos de Python desde un cliente de ArcGIS for Desktop (Standard o Advanced), de ArcGIS for Server o de ArcGIS Engine para crear una geodatabase.
Ejecutar la herramienta Crear geodatabase corporativa
Si tiene acceso a ArcGIS for Desktop, puede ejecutar una herramienta de geoprocesamiento para crear la geodatabase.
- Inicie ArcMap o ArcCatalog.
- Abra la herramienta Crear geodatabase corporativa.
Puede buscar o examinar esta herramienta, que se encuentra en el conjunto de herramientas Administración de la geodatabase de la caja de herramientas Administración de datos.
- Elija PostgreSQL en la lista desplegable Plataforma de la base de datos.
- Escriba el nombre del servidor de PostgreSQL en el cuadro de texto Instancia.
- En el cuadro de texto Base de datos, escriba el nombre de la base de datos que desee crear para incluir su geodatabase.
- Debe conectarse al cluster de base de datos como el superusuario de postgres para crear la base de datos y otros objetos; por lo tanto, el cuadro de texto Administrador de base de datos se predetermina a postgres. Si el superusuario de postgres tiene un nombre diferente, escriba ese nombre en el cuadro de texto Administrador de base de datos.
- Escriba la contraseña del superusuario de postgres en el cuadro de texto Contraseña del administrador de base de datos.
- Escriba una contraseña para el usuario administrador de la geodatabase (sde) en el cuatro de texto Contraseña del administrador de geodatabase.
Si el usuario sde ya existe en el clúster de bases de datos, escriba la contraseña del usuario y se crea un esquema sde en la base de datos. Si el usuario no existe, se crea un usuario llamado sde con la contraseña que especifique en el clúster de la base de datos y en la base de datos se crea el esquema correspondiente. Se concede el uso en el esquema sde al rol del grupo público.
- Si tiene un espacio de tabla preconfigurado para utilizarlo como el espacio de tabla predeterminado de la base de datos, escriba su nombre en el cuadro de texto Nombre del espacio de tabla.
Esta herramienta no crea un espacio de tabla; debe especificar un espacio de tabla existente o dejar este cuadro de texto en blanco. Si no se especifica un espacio de tabla, la base de datos se crea en pg_default.
- Para especificar un Archivo de autorización, busque y seleccione el archivo de códigos clave que se creó cuando autorizó ArcGIS for Server Enterprise.
Este archivo se escribe en la carpeta \\Program Files\ESRI\License<release#>\sysgen en servidores de Windows y /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen en Linux. Si aún no lo ha hecho, autorice ArcGIS for Server ahora para crear este archivo.
- Haga clic en el botón Aceptar para ejecutar la herramienta.
Un archivo de registro para la creación de la geodatabase (GDBCreateGeodatabase<#>.log) se escribe en el directorio especificado para su variable %TEMP% en el equipo en el que se ejecuta la herramienta.
Ahora tiene una geodatabase en PostgreSQL.
A continuación, puede crear un usuario que puede cargar datos en la geodatabase.
Ejecutar una secuencia de comandos de Python
Puede copiar, guardar y ejecutar la secuencia de comandos proporcionada aquí para crear una geodatabase desde ArcGIS for Desktop (Standard o Advanced), desde ArcGIS for Server (Standard o Advanced) o desde un cliente de ArcGIS Engine (con la extensión Geodatabase Update).
-
Cree un archivo de texto en el equipo cliente de ArcGIS y copie en él la secuencia de comandos siguiente.
""" 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 """ # Import system modules import arcpy import os import optparse import 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', ''], 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: Do not specify 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 applies to geodatabases in SQL Server only. Type SDE_SCHEMA to create geodatabase in SDE schema or type DBO_SCHEMA to create geodatabase in DBO schema. Default=SDE_SCHEMA") parser.add_option ("-u", dest="Gdb_admin", type="string", default="", help="Geodatabase administrator user name; Must always be sde for PostgreSQL, sde-schema geodatabases in SQL Server, and master sde geodatabase in Oracle") 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; For PostgreSQL, type name of existing tablespace in which to store database. If no tablespace name specified, pg_default is used. For Oracle, type name of existing tablespace, or, if tablespace with specified name does not exist, it will be created and set as the default tablespace for the sde user. If no tablespace name is specified, SDE_TBS tablespace is created and set as sde user default. Tablespace name not supported for SQL Server.") parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file; file created when ArcGIS for Server Enterprise authorized, and stored in \\Program Files\ESRI\License<release#>\sysgen on Windows or /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen on Linux") # 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") 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)
- Guarde el archivo con una extensión .py.
- Ejecute la secuencia de comandos, proporcionando opciones e información específicas de su sitio.
En el siguiente ejemplo ejecutado desde un equipo con Linux, el archivo create_gdb.py se ejecuta para un clúster llamado pgprod como superusuario postgres con la contraseña N0pe3king!. Se crea una base de datos llamada entgdb en un espacio de tabla existente llamado gis y el rol de inicio de sesión sde con la contraseña Tgdbst@rtsh3r3. Se especifica un archivo de códigos clave en la ubicación predeterminada de ArcGIS Server para autorizar la geodatabase.
./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/License10.3/sysgen/keycodes
En este ejemplo, se ejecuta la misma secuencia de comandos desde un equipo con Windows:
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\License10.3\sysgen\keycodes
Ahora tiene una geodatabase en PostgreSQL.
A continuación, puede crear un usuario que puede cargar datos en la geodatabase.
El administrador de PostgreSQL crea la base de datos; el administrador de la geodatabase, la geodatabase
Si la persona que va a crear la geodatabase no tiene acceso a la contraseña del administrador de base de datos (el superusuario postgres), este puede configurar la base de datos y, a continuación, el administrador de la geodatabase puede conectarse a ella con el rol de inicio de sesión sde y crear una geodatabase en la base de datos con la herramienta de geoprocesamiento Habilitar geodatabase corporativa o una secuencia de comandos de Python.
La herramienta Habilitar geodatabase corporativa acepta un archivo de conexión de base de datos como entrada y crea las tablas del sistema, vistas, funciones y procedimientos de geodatabase en el esquema sde. Antes de que pueda ejecutarse la herramienta, el administrador de base de datos debe configurar lo siguiente en el clúster de base de datos de PostgreSQL:
- Un rol de inicio de sesión llamado sde con estado de superusuario
- Una base de datos
- Un esquema sde en la base de datos, propiedad del rol de inicio de sesión sde
- La biblioteca st_geometry debe estar en el directorio de instalación de PostgreSQL
Configurar PostgreSQL
En primer lugar, el administrador de base de datos debe preparar PostgreSQL para almacenar una geodatabase.
Las instrucciones siguientes son para que el administrador de base de datos configure el clúster de base de datos de PostgreSQL en un servidor Linux. Tenga en cuenta que solo deben usarse caracteres en minúscula en todos los nombres de objetos de base de datos (la base de datos, el esquema y los roles de inicio de sesión).
-
Obtenga e instale una versión compatible de PostgreSQL y configure el cluster de la base de datos.
Pude descargar instalaciones de PostgreSQL desde My Esri. Si utiliza esta instalación, no es necesaria ninguna configuración específica no predeterminada para utilizar PostgreSQL con ArcGIS. Solo asegúrese de cambiar la configuración regional y la ubicación si desea utilizar un valor diferente al predeterminado. Como alternativa, puede obtener la instalación de PostgreSQL por su cuenta.
Consulte la documentación de PostgreSQL para obtener instrucciones sobre la instalación y configuración de PostgreSQL.
- Configure el clúster de la base de datos para aceptar las conexiones.
Esto incluye modificar el archivo pg_hba.conf para permitir que el clúster de bases de datos acepte conexiones remotas.
- Establezca las siguientes variables de entorno para el usuario postgres si no están ya establecidas correctamente:
- PGDATA: este se debería haber establecido con la instalación de PostgreSQL. Si no, establézcalo en la ubicación del directorio de datos de PostgreSQL. (Se encuentra en el directorio de instalación de PostgreSQL).
- LD_LIBRARY_PATH: establezca la variable LD_LIBRARY_PATH en el directorio lib de PostgreSQL. La ubicación del directorio lib varía en función de cómo haya instalado PostgreSQL. Para determinar la ubicación correcta para la instalación de PostgreSQL, ejecute pg_config como usuario de postgre. Establecer LD_LIBRARY_PATH en el valor que se muestra para PKGLIBDIR.
- PATH: establezca la variable PATH para que contenga postgresql/bin.
- De manera opcional, puede crear un espacio de tabla en el clúster de base de datos en el que almacenó su base de datos.
- Cree un rol de inicio de sesión llamado sde y otórguele estado de superusuario.
- Cree la base de datos que almacenará la geodatabase.
- Cree un esquema llamado sde en la base de datos y proporcione autoridad al rol de inicio de sesión en el esquema.
- Asimismo, debe colocar el archivo de la biblioteca st_geometry.so en el directorio lib de PostgreSQL. Este archivo se instala con clientes de ArcGIS. Pida al administrador de la geodatabase que le proporcione el archivo correcto para su instalación de PostgreSQL una vez que haya instalado el cliente de ArcGIS.
Cuando tenga el archivo st_geometry.so correcto, colóquelo en el directorio lib de PostgreSQL mientras inicia sesión como usuario raíz. Tenga en cuenta que la ubicación del directorio lib en Linux puede variar en función de cómo haya instalado PostgreSQL. Para determinar la ubicación correcta para la instalación de PostgreSQL, ejecute pg_config como usuario de postgre. El valor que se devuelve para PKGLIBDIR es el directorio lib donde es necesario colocar la biblioteca st_geometry.
- Proporcione información de conexión de base de datos al administrador de la geodatabase.
Este debe conocer el nombre del clúster de base de datos, el nombre de base de datos y la contraseña del rol de inicio de sesión sde.
Ahora que existe una base de datos y está configurada, el administrador de la geodatabase puede preparar un cliente de ArcGIS y crear una geodatabase.
Configurar un cliente de ArcGIS
El administrador de la geodatabase debe seguir estos pasos para preparar el cliente de ArcGIS para crear una geodatabase:
- Instale el cliente de ArcGIS desde el cual creará la geodatabase.
Normalmente, las geodatabases se crean desde ArcGIS for Server o ArcGIS for Desktop (Standard o Advanced).
- Una vez instalado el cliente de ArcGIS, puede acceder al archivo st_geometry.so. El administrador de base de datos debe terminar de configurar el clúster de base de datos. Proporcione el archivo correcto al administrador de base de datos.
En la siguiente tabla se indica dónde encontrar cada versión de la biblioteca st_geometry.so en la instalación del cliente de ArcGIS. Debe usar la biblioteca st_geometry.so específica de la versión de PostgreSQL donde creará su geodatabase. Si se coloca una versión incorrecta de la biblioteca st_geometry.so en el directorio lib de PostgreSQL, no podrá crear una geodatabase.
Versión de PostgreSQL Directorio de instalación del cliente de ArcGIS PostgreSQL 9.2.x
DatabaseSupport/PostgreSQL/9.2/Linux64
PostgreSQL 9.3.x
DatabaseSupport/PostgreSQL/9.3/Linux64
PostgreSQL 9.4.x
DatabaseSupport/PostgreSQL/9.4/Linux64
- Si va a utilizar ArcGIS for Server con la geodatabase en PostgreSQL, establezca o modifique las siguientes variables para la cuenta de ArcGIS:
- SDEHOME: establezca esta variable en el directorio de instalación de ArcGIS for Server.
Por ejemplo, si ArcGIS for Server está instalado en la ubicación predeterminada de un servidor Linux, establezca exportar SDEHOME=/home/ags/arcgis/server.
- PG_HOME: establezca PG_HOME en /opt/PostgreSQL/<version>.
En este ejemplo, PG_HOME se configura para una instalación de PostgreSQL 9.2.2: exportar PG_HOME=/opt/PostgreSQL/9.2.
- Si ArcGIS for Server está instalado en un servidor de Windows, agregue las ubicaciones PG_HOME\bin y SDEHOME\bin a la variable PATH.
Por ejemplo, establezca exportar PATH=$PATH:$PG_HOME/bin:$SDEHOME/bin en Linux.
- Si ArcGIS for Server está instalado en un servidor Linux, agregue $PG_HOME\lib y $SDEHOME\lib a la variable LD_LIBRARY_PATH.
Por ejemplo, establezca exportar LD_LIBRARY_PATH=$LD_LIBRARY_PATH$PG_HOME/lib:$SDEHOME/lib.
- SDEHOME: establezca esta variable en el directorio de instalación de ArcGIS for Server.
Su cliente de ArcGIS está listo para conectarse a la base de datos y crear una geodatabase.
Crear una geodatabase
El administrador de la geodatabase puede ejecutar la herramienta Habilitar geodatabase corporativa desde ArcGIS for Desktop (Standard o Advanced) o una secuencia de comandos de Python desde un cliente de ArcGIS for Desktop, ArcGIS for Server o ArcGIS Engine para crear una geodatabase en la base de datos existente.
Ejecutar la herramienta Habilitar geodatabase corporativa
Si tiene acceso a ArcGIS for Desktop, puede ejecutar una herramienta de geoprocesamiento para crear la geodatabase.
- Inicie ArcMap o ArcCatalog.
- Conéctese a la base de datos PostgreSQL desde el árbol de Catálogo con el rol de inicio de sesión sde.
Asegúrese de guardar la contraseña del usuario en el cuadro de diálogo Conexión de base de datos.
- Haga clic con el botón derecho en la conexión de base de datos y haga clic en Habilitar geodatabase.
Se abre la herramienta Habilitar geodatabase corporativa y el campo Conexión de la base de datos de entrada se completa con el nombre y la ubicación del archivo de conexión.
- Navegue al archivo de autorización de ArcGIS for Server que se creó cuando autorizó ArcGIS for Server y agréguelo al cuadro de texto Archivo de autorización.
Cuando utiliza el asistente para autorizar ArcGIS for Server, se escribe un archivo de códigos clave en el servidor donde está instalado el software. Si autorizó ArcGIS for Server en un cuadro de Linux, el archivo de códigos clave se creó en /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release>/sysgen. Si autorizó en un servidor de Windows, el archivo se creó en Program Files\ESRI\License<release>\sysgen. Si aún no lo hizo, autorice ArcGIS for Server para crear este archivo.
- Haga clic en el botón Aceptar para ejecutar la herramienta.
Se crea una geodatabase en la base de datos.
Un archivo de registro para la creación de la geodatabase (GDBCreateGeodatabase<#>.log) se escribe en el directorio especificado para su variable %TEMP% en el equipo en el que se ejecuta la herramienta. Si tiene algún problema al ejecutar la herramienta, verifique este archivo de registro para solucionar el problema.
A continuación, puede crear un usuario que puede cargar datos en la geodatabase.
Ejecutar una secuencia de comandos de Python
Si desea crear la geodatabase ejecutando una secuencia de comandos desde una instalación de ArcGIS for Server, ArcGIS for Desktop (Standard o Advanced) o ArcGIS Engine, puede usar la secuencia de comandos que se proporciona aquí.
- Cree un archivo de texto en el equipo con ArcGIS for Server y copie en él la secuencia de comandos siguiente.
""" 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)
- Guarde el archivo con una extensión .py.
- Ejecute la secuencia de comandos, proporcionando opciones e información específicas de su sitio.
En el siguiente ejemplo, se ejecuta el archivo enable_gdb.py para la base de datos spdata en el clúster de base de datos pgprod. La conexión se realiza con el nombre de usuario sde y la contraseña Tgdbst@rtsh3r3. Se especifica un archivo de códigos clave en la ubicación predeterminada de ArcGIS Server para autorizar la geodatabase.
./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/License10.3/sysgen/keycodes
Ahora tiene una geodatabase en PostgreSQL.
A continuación, puede crear un usuario que puede cargar datos en la geodatabase.