Crear una geodatabase en PostgreSQL o Linux

Disponible con una licencia Standard o Advanced.

Para crear una geodatabase en una base de datos de PostgreSQL, ejecute una herramienta de geoprocesamiento o una secuencia de comandos de Python desde un cliente de ArcGIS.

Cuando se crea una geodatabase en ArcGIS Pro 3.4, la versión de la geodatabase es 11.4.0.x.

Comience por leer los requisitos previos a continuación y siga las instrucciones que se correspondan con su situación.

Estas instrucciones se aplican a las instalaciones de PostgreSQL de un servidor Linux. Si tiene instalado PostgreSQL en un servidor Microsoft Windows, consulte Crear una geodatabase en PostgreSQL en Windows.

Requisitos previos

Para crear una geodatabase en PostgreSQL, realice lo siguiente:

  1. Confirme que la combinación de ArcGIS, PostgreSQL y el sistema operativo que desea usar sea compatible.
  2. Obtenga un archivo de códigos clave de ArcGIS Server y ubíquelo en una ubicación a la que pueda acceder desde el cliente de ArcGIS que vaya a usar para crear la geodatabase.
  3. Si va a crear o habilitar la geodatabase en una base de datos de PostgreSQL existente, asegúrese de que exista el esquema público.

    Se crea una de las tablas del sistema de geodatabase en el esquema público.

  4. Determine quién creará la geodatabase, ya que influye en quién crea la base de datos y qué herramienta utiliza usted. Siga las instrucciones que se corresponden con su situación:

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 conoce la contraseña de ambos roles de inicio de sesión, puede usar la herramienta de geoprocesamiento Crear geodatabase corporativa o un script de Python que llame a la herramienta para crear una geodatabase en PostgreSQL.

