¿Qué ocurre cuando se crean clases de entidad con el almacenamiento de geometría SDO_GEOMETRY?

Al crear una clase de entidad con el almacenamiento SDO_GEOMETRY, ocurre lo siguiente:

Se agrega una columna SDO_GEOMETRY a la tabla de negocios de la clase de entidad.

ArcSDE crea una clase de entidad al agregar una columna de geometría a la tabla de negocios especificada. Cuando el parámetro GEOMETRY_STORAGE se establece en SDO_GEOMETRY, ArcSDE agrega una columna SDO_GEOMETRY a la tabla de negocios.

En el siguiente ejemplo, la tabla de negocios tiene propiedades de nombre y población. Después de agregar una columna de geometría, también tiene una columna SDO_GEOMETRY denominada Bordes. Si es necesario, se agrega y completa una columna de identificador de entidad único (OBJECTID en este ejemplo).

Nombre

Tipo de datos

¿Nulo?

NOMBRE

VARCHAR2(32)*

POPULATION

NUMBER(11)

BORDERS

MDSYS.SDO_GEOMETRY

OBJECTID

NUMBER(38)

NOT NULL

NotaNota:

*Se usa NVARCHAR2(32) en lugar de VARCHAR2(32) si utiliza cadenas Unicode.

Se puede agregar una columna de geometría a la tabla de negocios mediante ArcCatalog, la utilidad de administración sdelayer o las API de ArcSDE C y Java.

Se crea un índice espacial en la columna SDO_GEOMETRY.

Cuando se agrega una columna SDO_GEOMETRY a una tabla de negocios, en general se crea un índice espacial en esa columna de geometría. Por defecto, ArcSDE crea un índice de árbol R en una columna SDO_GEOMETRY.

De modo alternativo, ArcSDE puede crear clases de entidad sin ningún índice espacial; sin embargo, las consultas espaciales no se pueden admitir hasta tanto se cree un índice espacial. La función SDO_FILTER de Oracle, utilizada por ArcSDE, requiere la presencia de un índice espacial.

Puede crear un índice espacial de diversas formas: en ArcCatalog, con la utilidad de administración sdelayer, con Oracle Spatial Index Advisor, con SQL o programáticamente con las API de ArcSDE C y Java.

ArcSDE descarta y vuelve a crear automáticamente índices de Oracle Spatial creados por ArcSDE cada vez que la clase de entidad se alterna entre los modos LOAD_ONLY_IO y NORMAL_IO. Los índices espaciales definidos por la aplicación Oracle Spatial Index Advisor o creados mediante SQL no se descartan cuando ArcSDE cambia la clase de entidad al modo LOAD_ONLY_IO.

Se agrega un registro a la vista de metadatos de Oracle Spatial.

Cuando ArcSDE agrega una columna SDO_GEOMETRY a una tabla de negocios, también agrega el registro de metadatos de Oracle Spatial requerido a la vista USER_SDO_GEOM_METADATA. Estos metadatos incluyen la información del nombre de tabla, del nombre de la columna SDO_GEOMETRY, del ID de referencia espacial y de la dimensión de coordenadas.

Si se utiliza una aplicación de terceros o SQL para crear la tabla, la columna espacial y los metadatos, y la tabla se registra después con ArcSDE, ArcSDE no elimina los metadatos cuando se elimina el registro de la tabla con ArcSDE. Sin embargo, ArcSDE siempre elimina los metadatos cuando se elimina la tabla, como lo hace con el comando sdetable -o delete.

Se especifica una dimensión de coordenadas.

Puede crear una geometría de ArcSDE como 2D (x,y), 2D con medidas, 3D (x,y,z) o 3D con medidas. Al crear nuevas clases de entidad o al agregar una columna SDO_GEOMETRY a una tabla existente, ArcSDE coloca la información de dimensión de Oracle Spatial en la columna DIMINFO de la vista de metadatos.

El SRID de cada valor SDO_GEOMETRY se establece de acuerdo con la referencia de coordenada.

Oracle Spatial proporciona referencias de coordenadas predefinidas en la tabla MDSYS.CS_SRS. Al utilizar ArcSDE para crear una nueva clase de entidad para configurar un SRID específico para la columna SDO_GEOMETRY, identifique la descripción de referencia de coordenadas de Oracle Spatial adecuada; a continuación, configure el parámetro de almacenamiento SDO_SRID DBTUNE de la clase de entidad en ese valor.

