¿Cómo ArcSDE utiliza Oracle Spatial?

ArcSDE admite Oracle Spatial u Oracle Locator para el almacenamiento y la administración de geometría en una base de datos de Oracle. Para utilizarlo, debe tener SDO_GEOMETRY especificado para el parámetro GEOMETRY_STORAGE de una de las palabras clave de configuración. Si desea utilizar el almacenamiento de geometría de Oracle Spatial la mayor parte del tiempo, especifique SDO_GEOMETRY para el parámetro GEOMETRY_STORAGE en la palabra clave de configuración DEFAULTS. Si desea utilizarlo sólo para algunos datasets, utilice la palabra clave SDO_GEOMETRY al crear cada dataset individual.

Utilizar Oracle Spatial en ArcGIS

Cuando primero instala el componente ArcSDE, ST_Geometry es el tipo de almacenamiento de geometría predeterminado. La configuración predeterminada para el almacenamiento de ArcSDE se define en la tabla DBTUNE con los parámetros GEOMETRY_STORAGE.

Si desea almacenar sólo algunas de las clases de entidad con el tipo espacial para el almacenamiento de Oracle, puede especificar la palabra clave SDO_GEOMETRY al crear la clase de entidad. Al hacer esto, se crea esa clase de entidad en particular con una columna SDO_GEOMETRY. En el archivo dbtune, aparece la palabra clave SDO_GEOMETRY de la siguiente manera:

##SDO_GEOMETRY GEOMETRY_STORAGE    "SDO_GEOMETRY" ATTRIBUTE_BINARY    "BLOB" RASTER_STORAGE	    "SDO_GEORASTER" SDO_COMMIT_INTERVAL  1000 UI_TEXT          "User Interface text description for SDO_GEOMETRY"  COMMENT        "Any general comment for SDO_GEOMETRY keyword"  END

Si desea utilizar el tipo de almacenamiento SDO_Geometry para la mayoría de las clases de entidad, puede cambiar el almacenamiento de geometría de ArcSDE predeterminado para utilizar el tipo de Oracle Spatial.

Para cambiar el almacenamiento de geometría predeterminado, utilice el comando de administración sdedbtune para modificar la palabra clave DBTUNE DEFAULTS, cambiando el parámetro GEOMETRY_STORAGE de ST_GEOMETRY a SDO_GEOMETRY. Después de que se cambia la configuración de GEOMETRY_STORAGE predeterminada a SDO_GEOMETRY, ArcSDE crea clases de entidad con columnas SDO_GEOMETRY por defecto.

NotaNota:

Para obtener detalles sobre el uso del comando sdedbtune, consulte la Referencia de comandos de administración de ArcSDE instalada con el componente ArcSDE de ArcGIS Server en el nivel Enterprise.

ArcSDE para Oracle es compartible con una cantidad de esquemas de almacenamiento de geometría diferentes; estos esquemas diferentes se pueden utilizar todos juntos en la misma base de datos. Mientras que sólo puede haber un esquema de geometría predeterminado, las tablas individuales se pueden crear mediante diferentes esquemas de geometría.

Requisitos previos para el uso de tablas de Oracle Spatial existentes con ArcSDE

ArcSDE puede utilizar correctamente las tablas que contienen columnas SDO_GEOMETRY creadas externamente mediante otras aplicaciones o con SQL (algunas veces denominadas tablas de terceros) siempre que las tablas cumplan con ciertos requisitos previos:

Consideraciones de interoperabilidad

Una equivocación común es que las aplicaciones pueden interoperar simplemente porque admiten el mismo tipo de geometría subyacente. Sin embargo, el tipo de geometría es sólo un aspecto de la geodatabase así como también otros esquemas de base de datos SIG. También es necesario comprender las reglas, las restricciones, el esquema y la implementación. Algunas cosas que debe tener en cuenta al utilizar Oracle Spatial con ArcSDE y clientes de ArcSDE son las siguientes:

ArcSDE y ArcGIS no admiten varias columnas de geometría en una tabla.

Se debe obtener acceso a las tablas con varias columnas SDO_GEOMETRY mediante las vistas que contienen sólo una columna SDO_GEOMETRY.

Para utilizar datos en una tabla de Oracle Spatial que contiene varias columnas espaciales, cree una vista espacial con SQL. Esta vista debe contener sólo una columna espacial. A continuación, registre la vista espacial con ArcSDE utilizando sdelayer –o register.

Para aprender a crear y registrar una vista que contiene sólo una columna SDO_GEOMETRY, consulte el artículo de base de conocimiento Crear una vista de Oracle de una capa de Oracle Spatial (que contiene varias columnas de geometría) y registrarla con ArcSDE.

ArcSDE y ArcGIS sólo admiten un único tipo de geometría en una columna SDO_GEOMETRY.

Si una única columna SDO_GEOMETRY en una tabla contiene varios tipos de geometría (por ejemplo, algunos registros son puntos y algunos son polígonos), la tabla no se puede registrar con ArcSDE o la geodatabase; la clase de entidad se debe registrar con un tipo de geometría.

