Base de Datos Espaciales
-
Upload
matias-humberto-aravena -
Category
Documents
-
view
16 -
download
0
description
Transcript of 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.
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.
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
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.
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.
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).
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
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.
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> );
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
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.
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.
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)
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)
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)
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).
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)
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.
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)
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)
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)
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));
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).
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
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
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.
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”.