Por ejemplo:

#MY_SDO_KEYWORD GEOMETRY_STORAGE SDO_GEOMETRY SDO_SRID 8307 UI_TEXT "MY_SDO_KEYWORD" END

Si el parámetro de almacenamiento SDO_SRID no se configura, ArcSDE establece el SRID de cada valor SDO_GEOMETRY en NULL, así como también el SRID en el registro de metadatos correspondiente.

ArcSDE no requiere el SRID de Oracle Spatial. ArcSDE mantiene la información de referencia de coordenadas para cada clase de entidad en la tabla SPATIAL_REFERENCES propia independientemente de Oracle Spatial. Consulte la Referencia y guía del usuario de Oracle Spatial para obtener información sobre las referencias de coordenadas admitidas.

Se completa la columna SDO_GEOMETRY.

Al almacenar geometría en la base de datos, ArcSDE completa el valor SDO_GEOMETRY de un objeto de API de ArcSDE denominado SE_SHAPE. El objeto SE_SHAPE puede contener geometría simple o compleja que puede incluir elevaciones, medidas, datos CAD, anotación y parches de superficie. El tipo de datos SDO_GEOMETRY admite un subconjunto de estas propiedades geométricas. Dado que no hay ninguna asignación uno a uno de los componentes en SDO_GEOMETRY y en el objeto SE_SHAPE, ArcSDE sigue un conjunto de reglas al almacenar datos de ArcSDE en tablas de Oracle Spatial:

NotaNota:

ArcSDE no admite una colección de geometría heterogénea en el objeto SDO_GEOMETRY y ArcSDE no codifica elementos SDO_ETYPE 0 en el objeto SDO_GEOMETRY. Los elementos SDO_ETYPE 0 son elementos específicos de aplicación.

Se agrega una columna adicional a la tabla de negocios si se almacenan propiedades de CAD y anotación.

El tipo SDO_GEOMETRY no puede almacenar todos los tipos de elementos geométricos que el almacenamiento de ArcSDE debe admitir. Cuando se requiere el almacenamiento de estos elementos (como se determina en los marcadores de tipo de geometría especificados cuando se crea la clase de entidad), ArcSDE agrega una columna denominada SE_ANNO_CAD_DATA a la tabla de negocios. Con el ejemplo de clase de entidad de la primera sección en este tema, la tabla de negocios contiene lo siguiente:

Nombre

Tipo de datos

¿Nulo?

NOMBRE

VARCHAR2(32)*

POPULATION

NUMBER(11)

BORDERS

MDSYS.SDO_GEOMETRY

SE_ANNO_CAD_DATA

BLOB

OBJECTID

NUMBER(38)

NOT NULL

NotaNota:

*Se usa NVARCHAR2(32) en lugar de VARCHAR2(32) si utiliza cadenas Unicode.

Cada vez que ArcSDE detecta que la fuente de datos tiene datos CAD, ArcSDE escribe una representación geométrica simple de los datos CAD en el valor SDO_GEOMETRY y escribe los datos CAD no modificados en el valor SE_ANNO_CAD_DATA. Si la fuente de datos no tiene datos CAD, ArcSDE establece el valor SE_ANNO_CAD_DATA en NULL. La propiedad SE_ANNO_CAD_DATA contiene datos de una gran cantidad de componentes de ArcGIS:

Las consultas espaciales en la clase de entidad se realizan con las funciones de filtro de Oracle Spatial.

ArcSDE utiliza la función SDO_FILTER de Oracle Spatial para realizar la primera consulta espacial. ArcSDE realiza el filtrado secundario de SDO_GEOMETRY según la relación espacial solicitada por la aplicación.

Las aplicaciones también pueden incluir funciones de filtro primarias y secundarias de Oracle Spatial en la cláusula WHERE de SQL suministrada a ArcSDE. Con los filtros espaciales en la cláusula WHERE, las aplicaciones pueden distribuir la consulta espacial al servidor de base de datos, el servidor de aplicación de ArcSDE y la aplicación misma.


7/10/2012