Oracle Spatial no implementa necesariamente restricciones de tipos de geometría en una columna SDO_GEOMETRY. Sin esta implementación, una aplicación puede intentar mantener una restricción de tipo de geometría único, pero otra aplicación puede insertar diferentes tipos de geometría. A partir de Oracle9i, tiene la opción de restringir el tipo de geometría en la inserción a la tabla con un parámetro de creación de índice espacial. Para versiones de Oracle anteriores, otra opción para aplicar restricciones de tipos de geometría es crear un desencadenador de inserción-actualización que verifica la propiedad SDO_GEOMETRY GTYPE.

La validación de geometría no es la misma entre ArcSDE y SDO_GEOMETRY.

ArcSDE valida la geometría al insertar o actualizar geometrías. En Oracle 10g, Oracle Spatial no aplica automáticamente la validación de geometría en la inserción o actualización de un valor SDO_GEOMETRY si inserta o actualiza geometrías mediante métodos que no son clientes de ArcSDE, como SQL. En Oracle 11g, Oracle Spatial valida geometrías en inserciones de índice.

Los problemas pueden surgir si los valores de geometría que están mal formados o no son válidos pasaron a aplicaciones cliente de ArcSDE. Para reducir la cantidad de problemas que puedan surgir, debe validar cualquier geometría creada o modificada por cualquier método que no sea una aplicación cliente de ArcSDE.

LegadoLegado:

En ArcSDE 9.1, las entidades SDO_GEOMETRY no se validan mientras se recuperan de la base de datos. Este cambio se realizó para mejorar el rendimiento de la recuperación.

A partir de ArcSDE 9.2, las formas se validan cuando se recuperan, pero sólo si la tabla espacial se crea fuera de ArcSDE y después se registra con ArcSDE. Si la capa se crea con ArcGIS o la API de ArcSDE, las formas no se validan al recuperarse.

Existen dos herramientas disponibles para la validación de geometría. VALIDATE_GEOMETRY_WITH_CONTEXT de Oracle verifica geometrías mediante las reglas de validación de formas de Oracle y sdelayer –o feature_info las verifica mediante reglas de ArcSDE. La operación feature_info incluye opcionalmente, como parte del resultado, la información acerca de si la geometría de una forma es o no válida para ArcSDE. Para obtener detalles sobre el uso de esta operación, consulte la documentación de la Referencia de comandos de administración incluida con la instalación de ArcSDE.

La validación de geometría de ArcSDE no es la misma que la validación de geometría de Oracle Spatial. Si bien es importante que las geometrías pasen la validación de Oracle Spatial, validar correctamente geometrías con rutinas de validación de Oracle no garantiza que ArcSDE valide las geometrías.

Puede crear un desencadenador de inserción-actualización para activar la función SDO_VALIDATE a fin de aplicar la validación de tipos SDO_GEOMETRY.

La API de ArcSDE C se puede utilizar para escribir una aplicación que recupera entidades incluso si no pasan la validación de forma de ArcSDE. Sin embargo, es tarea de la aplicación cliente determinar si la geometría es adecuada o cómo corregirla.

La mayoría de las aplicaciones que leen objetos SDO_GEOMETRY no pueden interpretar datos SDO_ETYPE 0 creados por otras aplicaciones.

Oracle Spatial permite que las aplicaciones inserten datos específicos de aplicación en un objeto SDO_GEOMETRY. Las aplicaciones hacen esto al incorporar datos mediante un valor SDO_ETYPE de 0. Esto permite una gran flexibilidad para que las aplicaciones almacenen muchos tipos de geometrías no convencionales y otros datos. Sin embargo, el significado de los datos específicos de aplicación es importante sólo para la aplicación que generó el objeto SDO_GEOMETRY especial. Tales datos específicos de aplicación no se pueden admitir con seguridad en un entorno interoperable. Las aplicaciones que leen objetos SDO_GEOMETRY probablemente no puedan interpretar datos SDO_ETYPE 0 creados por otras aplicaciones. Las aplicaciones que actualizan objetos SDO_GEOMETRY no pueden editar ni preservar los datos SDO_ETYPE 0.

Al leer objetos SDO_GEOMETRY que contienen elementos SDO_ETYPE 0, ArcSDE ignora los datos SDO_ETYPE 0 y pasa sólo los elementos de geometría de entidad simple que admite en la aplicación.

Al actualizar los objetos SDO_GEOMETRY que contienen elementos SDO_ETYPE 0, ArcSDE no preserva los datos SDO_ETYPE 0. Por lo tanto, las aplicaciones que requieren que se preserven esos datos SDO_ETYPE 0 deben evitar que los usuarios obtengan acceso UPDATE a la tabla.

ArcSDE requiere que todos los valores SDO_GEOMETRY en una columna estén en el mismo sistema de referencia de coordenadas.

