Disponible con una licencia Standard o Advanced.
Puede agregar el tipo Esri ST_Geometry, sus subtipos y funciones a la base de datos de Oracle utilizando la herramienta de geoprocesamiento Crear tipo espacial o una secuencia de comandos de Python que llame a la función CreateSpatialType de ArcPy.
Una vez que agrega el tipo ST_Geometry a su base de datos, puede usarlo para almacenar datos espaciales.
Tanto la herramienta como la función crean un usuario denominado sde en la base de datos. El usuario sde posee el tipo ST_Geometry, sus subtipos, funciones y tablas.
Utilice la herramienta de geoprocesamiento Crear tipo espacial
Los siguientes pasos explican cómo ejecutar la herramienta de geoprocesamiento Crear tipo espacial para instalar el tipo ST_Geometry en una base de datos Oracle:
- Copie la biblioteca st_shapelib (Windows) o libst_shapelib (Linux) del directorio DatabaseSupport en la ubicación de instalación de ArcGIS Desktop y llévela a una ubicación en el servidor de Oracle.
Asegúrese de utilizar la biblioteca apropiada para el sistema operativo del servidor de Oracle.
El directorio en el servidor donde se coloca la biblioteca debe ser accesible desde el cliente el equipo en que ejecute la herramienta Crear tipo espacial o la secuencia de comandos. Si coloca la biblioteca en un equipo de UNIX o Linux, asegúrese de que el administrador de base de datos tiene acceso de lectura al directorio y ejecute los privilegios en el archivo de biblioteca.
- Inicie ArcCatalog o ArcMap, abra la ventana Catálogo y conecte con la base de datos como administrador de base de datos del sistema Oracle.
Se crea un archivo .sde en C:\Users\<user_name>\AppData\Roaming\ESRI\Desktop<version_number>\ArcCatalog.
- Abra la herramienta Crear tipo espacial .
Puede utilizar la ventana Buscar para buscar la herramienta o abrir la herramienta desde el conjunto de herramientas Espacio de trabajo de la caja de herramientas Administración de datos.
- Agregar la conexión de la base de datos que creó en el paso 3 al cuadro de texto Base de datos de entrada.
- Escriba una contraseña para que la utilice el usuario sde en el cuadro de texto Contraseña de usuario SDE.
- Si desea crear un espacio de tabla para utilizar como predeterminado del usuario sde, escríbalo en el cuadro de texto Nombre del espacio de tabla.
La herramienta Crear tipo espacial crea un espacio de tablas de 400 MB en la ubicación de almacenamiento predeterminada de Oracle. Si desea controlar dónde se ubica el espacio de tabla o el tamaño del espacio de tabla, cree el espacio de tabla en Oracle primero y especifique el espacio de tabla existente en el cuadro de texto Nombre de espacio de tabla. La herramienta establecerá este espacio de tabla preexistente como el valor predeterminado para el usuario sde.
- Busque o escriba la Ruta de la biblioteca de formas ST_Geometry. Esta es la ruta al directorio del servidor de Oracle donde ha colocado el archivo libst_shapelib.so o st_shapelib.dll, incluido el nombre del archivo.
Por ejemplo, si ha colocado el archivo libst_shapelib.so en el directorio, libraries, en un servidor Linux llamado boxy, escribirá /boxy/libraries/libst_shapelib.so.
- Haga clic en el botón Aceptar para ejecutar la herramienta.
El tipo ST_Geometry, sus subtipos y funciones se crean en el esquema del usuario sde y se hace una entrada en Oracle para la biblioteca de formas.
Si planea utilizar la función ST_Transform para realizar transformaciones geográficas, debe copiar la carpeta pedata desde el directorio de instalación de ArcMap, colocarla en el servidor de Oracle y establecer una variable de entorno PEDATAHOME en el servidor que señala esa ubicación.
Use la función CreateSpatialType
Ejecute una secuencia de comandos de Python que llame a la función CreateSpatialType de ArcPy en cualquier equipo de ArcMap, ArcGIS Pro o ArcGIS Server para crear el tipo de Esri ST_Geometry, sus subtipos y funciones en una base de datos de Oracle.
- Copie la biblioteca st_shapelib (Windows) o libst_shapelib (Linux) del directorio DatabaseSupport en la ubicación de instalación de ArcGIS Desktop y llévela a una ubicación en el servidor de Oracle.
Asegúrese de utilizar la biblioteca apropiada para el sistema operativo del servidor de Oracle.
El directorio en el servidor donde se coloca la biblioteca debe ser accesible desde el cliente el equipo en que ejecute la herramienta Crear tipo espacial o la secuencia de comandos. Si coloca la biblioteca en un equipo de UNIX o Linux, asegúrese de que el administrador de base de datos tiene acceso de lectura al directorio y ejecute los privilegios en el archivo de biblioteca.
-
Cree un archivo de texto en el equipo cliente de ArcGIS y copie en él la secuencia de comandos siguiente.
""" Name: create_spatial_type.py Description: Provide connection information to an Oracle or PostgreSQL database and create spatial type in the database. Type create_spatial_type.py -h or create_spatial_type.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=['ORACLE', 'POSTGRESQL', ''], default="", help="Type of enterprise DBMS: ORACLE, or POSTGRESQL.") 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="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 ("-D", dest="Database", type="string", default="none", help="Database name: Not required for Oracle") parser.add_option ("-p", dest="Password", type="string", default="", help="SDE user password") parser.add_option ("-t", dest="tablespace", type="string", default="", help="Default tablespace for SDE user") parser.add_option ("--path", dest="libpath", type="string", default="", help="path to the ST shape library including library file name.") # 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() password = options.Password tablespace = options.tablespace database = options.Database.lower() dbms_admin = options.Dbms_admin dbms_admin_pwd = options.Dbms_admin_pwd lib_path = options.libpath 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) # Local variables instance_temp = instance.replace("\\","_") instance_temp = instance_temp.replace("/","_") instance_temp = instance_temp.replace(":","_") Conn_File_NameT = instance_temp + "_" + database 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, instance, 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=dbms_admin, password=dbms_admin_pwd, 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: Create spatial type... try: print "Create spatial type...\n" arcpy.CreateSpatialType_management(input_workspace=Connection_File_Name_full_path, sde_user_password=password, tablespace_name=tablespace, st_shape_library_path=lib_path) print "after spatial type...\n" 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.
Por ejemplo, esta secuencia de comandos crea el tipo ST_Geometry en la instancia oserve/orcl de Oracle, y la biblioteca ST_Geometry está ubicada en el directorio /ora/shape del servidor de Oracle (oserve).
create_spatial_type.py --DBMS ORACLE -i oserve/orcl --auth DATABASE_AUTH -U sys -P M3tsy$ -p 3$@b0eg -t sde --path /net/oserve/ora/shape/libst_shapelib.so
El tipo ST_Geometry, sus subtipos y funciones se crean en el esquema del usuario sde y se hace una entrada en Oracle para la biblioteca de formas.
Si planea utilizar la función ST_Transform para realizar transformaciones geográficas, debe copiar la carpeta pedata desde el directorio de instalación de ArcMap, colocarla en el servidor de Oracle y establecer una variable de entorno PEDATAHOME en el servidor que señala esa ubicación.