27
7/21/2019 Base de Datos Espaciales http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 1/27 3 Creación de tablas espaciales. O JETIVOS Describir el esquema asociado con todas las capas espaciales, tipos, funciones y procedimientos Explicar cómo los datos espaciales se almacenan utilizando el modelo de objetos de Oracle Spatial Crear una tabla con una capa espacial Cargar una vista de metadatos asociada con una capa espacial 1 PASOS TÍPICOS PARA LA GESTIÓN DE DATOS ESPACIALES 1. Creación de una tabla para almacenar datos espaciales. 2. Introducir (almacenar) los datos espaciales 3. Actualización de los metadatos espaciales. 4. Validación y depuración de geometrías (si es necesario). 5. Creación de índices espaciales. 6. Ejecución de consultas espaciales. Los pasos mencionados en el diagrama son las tareas básicas que suelen realizar para empezar a trabajar con cualquier tipo de datos espaciales. Como primer paso se debe definir una tabla con una o más columnas SDO_GEOMETRY para almacenar los datos geométricos. Esta tabla debe tener algunos atributos no espaciales.

Base de Datos Espaciales

Embed Size (px)

DESCRIPTION

muy buen tutorial de base de datos espaciles BI

Citation preview

Page 1: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 1/27

3 Creación de tablasespaciales.

O JETIVOS

•Describir el esquema asociado con todas las capas espaciales, tipos, funciones yprocedimientos

•Explicar cómo los datos espaciales se almacenan utilizando el modelo de objetos de

Oracle Spatial

•Crear una tabla con una capa espacial

•Cargar una vista de metadatos asociada con una capa espacial

1 PASOS TÍPICOS PARA LA GESTIÓN DE DATOS ESPACIALES

1. Creación de una tabla para almacenar datos

espaciales.

2. Introducir (almacenar) los datos espaciales

3. Actualización de los metadatos espaciales.

4. Validación y depuración de geometrías (si

es necesario).

5. Creación de índices espaciales.

6. Ejecución de consultas espaciales.

Los pasos mencionados en el diagrama son las tareas básicas que suelen realizar para

empezar a trabajar con cualquier tipo de datos espaciales. Como primer paso se debe

definir una tabla con una o más columnas SDO_GEOMETRY para almacenar los datos

geométricos. Esta tabla debe tener algunos atributos no espaciales.

Page 2: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 2/27

Posteriormente se procede a insertar filas en esta tabla mediante la instrucción INSERT.

Hay también maneras de carga masiva de datos espaciales en tablas de Oracle (SQL *

LOADER). También es esencial el llevar a cabo una validación de la geometría antes de

usarla en las consultas espaciales. Oracle Spatial proporciona la validación y diferentes

funciones de depuración que pueden ayudar a eliminar las geometrías no válidas, así como

fijar algunas discrepancias.

También se deben de actualizar las vistas de metadatos. Posteriormente se procede a crear

índices espaciales para mejorar el rendimiento de las consultas espaciales. Por último, sepueden ejecutar una gran variedad de consultas espaciales.

2 ESQUEMA MDSYS

•Cuando se instala Oracle Spatial u Oracle Locator, se crea el usuario

MDSYS. El usuario MDSYS es:

•El propietario de los tipos espaciales, paquetes, funciones, procedimientos,

y los metadatos•Similar al usuario SYS

•Un usuario con privilegios With ADMIN option

•Esta cuenta está bloqueada por defecto.

•Se debe de tener cuidado con esta cuenta de administrador.

•Nunca debe de existir la necesidad de iniciar la sesión como el usuario

MDSYS.

•Nunca se deben de crear datos como el usuario MDSYS.

3 OBJETO SDO_GEOMETRYLa base de datos Oracle8i introdujo un nuevo tipo de datos nativos llamados

SDO_GEOMETRY. Se pueden crear tablas con las columnas del tipo de

SDO_GEOMETRY de la misma manera que se crean tablas con otros tipos de datos de

Oracle. No hay una tabla espacial como tal, sólo una tabla con una o más columnas

espaciales del tipo SDO_GEOMETRY. Las tablas espaciales tienen las mismas

características que las tablas ordinarias de Oracle, con las cláusulas de almacenamiento

(storage) normales; la diferencia radica en que contienen una o más columnas

SDO_GEOMETRY. El objeto SDO_GEOMETRY contiene una geometría entera que

puede ser asociada a una columna de una tabla de Oracle.

Si sabes cómo utilizar la base de datos Oracle, y nunca habías oído hablar de Oracle

Spatial, de antemano sabes cómo utilizar gran parte de las características que posee

Oracle Spatial. El presente texto te dará la nueva información asociada a cómo cargar,

indexar y consultar una columna SDO_GEOMETRY. La columna de SDO_GEOMETRY

se accede a través de comandos SQL, y trabaja con todos los servicios de Oracle: SQL *

Loader; así como las herramientas de import y export.

El objeto SDO_GEOMETRY tiene cinco campos. Cada campo se describe en detalle