La herramienta Crear geodatabase corporativa crea los objetos de base de datos necesarios para la geodatabase y otorga los privilegios requeridos. 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 utilizando la plantilla predeterminada PostgreSQL (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. Cuando ejecute la herramienta o secuencia de comandos Crear geodatabase corporativa, especifique el nombre de la base de datos que creó a partir de una plantilla diferente.

  • Crea un rol de inicio de sesión sde autenticado de base de datos 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. Una vez creada la geodatabase, puede aumentar la seguridad de la geodatabase revocando el uso del público en el esquema sde y otorgándolo solo a aquellos grupos y roles de inicio de sesión y roles que necesiten acceder a la geodatabase.

  • Crea una geodatabase.

En primer lugar, usted (o alguien del departamento de TI) debe instalar PostgreSQL y configurar el clúster de base de datos.

Instalar y configurar PostgreSQL

Siga estos pasos para configurar un clúster de base de datos de PostgreSQL para almacenar una geodatabase:

  1. Obtenga e instale una versión compatible de PostgreSQL y configure el clúster de la base de datos.

    Consulte las instrucciones de instalación y configuración de PostgreSQL en la documentación de PostgreSQL.

  2. 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 base de datos acepte conexiones remotas.

  3. Cree un espacio de tabla en el clúster de bases de datos en el que almacenar la base de datos. Si no crea un espacio de tabla, se utiliza el espacio de tabla pg_default.

A continuación, instale y configure un cliente de ArcGIS.

Instalar un cliente de ArcGIS

Usted (o alguien de su departamento de TI) debe instalar ArcGIS Pro (Desktop Standard o Desktop Advanced) o ArcGIS Server. Puede ejecutar una secuencia de comandos de Python para crear una geodatabase desde cualquiera de estos clientes. Para ejecutar la herramienta de geoprocesamiento Crear geodatabase corporativa en lugar de una secuencia de comandos, instale ArcGIS Pro.

Nota:

Necesita un archivo de códigos clave de ArcGIS Server (Enterprise Edition) para autorizar la geodatabase en la siguiente sección. Incluso si no ejecuta una secuencia de comandos de Python desde un equipo con ArcGIS Server para crear la geodatabase, debe autorizar ArcGIS Server para obtener el archivo de códigos clave. Puede que tenga que copiar el archivo de códigos clave desde el equipo de ArcGIS Server en una ubicación a la que pueda acceder la herramienta de geoprocesamiento Crear geodatabase corporativa.

Proporcionar acceso a un tipo espacial

Para almacenar una geodatabase, PostgreSQL debe tener acceso a un tipo espacial. Puede proporcionar al clúster de base de datos acceso al tipo espacial ST_Geometry de Esri o instalar PostGIS.

Cuando el clúster de base de datos tiene acceso a un tipo espacial, puede crear una geodatabase.

ST_Geometry

Para usar ST_Geometry en la geodatabase, coloque el archivo st_geometry.so en el directorio lib de PostgreSQL. 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 postgres. El valor que se devuelve para PKGLIBDIR es el directorio lib donde es necesario colocar la biblioteca st_geometry.

Puede descargar el archivo st_geometry.so desde My Esri.

Como usuario raíz, coloque el archivo de la biblioteca st_geometry.so específico de la versión de PostgreSQL en el directorio PostgreSQL lib. Si no coloca la biblioteca st_geometry.so correcta en el directorio PostgreSQL lib, no puede crear una geodatabase.

El clúster de base de datos y cliente de ArcGIS están listos para que cree una geodatabase.

PostGIS

Para usar tipos espaciales de PostGIS en la base de datos, instale PostGIS en el clúster de base de datos de PostgreSQL. Asegúrese de instalar la versión de PostGIS compatible con ArcGIS.

Crear una geodatabase

Ejecute la herramienta Crear geodatabase corporativa desde ArcGIS Pro o ejecute una secuencia de comandos de Python que llame a la herramienta desde un equipo ArcGIS Pro o ArcGIS Server para crear una geodatabase.

Ejecutar la herramienta Crear geodatabase corporativa

Siga estos pasos para crear una geodatabase usando la herramienta Crear geodatabase corporativa en ArcGIS Pro:

  1. Inicie ArcGIS Pro.
  2. 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.

  3. Elija PostgreSQL en la lista desplegable Plataforma de la base de datos.
  4. Escriba el nombre del servidor de PostgreSQL en el cuadro de texto Instancia.
  5. En el cuadro de texto Base de datos, escriba el nombre de la base de datos que desee crear para incluir la geodatabase.
    Nota:

    Escriba el nombre de la base de datos en minúsculas; los nombres de objetos en mayúsculas o con una mezcla de mayúsculas y minúsculas no son compatibles con las geodatabases en PostgreSQL. Si escribe el nombre de una base de datos en mayúsculas o en una mezcla de mayúsculas y minúsculas, ArcGIS lo convierte a minúsculas.

  6. 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 tiene un nombre diferente, escriba ese nombre en el cuadro de texto Administrador de base de datos.

    No puede utilizar un inicio de sesión de superusuario de postgres autenticado del sistema operativo en esta versión.

  7. Escriba la contraseña del superusuario de postgres en el cuadro de texto Contraseña del administrador de base de datos.
  8. El administrador de la geodatabase se debe llamar sde en PostgreSQL, por lo que el cuadro de texto Administrador de la geodatabase se rellena con sde.
  9. Escriba una contraseña para el usuario sde en el cuadro de texto Contraseña del administrador de la geodatabase.

    Si el usuario sde ya existe en el cluster de la base de datos, escriba la contraseña del usuario existente y se crea un esquema sde en la base de datos. Si el usuario no existe aún, un usuario denominado sde con la contraseña que especificó se crea en el cluster de la base de datos y un esquema correspondientes se crea en la base de datos. El uso se concede en el esquema sde para el rol de grupo público.

    Sugerencia:

    Para hacer que el esquema sea más seguro después de crear la geodatabase, puede revocar el uso del rol de grupo público, crear un nuevo rol de grupo, otorgar uso en el esquema sde a ese rol y otorgar el rol de grupo a todos los roles de inicio de sesión que necesiten acceder a la geodatabase.

  10. Si tiene un espacio de tabla configurado 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.

  11. Para un Archivo de autorización, busque y seleccione el archivo de códigos clave que se creó cuando autorizó ArcGIS Server (Enterprise edition).

    Este archivo se escribe en \\Program Files\ESRI\License<release#>\sysgen al instalar ArcGIS Server en Windows y en /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen al instalar ArcGIS Server en Linux. Copie este archivo en una ubicación que sea accesible para el cliente desde el que se creará la geodatabase. Si aún no lo ha hecho, autorice ahora a ArcGIS Server a crear este archivo.

  12. Utilice la lista desplegable Tipo espacial para elegir el tipo espacial que utilizará la geodatabase: ST_Geometry o PostGIS.
  13. Haga clic en Ejecutar.

Ahora tiene una geodatabase en una base de datos de PostgreSQL.

Puede encontrar los mensajes relativos a la creación de la geodatabase en el archivo sde_setup.log, que se crea en el directorio especificado para la variable TEMP del equipo en el que se ejecuta la secuencia de comandos. Si tiene algún problema al crear una geodatabase, consulte este archivo para solucionarlo.

A continuación, puede crear un usuario que puede cargar datos en la geodatabase.

Ejecutar un script de Python desde un equipo cliente de ArcGIS

Puede copiar, guardar y ejecutar la secuencia de comandos proporcionada aquí para crear una geodatabase desde un equipo con ArcGIS Pro (Desktop Standard o Desktop Advanced) o ArcGIS Server.

  1. 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
    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 and higher releases")
    
    #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")
    parser.add_option ("--type", dest="Spatial_type", type="choice", choices=['ST_GEOMETRY', 'POSTGIS'], default="ST_GEOMETRY", help="Spatial Type for PostgreSQL geodatabase, ST_GEOMETRY or POSTGIS. Default=ST_GEOMETRY")
    
    # 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
    	spatial_type = options.Spatial_type.upper()
    	
    	
    	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( 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.management.CreateEnterpriseGeodatabase(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, spatial_type=spatial_type)
    		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)
  2. Guarde el archivo con una extensión .py.
  3. Ejecute el script, proporcionando opciones e información específicas de su sitio.

    En el siguiente ejemplo ejecutado desde un equipo con Windows, el archivo create_gdb.py se ejecuta para un clúster de base de datos llamado pgprod como el 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 '\\Program Files\ESRI\License\sysgen\keycodes'

    En este ejemplo, se ejecuta el mismo script desde un equipo con Linux:

    ./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/License/sysgen/keycodes'

    Sugerencia:

    Introduzca -h o --help en la ventana de comando para obtener ayuda con la sintaxis.

Ahora tiene una geodatabase en una base de datos de PostgreSQL.

Puede encontrar los mensajes relativos a la creación de la geodatabase en el archivo sde_setup.log, que se crea en el directorio especificado para la variable TEMP o TMP del equipo en el que se ejecuta la secuencia de comandos. Si tiene algún problema al crear una geodatabase, consulte este archivo para solucionarlo.

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 crea 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), el administrador de base de datos debe crear la base de datos, el rol de inicio de sesión sde y el esquema sde. A continuación, el administrador de la geodatabase puede conectarse a la base de datos con el inicio de sesión sde y crear una geodatabase con la herramienta de geoprocesamiento Habilitar geodatabase corporativa o una secuencia de comandos de Python que llame a la herramienta.

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 denominado sde con estado de superusuario.
  • Una base de datos.
  • Un esquema sde en la base de datos al cual se haya concedido autoridad al inicio de sesión sde.
  • Tipo espacial: la biblioteca st_geometry debe estar en la carpeta lib, en el directorio de instalación de PostgreSQL, o PostGIS debe configurarse en la base de datos.