Si la referencia de coordenadas no está definida, el valor de SRID debe ser NULL como se indica en la Referencia y guía del usuario de Oracle Spatial.

Antes de Oracle9i, Oracle Spatial no aplica automáticamente la validación de ID de referencia espacial en la inserción o actualización de un valor SDO_GEOMETRY. Para aplicar la validación de tipos SDO_GEOMETRY en estas instancias anteriores de Oracle, puede crear un desencadenador de inserción-actualización para activar la función SDO_VALIDATE. Oracle Spatial requiere que el SRID en cada geometría coincida uno con otro y con el SRID en los metadatos espaciales, incluso si es NULL.

Oracle Spatial y ArcSDE suponen que la primera y segunda dimensión de SDO_GEOMETRY es x e y, respectivamente.

Si un objeto SDO_GEOMETRY tiene tres dimensiones, ArcSDE interpreta la tercera dimensión como una medida si el nombre de dimensión (en los metadatos espaciales) comienza con la letra "m"; de lo contrario, se asume que la tercera dimensión es una elevación. Puede controlar cómo ArcSDE interpreta la tercera dimensión al configurar el marcador de entidad de la clase de entidad para que tenga elevaciones o medidas.

Oracle9i Versión 2 extendió el miembro SDO_GTYPE del tipo SDO_GEOMETRY para permitir la codificación de la dimensión que contiene una ordenada de medida. El segundo dígito de SDO_GTYPE de cuatro dígitos puede ser 0, 3 ó 4. Si es 3 ó 4, esto indica la dimensión que contiene la ordenada de medida. ArcSDE 9 y versiones posteriores leen esta codificación. De lo contrario, si el objeto SDO_GEOMETRY tiene cuatro dimensiones, la medida se interpreta como la última ordenada.

En este ejemplo, sdelayer establece el tipo de entidad de una clase de entidad para almacenar cadenas de texto de líneas y elevaciones:

sdelayer –o add –e l3

En este ejemplo, sdelayer establece el tipo de entidad de una clase de entidad para almacenar cadenas de texto de líneas y medidas:

sdelayer –o add –e lM 

Oracle Spatial (pero no Oracle Locator) brinda funciones para cálculos del sistema de referencia lineal (LRS) mediante valores de medida.

Las funciones del LRS de Oracle Spatial requieren que todos los valores de medida en una geometría sean monotónicamente ascendentes o descendentes sin valores NaN. El LRS de Oracle Spatial también restringe valores de medida a cadenas de texto de líneas.

ArcSDE permite medidas y cálculos de LRS en todos los tipos geométricos, con compatibilidad para valores de medida ordenados arbitrariamente y valores NaN.

Si desea utilizar las funciones del LRS de Oracle Spatial, asegúrese de diseñar la aplicación y la base de datos para operar dentro de las restricciones del LRS de Oracle Spatial.

ArcSDE necesita un identificador de entidad único en la tabla espacial para realizar consultas espaciales, consultas de archivos de registro, operaciones de única fila y operaciones de base de datos de varias versiones.

Con el esquema binario comprimido de ArcSDE, la columna de geometría puede cumplir este propósito debido a que es una clave externa en la tabla de entidad y se define como un valor de entero único no nulo. SDO_GEOMETRY no incluye un valor de identificación único, de modo que cuando ArcSDE agrega la columna SDO_GEOMETRY a una tabla existente, también puede agregar una columna de identificación única. Tal columna es la columna ID de fila registrada. Esta columna en general se denomina OBJECTID, pero puede tener otro nombre. También se puede utilizar una columna existente para la columna ID de fila registrada siempre que esté indexada y sea un entero, UNIQUE y NOT NULL. Las columnas ID de fila registradas mantenidas por ArcSDE deben ser NUMBER(38) UNIQUE NOT NULL.

Se puede agregar una columna ID de fila registrada con el comando de administración sdetable o la aplicación ArcCatalog. Muchas aplicaciones, como ArcGIS, requieren una columna ID de fila registrada en cada tabla o clase de entidad. Cada aplicación tiene sus propios requisitos y limitaciones.

La modificación de las clases de entidad de Oracle Spatial que participan en redes, topologías, relaciones o restricciones se debe restringir a aplicaciones de ArcGIS.

ArcGIS puede crear y mantener redes y clases de entidades topológicas integradas de clases de entidad simple que utilizan el tipo SDO_GEOMETRY. ArcGIS aplica relaciones y restricciones en muchas fuentes de datos diferentes. ArcGIS administra las relaciones y mantiene la integridad topológica de los datos; las modificaciones a las entidades subyacentes a través de ArcGIS se reflejan en estas redes, topologías y relaciones integradas.

La modificación de las clases de entidad de Oracle Spatial que participan en redes, topologías, relaciones y restricciones se debe restringir a aplicaciones de ArcGIS. Otras aplicaciones pueden leer libremente los datos, pero las modificaciones no se reflejan como corresponde en la geodatabase.

Temas relacionados


7/10/2012