en las próximas páginas. Dos de los campos son del tipo numérico y los tres

campos restantes son del tipo objeto.

Page 3: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 3/27

Objeto SDO_GEOMETRY:

Ejemplo : 

SQL> CREATE TABLE states (

2 state VARCHAR2(30),

3 totpop NUMBER(9),

4 geom SDO_GEOMETRY);

SDO_GTYPE NUMBER

SDO_SRID NUMBER

SDO_POINT SDO_POINT_TYPE

SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY

SDO_ORDINATES SDO_ORDINATE_ARRAY

La ilustración anterior es un ejemplo simple de la creación de una tabla con una columna

del tipo SDO_GEOMETRY.

Nota: Al crear una columna del tipo SDO_GEOMETRY en versiones anteriores a Oracle

Spatial 10g, el tipo debe ser especificado como MDSYS.SDO_GEOMETRY.

El objeto SDO_POINT_TYPE es un campo en el objeto SDO_GEOMETRY. Se utiliza para

almacenar un único punto que podrá tener como máximo tres dimensiones. El objeto

SDO_POINT_TYPE no debe ser utilizado fuera del objeto SDO_GEOMETRY (es decir, no

crear tablas con una columna de tipo SDO_POINT_TYPE).

SDO_ELEM_INFO_ARRAY es un campo en el objeto SDO_GEOMETRY. En él sedescriben los elementos almacenados en esta geometría. Este campo es discutido a

detalle más adelante..

SDO_ORDINATE_ARRAY es un campo en el objeto SDO_GEOMETRY. Contiene todas

las coordenadas de todos los elementos que componen la geometría. Esto se describe con

más detalle en las siguientes páginas.

SDO_POINT_TYPE:

x NUMBER

y NUMBERz NUMBER

SDO_ELEM_INFO_ARRAY:

VARRAY (1048576) OF NUMBER

SDO_ELEM_INFO_ARRAY:

VARRAY (1048576) OF NUMBER

Page 4: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 4/27

4 SDO_GTYPE

Este es el primero de los cinco campos en el objeto SDO_GEOMETRY. Como se indicó

anteriormente, una geometría puede estar compuesta de uno o más elementos. Se puede

pensar en SDO_GTYPE como la "visión global". Define qué tipo de geometría se almacena

en el objeto SDO_GEOMETRY.

Se debe asociar al SDO_GTYPE más apropiado con la geometría que deseemos

representar. Por ejemplo, un único elemento de tipo polígono puede ser representado

como un SDO_GTYPE 7, pero de manera óptima, es representado como un SDO_GTYPE

3. Se debe de tener en cuenta que SDO_GTYPE 4 (heterogéneo) sólo debe usarse si es

un requisito que la geometría almacene tipos de elementos diferentes. HETEROGENEOUS

COLLECTION (Colecciones heterogéneas) no son parte del estándar Open Geospatial

Consortium (OGC), y puede no ser soportado por todas las aplicaciones.

GTYPE Descripción

1 POINT La geometría contiene un punto

2 LINESTRING La geometría contiene un “line string” 

3 POLYGON La geometría contiene un polígono

4 HETEROGENEOUS

COLLECTION

La geometría es una colección de distintos

elementos: puntos, lineas y poligonos.

5 MULTIPOINT La geometría tiene multiples puntos

6 MULTILINESTRING La geometría tiene multiples “line strings”. 

7 MULTIPOLYGON La geometría tiene multiples polígonos.

Page 5: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 5/27

SDO_GTYPE. Define el tipo de geometría almacenada en el

objeto. Se especifica en el formato DLTT donde:

D identifica el número de dimensiones

L identifica el LRS

TT identifica el tipo de geometría

El SDO_GTYPE se especifica en el formato DLTT. El valor de la componente “D” puede

ser de 2, 3, o 4, lo que representa el número de coordenadas que se utilizan para definir

un vértice. El valor de “L” se utiliza para indicar el sistema de referencia lineal (LRS) el

cual se explica a detalle más adelante. Los valores van desde 01 hasta 07 en “TT”, el

cual es usado para indicar el tipo de geometría. Por ejemplo, un valor de 02 indica una

LineString que puede contener líneas rectas o arcos.

Un valor de SDO_GTYPE de 2003 indica que la geometría es un polígono de dos

dimensiones sin ningún tipo de referencias lineales.

Nota: Los valores de TT de 08 y 09 se utilizan para representar los sólidos y multisolidos,

que no están cubiertos en este texto.

Page 6: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 6/27

5 SISTEMA DE REFERENCIA LINEAL (LinearReferencing System) LRS

•Es un mecanismo asociado al valor de una medida con un punto 2D o 3D a lo largo

de un LineString o un polígono.

•El valor de la medida es típicamente proporcional a la distancia registrada desde elinicio de la geometría.

•Es comúnmente usado en muchas aplicaciones de SIG, tales como transporte y

servicios públicos.

Desde Oracle 9i, la posición de la medida en una geometría LRS está codificada en el