Instalar y configurar PostgreSQL y un tipo espacial

En primer lugar, el administrador de base de datos debe preparar PostgreSQL para almacenar una geodatabase.

Para configurar el clúster de base de datos de PostgreSQL como administrador de la base de datos, siga estos pasos:

Nota:

Solo deben usarse caracteres en minúscula en todos los nombres de objetos de base de datos.

  1. Obtenga e instale una versión compatible de PostgreSQL y configure el clúster de la base de datos.

    Consulte las instrucciones de instalación y configuración de PostgreSQL en la documentación de PostgreSQL.

  2. 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 base de datos acepte conexiones remotas.

  3. Establezca las siguientes variables de entorno para el usuario postgres si no están ya establecidas correctamente:

    • PGDATA: 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).
    • PATH: establezca la variable PATH para que contenga postgresql/bin.
    • LD_LIBRARY_PATH: si configura el tipo ST_Geometry correspondiente a la geodatabase, establezca la variable LD_LIBRARY_PATH en el directorio PostgreSQL lib. 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 postgres. Establecer LD_LIBRARY_PATH en el valor que se muestra para PKGLIBDIR.

  4. De manera opcional, puede crear un espacio de tabla en el clúster de base de datos en el que almacenó la base de datos.
  5. Cree un rol de inicio de sesión llamado sde y otórguele estado de superusuario.

    Sugerencia:

    En caso de que el administrador de la geodatabase no elimine conexiones de base de datos, puede revocar el estado de superusuario del rol sde una vez que se haya creado la geodatabase.

  6. Cree la base de datos para almacenar la geodatabase.
  7. Cree un esquema llamado sde en la base de datos y proporcione autoridad al rol de inicio de sesión en el esquema.
  8. Habilite un tipo de datos espaciales en la base de datos.
    • Para configurar PostGIS en la base de datos, consulte las instrucciones en la documentación de PostGIS y continúe en el paso 10.
    • Para configurar ST_Geometry, vaya al paso siguiente.
  9. Obtenga y coloque la biblioteca the ST_Geometry en el directorio PostgreSQL lib.
    1. Descargue el archivo st_geometry.so desde My Esri.

      Descargue la biblioteca correcta para la versión de PostgreSQL que esté utilizando. Si usa una incorrecta, fallará la creación de la geodatabase.

      Si la opción de descarga no está presente, póngase en contacto con el administrador de su organización de ArcGIS.

    2. Inicie sesión como usuario raíz en el servidor en el que se instaló PostgreSQL.
    3. Coloque el archivo st_geometry.so en el directorio lib de PostgreSQL.

      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 postgres. El valor que se devuelve para PKGLIBDIR es el directorio lib donde es necesario colocar la biblioteca st_geometry.

  10. 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 la base de datos y la contraseña del rol de inicio de sesión sde.