segundo dígito de izquierda a derecha en SDO_GTYPE.

Si la geometría no es una geometría LRS, entonces no hay ningún cambio en

SDO_GTYPE (es decir, 2000-2007, 3000-3007 y 4000-4007).

La posición LRS debe ser coherente en todas las geometrías en la columna.

Las posiciones de medida se almacena en la geometría por la misma razón que la

dimensionalidad se almacena en la geometría. Almacenar esta información en la

geometría elimina una búsqueda en el diccionario para encontrar la posición de medida,

que es especialmente difícil si la geometría viene de una visión compleja (como se

discutió previamente).

Page 7: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 7/27

Una geometría 2D con una medida:

Geometrías 2D con una medida debe tener el valor de medida en la tercera posición

de cada vértice.

Geometrías 3D (es decir los valores, x, y, z) con una medida:

Geometrías 3D con una medida debe almacenar el valor de medida en la cuarta

posición de cada vértice.

6 MÉTODOS CON SDO_GTYPE

GET_GTYPE() devuelve el tipo de geometría, utilizando dos dígitos

Las tablas deben ser renombradas cuando accedemos a los atributos o métodos en

las columnas que tienen un tipo de dato objeto.

En el ejemplo anterior, GEOD_STATES tiene un alias, que es g . Esto permite el

acceso a GET_GTYPE () del objeto SDO_GEOMETRY.

SQL> SELECT g.geom.get_gtype() state_gtype

FROM geod_states g WHERE g.state = 'Delaware';

STATE_GTYPE

-----------

3

GET_DIMS() devuelve el número de dimensiones:

GET_LRS_DIM() devuelve la dimensión LRS:

SQL> SELECT s.geom.get_dims() state_dims

FROM geod_states s WHERE s.state = 'Delaware';

STATE_DIMS----------

2

GET_LRS_DIM() devuelve la dimensión LRS:

SQL> SELECT s.geom.get_lrs_dim() state_lrs_dimFROM geod_states sWhere s.state = 'Delaware';

STATE_LRS_DIM-------------

0

Page 8: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 8/27

Hasta ahora, sólo el primero de los cinco campos en el objeto SDO_GEOMETRY ha sido

discutido. Los siguientes dos campos que analizaremos serán

Campo SDO_SRID: Este es el segundo campo en el objeto SDO_GEOMETRY. Es

utilizado para asociar los datos espaciales con un sistema de coordenadas. Oracle Spatial

tiene una tabla de diccionario llamado MDSYS.CS_SRS, que enumera todos los sistemas

de coordenadas. El valor establecido en el ámbito de SDO_SRID debe coincidir con un

valor en el ID de referencia espacial (SRID) de la tabla MDSYS.CS_SRS, o en su caso serNULL. Todas las geometrías en una columna deben tener el mismo SDO_SRID. Más

detalles acerca de los sistemas de coordenadas están cubiertos en las lecciones titulado

"Sistemas de coordenadas: Información general" y "Conceptos Avanzados Sistemas de

coordenadas".

Campo SDO_POINT: Este es el tercer campo en el objeto SDO_GEOMETRY. Esta es una

forma optimizada para almacenar un único punto en el objeto SDO_GEOMETRY. El campo

SDO_POINT debe utilizarse en el contexto del objeto SDO_GEOMETRY (Oracle Spatial no

funciona con una columna definida como SDO_POINT_TYPE). Si solo se requiere

almacenar un único punto (2D o 3D) se sugiere sea colocado en el campo de SDO_POINTdel objeto SDO_GEOMETRY.

El campo SDO_POINT proporciona almacenamiento y rendimiento óptimos. El valor

almacenado en el campo SDO_POINT se ignora si el SDO_ELEM_INFO y campos

SDO_ORDINATES son not NULL.

Campo SDO_ELEM_INFO: Este es el cuarto campo en el objeto SDO_GEOMETRY. Una

geometría contiene uno o más elementos. Si el único elemento que se va a almacenar es

un punto, se sugiere sea almacenado en el campo SDO_POINT, una descripción de cada

elemento que compone la geometría se almacena en el campo SDO_ELEM_INFO.

El campo de SDO_ELEM_INFO es un VARRAY (varying-sized array) de tipo numérico.Los valores que se coloquen en el campo SDO_ELEM_INFO deben ser considerados en

grupos de tres números. Los valores representan el triplete:

Desplazamiento de coordenada: Este es un desplazamiento en el campo

SDO_ORDINATES (descrito más adelante). Una geometría puede estar compuesta de

uno o más elementos. El primer elemento de una geometría comienza siempre en la

posición 1.

Tipo de elemento: Este es el tipo de elemento (punto, línea, polígono, …). El tipo de

elemento es también llamado “eType”. Todos los valores posibles para el tipo de elemento

se discuten en la parte restante de esta unidad.

Interpretación: Posee un significado diferente dependiendo del valor del tipo de elemento.

Puede significar que todos los puntos que integran un elemento están conectados con

líneas rectas, arcos circulares, o podría significar que es el header (encabezado) de un

elemento compuesto.

Page 9: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 9/27

Campo SDO_ORDINATES: Este es el quinto campo en el objeto SDO_GEOMETRY.

Este campo es una VARRAY de tipo numérico. Contiene todas las coordenadas que

forman los elementos descritos por el campo SDO_ELEM_INFO.

Nota: Tanto el SDO_ORDINATES y SDO_ELEM_INFO se definen como VARRAY, cuya

longitud máxima es de 1,048,576.

En el caso de SDO_ELEM_INFO, el número máximo de elementos simples quecualquier geometría puede tener es de 349,525 (1,048,576 / 3).

En el caso de SDO_ORDINATES, si la geometría tiene coordenadas de dos

dimensiones, puede llegar a tener hasta 524,288. Si la geometría es de tres dimensiones

(o de dos dimensiones con una medida de LRS), el número máximo de coordenadas es

349,525. Si hay coordenadas de cuatro dimensiones en la geometría, el número máximo

de coordenadas será de 262,144.

7 POINT

Este es un ejemplo de almacenamiento de un único punto en el campo de

SDO_POINT. El campo SDO_POINT optimiza el almacenamiento de un solo punto.

Para generar un índice espacial en el campo SDO_POINT, el SDO_ELEM_INFO y

campos SDO_ORDINATES deben ser nulos. El campo SDO_POINT es ignorado por

Oracle Spatial si el SDO_ELEM_INFO y campos SDO_ORDINATES son NOT NULL.

El ejemplo muestra el uso de un constructor de SDO_GEOMETRY (resaltado), que es

la sintaxis específica para los tipos de objetos.

Nota: Si se desea almacenar un punto 2D en el campo SDO_POINT, se debe

establecer el valor de z como NULL, por ejemplo:

INSERT INTO TELEPHONE_POLES VALUES

(attribute_1, attribute_n,

MDSYS.SDO_GEOMETRY (2001, null,

MDSYS.SDO_POINT_TYPE(-75.2,43.7,NULL), null, null));

SQL> INSERT INTO TELEPHONE_POLES2> VALUES (attribute_1, …, attribute_n,3> SDO_GEOMETRY (4> 3001, null,5> SDO_POINT_TYPE (-75.2,43.7,200),6> null, null)7> );

Page 10: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 10/27

Hasta el momento, sólo se ha visto la forma de almacenar datos en el campo de

SDO_POINT del objeto SDO_GEOMETRY. Ahora se empieza a observar el

almacenamiento de elementos en los campos de VARRAY del objeto SDO_GEOMETRY.

El cuadro que se presenta resume la forma de representar un elemento en el campo de

SDO_ELEM_INFO.

Como se dijo anteriormente, una geometría puede estar compuesta de uno o más

elementos. Si la geometría no es un único punto almacenado en el campo SDO_POINT,

entonces cada elemento tendrá una entrada de valor triple en el varray SDO_ELEM_INFO

(coordenada de desplazamiento, tipo de elemento, interpretación).

Este cuadro NO muestra el desplazamiento de coordenadas. Este cuadro sólo describe las

otras dos partes del valor del triplete (tipo de elemento, interpretación).

No se debe confundir con los tipos de elementos SDO_GTYPEs, ya que éstos representanel tipo de geometría que se almacena.

8 RESUMEN DE TIPOS DE ELEMENTOS

Page 11: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 11/27

Elemento de tipo 0: Se utiliza para el modelo de un elemento que no está actualmente

soportado por Oracle Spatial.

Elemento de tipo 1: Para almacenar puntos o multipuntos. El campo de interpretación

describe cuántos puntos son almacenados.

Elemento de tipo 2: Para almacenar LineStrings

Interpretación 1 representa una LineString convencional conectada con líneas rectas.

Interpretación 2 representa una LineString compuesta de uno o más arcos circulares.

Elemento de tipo 3: En un formato de 4 dígitos, 1003 representa un polígono de tipo anillo

exterior y 2003 representa un anillo interno:

Interpretación 1: polígono convencional conectada con las líneas rectas

Interpretación 2: Arc polygon (polígono arco) , conectado con arcos circulares

Interpretación 3: Rectángulo optimizado , sólo requiere de representar los puntos de la parte

inferior izquierda y superior derecha del rectánguloInterpretación 4: círculo optimizado (no es realmente un polígono, pero es clasificado como

polígono porque tiene área)

Elemento de tipo 4: LineString compuesta, tiene elementos contiguos que contiene líneas

rectas y arcos circulares. El campo de interpretación determina cuántos subelementos (es

decir, los valores del triplete en el ámbito SDO_ELEM_INFO) componen la LineString.

Elemento de tipo 5: Un valor 1005 representa un polígono compuesto de tipo anillo

exterior (un elemento contiguo que contiene líneas rectas y arcos circulares). 2005

representa un polígono compuesto que es un anillo interior . El campo de interpretacióndetermina cuántos subelementos (es decir, los valores del triplete en el campo de

SDO_ELEM_INFO) componen este polígono compuesto.