Ahora que existe una base de datos, el administrador de la geodatabase puede instalar un cliente de ArcGIS y crear una geodatabase.

Instalar un cliente de ArcGIS

El administrador de la geodatabase necesita un cliente de ArcGIS desde el que se creará la geodatabase: ArcGIS Pro (Desktop Standard o Desktop Advanced) o ArcGIS Server.

Nota:

Necesita un archivo de códigos clave de ArcGIS Server (Enterprise Edition) para autorizar la geodatabase en la siguiente sección. Aunque no ejecute un script de Python desde un equipo con ArcGIS Server para crear la geodatabase, debe instalar y autorizar ArcGIS Server para obtener el archivo de códigos clave. Puede que tenga que copiar el archivo de códigos clave desde el equipo de ArcGIS Server en una ubicación a la que pueda acceder la herramienta de geoprocesamiento Habilitar geodatabase corporativa.

Una vez que el cliente de ArcGIS se haya instalado, podrá 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 Pro (Desktop Standard o Desktop Advanced) o ejecutar una secuencia de comandos de Python desde ArcGIS Pro o ArcGIS Server que llame a la herramienta para crear una geodatabase en la base de datos existente.

Ejecutar la herramienta Habilitar geodatabase corporativa

Siga estos pasos para crear una geodatabase usando la herramienta Habilitar geodatabase corporativa en ArcGIS Pro:

  1. Inicie ArcGIS Pro.
  2. Conéctese a la base de datos PostgreSQL como el usuario sde.

    Si el usuario sde es un usuario autenticado en la base de datos, debe guardar la contraseña del usuario sde en la conexión de la base de datos.

  3. Abra la herramienta Habilitar geodatabase corporativa.
  4. Arrastre el nuevo archivo de conexión al campo Base de datos de entrada.
  5. Para especificar un valor de Archivo de autorización, examine y elija el archivo de códigos clave que se creó al autorizar ArcGIS Server (edición Enterprise).

    Este archivo se escribe en \\Program Files\ESRI\License<release#>\sysgen al instalar ArcGIS Server en Windows y en /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen al instalar ArcGIS Server en Linux. Copie este archivo en una ubicación que sea accesible para el cliente desde el que se creará la geodatabase. Si aún no lo ha hecho, autorice ahora a ArcGIS Server a crear este archivo.

  6. Haga clic en Ejecutar.