Page 12: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 12/27

9 LINESTRING

(x1,y1)

(x2,y2)

(x3,y3) (x4,y4)

En la tabla mostrada en la figura podemos apreciar el valor del triplete (desplazamiento de

coordenada, tipo de elemento, interpretación) que se almacena en el campo deSDO_ELEM_INFO. La mayoría de los desplazamientos de coordenadas que se ve en los

ejemplos siguientes comenzará con el número 1, porque los ejemplos que muestran tienen

geometrías con un solo elemento. Hay algunos ejemplos con geometrías que tienen más

de un elemento y en esos casos, se pueden observar los valores correspondientes al

desplazamiento de coordenadas.

El tipo de elemento 2 corresponde a un elemento LineString. Un elemento LineString se

compone de uno o más segmentos contiguos.

La interpretación de un tipo de elemento 2 define cómo conectar los segmentos quecomponen al LineString. En este ejemplo, la interpretación es 1 y corresponde a una

LineString cuyos segmentos están conectados con líneas rectas ( LineString convencional).

LineString que forman un anillo no tienen ninguna área implicada.

Los segmentos de línea pueden cruzar entre sí.

Nota: SDO_GTYPE para esta geometría es 2002 (un solo elemento LineString). Se debe

de tener en cuenta que SDO_GTYPE es el primer campo del objeto SDO_GEOMETRY y

describe toda la geometría.

Page 13: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 13/27

10 ARC STRING

En la tabla mostrada se puede observar el valor del triplete (desplazamiento de coordenda,

tipo de elemento, interpretación) que se almacenará en el campo de SDO_ELEM_INFO.

El tipo de elemento 2 corresponde a un elemento de tipo LineString. Un elemento

LineString se compone de uno o más segmentos contiguos.

La interpretación define cómo se han de conectar los segmentos que componen el

LineString. En este ejemplo, la interpretación es 2, y corresponde a una LineString cuyos

segmentos están conectados con arcos circulares. Un arco está definido por tres puntos

distintos de la circunferencia de un círculo: el primer punto, el último punto, y cualquier

punto distinto en medio de estos dos. El último punto de un arco es el primer punto del

arco siguiente.

 Arcos que cierran y formar un anillo no tienen ninguna área implicada.

Los arcos pueden cruzar entre sí.

Nota: SDO_GTYPE para esta geometría es 2002 (un solo elemento de tipo LineString).

(x5,y5) (x7,y7)

(x1,y1)

(x3,y3)

(x4,y4)(x2,y2)

(x6,y6)

Page 14: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 14/27

11 POLYGON

En general, el tipo de elemento 3 corresponde a un polígono. En lugar de especificar un

tipo de elemento 3, se recomienda determinar claramente si un polígono anillo exterior o un

anillo interior. Polígonos de anillo exterior se representan como el tipo de elemento 1003, ypolígonos de anillo interior son representados como el tipo de elemento de 2003.

Los polígonos anillo exterior deben almacenar sus coordenadas en sentido contrario a las

manecillas del reloj.

El polígono anillo interior debe almacenar sus coordenadas en sentido horario.

Cumplir con los comentarios anteriores permite cálculos más rápidos.

El último punto de un polígono debe ser el mismo que el primer punto. A pesar de que estepunto podría ser información un tanto obvia, debe repetirse para ajustarse al estándar del

Open Geospatial Consortium (OGC).

La interpretación define cómo conectar los segmentos que conforman el polígono. En este

ejemplo, la interpretación es 1, y corresponde a un polígono cuyos segmentos están

conectados con líneas rectas (un polígono convencional).

Los segmentos de línea de los polígonos NO se cruzan entre sí.

Nota: SDO_GTYPE para esta geometría es 2003 (un único polígono).

(x4,y4)

(x5,y5)

(x3,y3)(x2,y2)

(x6,y6)(x1,y1)

Page 15: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 15/27

12 ARC POLYGON

El tipo de elemento de 1003 indica que es un polígono anillo exterior.

La interpretación 2 indica que los segmentos de línea son arcos circulares.

Las coordenadas que lo conforman se almacenan en sentido anti horario.

La interpretación define cómo se conectan los segmentos que conforman el polígono. En

este caso, la interpretación es de 2, y corresponde a un polígono cuyos segmentos están

conectados con arcos circulares. Un arco circular está definido por tres puntos.

Nota: SDO_GTYPE para esta geometría es 2003 (un único polígono).

(x7,y7)

(x6,y6)

(x5,y5)

(x9,y9) (x3,y3)

(x4,y4)

(x1,y1)

(x8,y8)

(x2,y2)

Page 16: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 16/27

13 RECTANGLE

(x2,y2)

(x1,y1)

El tipo de elemento de 1003 corresponde a un polígono anillo exterior.

Si el polígono fuera un anillo interior, estaría representado, como el tipo de elemento 2003.

En este ejemplo, la interpretación es 3, y corresponde a un rectángulo optimizado para el

almacenamiento. Sólo la parte inferior izquierda y superior derecha de los puntos del

rectángulo se almacenan. Un rectángulo optimizado tiene área.

Nota: SDO_GTYPE para esta geometría es 2003 (un único polígono).

Page 17: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 17/27

14 CIRCLE

El tipo de elemento de 1003 indica que es un polígono anillo exterior.

En este ejemplo, la interpretación es de 4, y corresponde a un círculo. El círculo está

representado por cualquiera de los tres puntos distintos que integran la circunferencia.

Nota: SDO_GTYPE para esta geometría es 2003 (un único polígono).

(x1,y1)(x2,y2)

(x3,y3)

Page 18: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 18/27

15 COMPOUND LINE STRING

El tipo de elemento 4 corresponde a una LineString compuesta. Estos tipos de elementos

son conectados con líneas rectas o con arcos circulares.

Una LineString tiene las mismas propiedades que una LineString simple. Se permiten líneas

que se crucen entre sí; sin embargo ninguna zona o figura que formen tendrá área.

Una LineString se define por una serie de sub-elementos contiguos. Cada subelemento es

una línea recta o un arco circular.

El primero es un triplete de cabecera (header). La interpretación en la cabecera indica

cuántos subelementos forman parte de la LineString compuesta.

Todos los subelementos deben ser del tipo de elemento 2 (interpretación 1 ó 2) y deben sercontiguos (es decir, el último punto de un subelemento es el primer punto del siguiente

subelemento).

En el ejemplo mostrado en la figura se puede observar que los desplazamientos de

coordenadas de cada sub-elemento son diferentes y corresponden a donde el subelemento

comienza a definirse en el arreglo de coordenadas.

Nota: SDO_GTYPE para esta geometría es 2002 (un solo elemento de tipo LineString).

(x6,y6)

(x3,y3)

(x1,y1)

(x5,y5)

(x4,y4)

(x2,y2)

(x7,y7)

(x8,y8)

(x9,y9)

El primer triplete es denominado “encabezado”

Elemento de tipo 4: nos indica que tenemos una LienString compuesta

Interpretación 3: indica el número de subelementos por los cuales está formada la

LineString compuesta.

Page 19: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 19/27

16 COMPOUND POLYGON

El tipo de elemento 5 corresponde a un polígono compuesto.

Un polígono compuesto se define por una serie de subelementos contiguos. Cada

subelemento es una línea recta o un arco circular. El primero es un triplete de cabecera. La

interpretación en la cabecera indica cuántos subelementos (o tripletas adicionales en

SDO_ELEM_INFO) componen este polígono compuesto. Todos los subelementos de unpolígono compuesto debe ser del tipo de elemento 2 (segmentos) con la interpretación de 1

o 2, y todos los subelementos deben ser contiguos (es decir, el último punto de un

subelemento es el primer punto de la siguiente subelemento ).

En la figura, se puede observar que los desplazamientos de coordenadas de cada

subelemento son diferentes y corresponden a lugar exacto donde comienza el subelemento

Note: SDO_GTYPE para esta geometria es de 2003 (un único elemento de tipo polígono).

Los polígonos compuestos tienen las mismas propiedades como polígonos (es decir, los

segmentos de línea de los polígonos NO se cruzan entre sí).

El triplete de encabezado define a los subelementos.

Tipo de elemento es 1005: Indica que es un polígono anillo exterior

Interpretación 2: nos marca el número de subelementos que formarán al

polígono

(x4,y4)

(x5,y5)

(x6,y6)

(x7,y7)

(x2,y2)

(x3,y3)(x1,y1)

Page 20: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 20/27

17 REGLAS PARA ELEMENTOS DE TIPO “POLÍGONO” 

Este es un ejemplo de un polígono que posee huecos. El anillo exterior tiene es un tipo de

elemento de 1003, y el anillo interior es un tipo de elemento de 2003.

Huecos pueden contener islas, y las islas pueden contener huecos.

El área se calcula como la diferencia entre exterior e interior de los polígonos.

Nota: SDO_GTYPE para esta geometría es 2003 (un único polígono ).

18 POLÍGONO CON HUECOS

(x4,y4)

(x5,y5)

(x3,y3)(x2,y2)

(x6,y6)

(x1,y1)

(x7,y7)

(x8,y8)

Page 21: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 21/27

19 POLÍGONO COMPUESTO CON HUECOS

Este es un ejemplo de un polígono compuesto con un hueco. El anillo exterior es un tipo de

elemento 1005 (polígono compuesto) y el anillo interior es un tipo de elemento 2003

(rectángulo optimizado).

El polígono compuesto tiene tres entradas en el campo SDO_ELEM_INFO. El primero es un

triplete de cabecera (1,1005,2). "2" indica dos tripletes adicionales, los cuales definen los

subelementos (1,2,1) y (7,2,2).

Nota: SDO_GTYPE de esta geometría es 2003 (un único polígono ). Un polígono con uno o

más elementos vacío todavía puede ser considerado como un único polígono (que no es

clasificado como un MultiPolygon).