Ahora tiene una geodatabase en una base de datos de PostgreSQL.

Puede encontrar los mensajes relativos a la creación de la geodatabase en el archivo sde_setup.log, que se crea en el directorio especificado para la variable TEMP del equipo en el que se ejecuta la secuencia de comandos. Si tiene algún problema al crear una geodatabase, consulte este archivo para solucionarlo.

A continuación, el administrador de la base de datos puede crear roles de inicio de sesión y esquemas coincidentes para los usuarios que crearán, editarán y verán datos y crearán roles de inicio de sesión para editores y visualizadores de datos.

Ejecutar un script de Python desde un equipo cliente de ArcGIS

Para crear la geodatabase ejecutando un script desde un equipo de ArcGIS Pro (Desktop Standard o Desktop Advanced) o ArcGIS Server puede usar el script que se proporciona aquí.

Siga estos pasos para ejecutar un script de Python y crear una geodatabase en una base de datos de PostgreSQL:

  1. Cree un archivo de texto en el equipo cliente de ArcGIS 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
    """
    
    # 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)

  2. Guarde el archivo con una extensión .py.
  3. Ejecute el script, proporcionando opciones e información específicas de su sitio.

    En el siguiente ejemplo, el archivo enable_gdb.py se ejecuta desde un equipo con Windows. El nombre de la base de datos es spdata y existe en un clúster de base de datos llamado 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 en Windows para autorizar la geodatabase.

    enable_gdb.py --DBMS POSTGRESQL -i pgprod --auth DATABASE_AUTH 
    -u sde -p Tgdbst@rtsh3r3 -D spdata -l '\\Program Files\ESRI\License\sysgen\keycodes'

    En este ejemplo, el mismo archivo se ejecuta desde un equipo con Linux y el archivo de códigos clave se encuentra en la ubicación predeterminada de ArcGIS Server en Linux.

    ./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/License/sysgen/keycodes'

    Sugerencia:

    Introduzca -h o --help en la ventana de comando para obtener ayuda con la sintaxis.

Ahora tiene una geodatabase en una base de datos de PostgreSQL.

Puede encontrar los mensajes relativos a la creación de la geodatabase en el archivo sde_setup.log, que se crea en el directorio especificado para la variable TEMP o TMP del equipo en el que se ejecuta el script. Si tiene algún problema al crear una geodatabase, consulte este archivo para solucionarlo.

A continuación, el administrador de la base de datos puede crear roles de inicio de sesión y esquemas coincidentes para los usuarios que crearán, editarán y verán datos y crearán roles de inicio de sesión para editores y visualizadores de datos.