(x4,y4)

(x5,y5)

(x3,y3)

(x6,y6)

(x7,y7)

(x1,y1)

(x2,y2)(x9,y9)

(x10,y10)

(x8,y8)

Page 22: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 22/27

20 CONSTRUYENDO GEOMETRÍAS

Utilice la instrucción SQL “INSERT” para la construcción de las geometrías y la insercion de

las mismas en las tablas.

El constructor SDO_GEOMETRY es llamado para crear una instancia de un objeto

geometrico.

INSERT INTO LINES VALUES (attribute_1, …. attribute_n,SDO_GEOMETRY (2002, null, null,SDO_ELEM_INFO_ARRAY (1,2,1),

SDO_ORDINATE_ARRAY (10,10, 20,25, 30,10, 40,10))

);

(10,10) (30,10) (40,10)

 Anteriormente, se vio la forma de insertar un punto a través de la utilización de

SDO_POINT.

Este es el primer ejemplo para insertar datos de carácter geométrico utilizando los

campos (SDO_ELEM_INFO y SDO_ORDINATES) del objeto SDO_GEOMETRY.

La instrucción INSERT utiliza un constructor SDO_GEOMETRY, establece el SRID y los

campos de SDO_POINT a null, y utiliza el SDO_ELEM_INFO_ARRAY y constructores

SDO_ORDINATE_ARRAY para rellenar los campos faltantes.

Nota: Cuando almacenemos un valor NULL en una columna que tiene asociado un tipo

de dato geometrico, solo bastara con colocar un solo NULL y no uno por cada valor deSDO_GEOMETRY.

Ejemplo:

correcto

INSERT INTO LINES VALUES (attribute1, … attribute_n, NULL);

incorrecto

INSERT INTO LINES VALUES (attribute1, … attribute_n,

SDO_GEOMETRY(NULL, NULL, NULL, NULL, NULL));

Page 23: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 23/27

Cuando se llama a un constructor, se utiliza el nombre del tipo y no el nombre de columna

o nombre de campo.

INSERT INTO PARKS VALUES(attribute_1, …, attribute_n,SDO_GEOMETRY(

2003, null, null,SDO_ELEM_INFO_ARRAY(1,1005,2, 1,2,1, 7,2,2, 17,2003,3),SDO_ORDINATE_ARRAY(10,50,10,30,50,30,50,50,45,60,30,50,15,60,10,50,25,35,35,40)));

(45,60)

(50,50)

(50,30)

(30,50)

(15,60)

(10,50)

(10,30)(25,35)

(35,40)

(10,50)

Este es otro ejemplo para insertar información en los campos (SDO_ELEM_INFO y

SDO_ORDINATES) del objeto SDO_GEOMETRY.

En este ejemplo se inserta el polígono compuesto con un hueco, mismo que se habia

presentado con anterioridad.

La instrucción INSERT utiliza un constructor SDO_GEOMETRY, establece el SRID y

campos SDO_POINT a null, y utiliza constructores SDO_ELEM_INFO_ARRAY y

SDO_ORDINATE_ARRAY para rellenar los campos correspondientes.

Se debe tener en cuenta que cuando se llama a un constructor, se utiliza el nombre deltipo y no el nombre de la columna o el nombre del campo. Para el campo

SDO_ELEM_INFO, se debe de escribir el nombre SDO_ELEM_INFO_ARRAY y el campo

SDO_ORDINATES es del tipo SDO_ORDINATE_ARRAY.

Nota: SDO_GTYPE de esta geometría es 2003 (un único polígono en 2D). Un polígono

con uno o más huecos todavía puede ser considerado como un único polígono (que no es

clasificado como un MultiPolygon).

Page 24: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 24/27

21 REGLAS PARA INSERTAR GEOMETRÍAS ENTABLAS ESPACIALES.

Todas las geometrías deben tener la misma dimensión en una tabla espacial.

El valor D en SDO_GTYPE debe ser el mismo.

Todas las geometrías deben estar asociadas con el mismo sistema de coordenadas.

El valor SDO_SRID debe ser el mismo.

2005 30055. MULTIPOINT

2004 30044. HETEROGENEOUS

COLLECTION

2003 30033. POLYGON

2006 30066. MULTILINESTRING

2007 30077. MULTIPOLYGON

2002 30022. LINESTRING

2001 30011. POINT

4 dÍgitos para el GTYPEs:

Incluida la dimensión.

2D 3D

SDO_GTYPE

Page 25: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 25/27

22 METADATOS ESPACIALES

Por cada columna SDO_GEOMETRY, se deben de insertar los metadatos en una vista de

diccionario de datos llamada USER_SDO_GEOM_METADATA.

Usted es responsable de la actualización de la vista USER_SDO_GEOM_METADATA con

información de metadatos sobre cualquier columna SDO_GEOMETRY que cree.

Oracle Spatial se asegura de que la vista ALL_SDO_GEOM_METADATA se actualice con el

obejtivo de reflejar las filas que se insertan en USER_SDO_GEOM_METADATA.

 ALL_SDO_GEOM_METADATA contiene información de metadatos sobre todas las tablas

Esta vista contiene todos los metadatos para el usuario de Oracle que se ha identificado con

el nombre “X”, y todos los metadatos para las columnas de las geometrías para las cuales

“x” tiene permisos de select.

Oracle Spatial nunca actualiza o elimina información de la vista deUSER_SDO_GEOM_METADATA. 

Nota: Usted debe actualizar esta vista antes de crear índices espaciales.

Actualizar la vista USER_SDO_GEOM_METADATA con la información demetadatos acerca de cada columna SDO_GEOMETRY.

Las siguientes vistas están disponibles para cada usuario:

USER_SDO_GEOM_METADATA

ALL_SDO_GEOM_METADATA:Esta contiene información de metadatos sobre todas las tablas espaciales sobrelas cuales el usuario tiene privilegios de SELECTNunca se debe de insertar información en esta vista, ya que su propósitoprincipal es mostrar información. 

USER_SDO_GEOM_METADATA

DESCRIBE USER_SDO_GEOM_METADATA

Name Null? Type

-------------- ---------- ------------------

TABLE_NAME NOT NULL VARCHAR2(32)

COLUMN_NAME NOT NULL VARCHAR2(1024)

DIMINFO SDO_DIM_ARRAY

SRID NUMBER

Page 26: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 26/27

MDSYS.SDO_DIM_ARRAY:

VARRAY(4) OF SDO_DIM_ELEMENT

MDSYS.SDO_DIM_ELEMENT object

SDO_DIMNAME VARCHAR2(64)

SDO_LB NUMBER

SDO_UB NUMBER

SDO_TOLERANCE NUMBER

USER_SDO_GEOM_METADATA

Descripcion de la vista USER_SDO_GEOM_METADATA

TABLE_NAME: El nombre de la tabla que contiene la columna SDO_GEOMETRY

COLUMN_NAME: el nombre de la columna SDO_GEOMETRY

DIMINFO: muestra el VARRAY de los objetos SDO_DIM_ELEMENT.

 Aquí es donde se define el sistema de coordenadas (2, 3 ó 4 ejes pueden ser definidos).

Los campos del objeto SDO_DIM_ELEMENT se describen mas adelante.

SRID: SRID es un acrónimo para el sistema de identificación de referencia espacial.

Este puede recibir los valores NULL o coincidir con un valor en la columna de la tabla de

SRID MDSYS.CS_SRS, donde todos los sistemas de coordenadas están definidos.

USER_SDO_GEOM_METADATA: SDO_DIM_ELEMENT Object

SDO_DIMNAME, SDO_LB, y SDO_UB, SDO_TOLERANCE son los campos del objeto

SDO_DIM_ELEMENT.

SDO_DIMNAME: es una cadena de caracteres para identificar el eje. Este valor no esutilizado actualmente por Oracle Spatial 11g; fue utilizado en versiones previas a Oracle

9i.

SDO_LB: LB es un acrónimo para el límite inferior. Representa el valor más mas

pequeño para esta dimensión.

SDO_UB: UB es un acrónimo para el límite superior. Representa el mayor valor posible

para esta dimensión.

Page 27: Base de Datos Espaciales

7/21/2019 Base de Datos Espaciales

http://slidepdf.com/reader/full/base-de-datos-espaciales-56da1bb1b7497 27/27

SDO_TOLERANCE:

Es la distancia requerida entre dos coordenadas de manera que sean considerados como

coordenadas individuales.

Es utilizado por la indexación de Oracle Spatial

Datos simples: La unidad de tolerancia y la unidad de datos son los mismos.

Datos geodésicos: Para los datos almacenados con longitud y latitud, la unidad de la

tolerancia es metros (es decir, 0,5m de tolerancia ). Los márgenes más pequeños de

tolerancia permitidos para los datos geodésicos son de 0,05 metros (5 centímetros).

23 INSERTANDO DATOS EN LA VISTAUSER_SDO_GEOM_METADATA.

INSERT INTO USER_SDO_GEOM_METADATA

(TABLE_NAME, COLUMN_NAME, DIMINFO, SRID)

 VALUES (

'ROADS',

'GEOMETRY',

SDO_DIM_ARRAY (

SDO_DIM_ELEMENT('Long', -180, 180, 0.5),

SDO_DIM_ELEMENT('Lat', -90, 90, 0.5)),8307);

Para los datos geodésicos, en el eje x los límites deben ser desde -180 hasta 180, y en el

eje y los límites deben ser desde -90 hasta 90.

Establezca el mismo valor en la columna SRID de la vista

USER_SDO_GEOM_METADATA que aquel que inserto en el campo de SDO_SRID.

Por cada columna de carácter geométrico, una fila de metadatos debe ser insertada enUSER_SDO_GEOM_METADATA. Esto se hace con insert convencional.

Nota: Usted debe especificar el eje "x" antes que el eje “y”.