Base de Datos Espaciales

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 27

3

Creacin de tablas
espaciales.

OBJETIVOS
Describir

el esquema asociado con todas las capas espaciales, tipos, funciones y


procedimientos
Explicar cmo 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

PASOS TPICOS PARA LA GESTIN DE DATOS ESPACIALES

1.

Creacin de una tabla para almacenar datos


espaciales.
Introducir (almacenar) los datos espaciales
Actualizacin de los metadatos espaciales.
Validacin y depuracin de geometras (si
es necesario).
Creacin de ndices espaciales.
Ejecucin de consultas espaciales.

2.
3.
4.
5.
6.

Los pasos mencionados en el diagrama son las tareas bsicas que suelen realizar para
empezar a trabajar con cualquier tipo de datos espaciales. Como primer paso se debe
definir una tabla con una o ms columnas SDO_GEOMETRY para almacenar los datos
geomtricos. Esta tabla debe tener algunos atributos no espaciales.

Posteriormente se procede a insertar filas en esta tabla mediante la instruccin INSERT.


Hay tambin maneras de carga masiva de datos espaciales en tablas de Oracle (SQL *
LOADER). Tambin es esencial el llevar a cabo una validacin de la geometra antes de
usarla en las consultas espaciales. Oracle Spatial proporciona la validacin y diferentes
funciones de depuracin que pueden ayudar a eliminar las geometras no vlidas, as como
fijar algunas discrepancias.
Tambin 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, se
pueden 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 sesin como el usuario
MDSYS.
Nunca se deben de crear datos como el usuario MDSYS.

3 OBJETO SDO_GEOMETRY
La 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, slo una tabla con una o ms columnas
espaciales del tipo SDO_GEOMETRY. Las tablas espaciales tienen las mismas
caractersticas que las tablas ordinarias de Oracle, con las clusulas de almacenamiento
(storage) normales; la diferencia radica en que contienen una o ms columnas
SDO_GEOMETRY. El objeto SDO_GEOMETRY contiene una geometra entera que
puede ser asociada a una columna de una tabla de Oracle.
Si sabes cmo utilizar la base de datos Oracle, y nunca habas odo hablar de Oracle
Spatial, de antemano sabes cmo utilizar gran parte de las caractersticas que posee
Oracle Spatial. El presente texto te dar la nueva informacin asociada a cmo cargar,
indexar y consultar una columna SDO_GEOMETRY. La columna de SDO_GEOMETRY
se accede a travs 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 prximas pginas. Dos de los campos son del tipo numrico y los tres
campos restantes son del tipo objeto.

Objeto SDO_GEOMETRY

SDO_GTYPE
SDO_SRID
SDO_POINT
SDO_ELEM_INFO
SDO_ORDINATES

NUMBER
NUMBER
SDO_POINT_TYPE
SDO_ELEM_INFO_ARRAY
SDO_ORDINATE_ARRAY

Ejemplo :

SQL> CREATE TABLE states (


2 state
VARCHAR2(30),
3 totpop
NUMBER(9),
4 geom
SDO_GEOMETRY);
La ilustracin anterior es un ejemplo simple de la creacin 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 mximo 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 se
describen los elementos almacenados en esta geometra. Este campo es discutido a
detalle ms adelante..
SDO_ORDINATE_ARRAY es un campo en el objeto SDO_GEOMETRY. Contiene todas
las coordenadas de todos los elementos que componen la geometra. Esto se describe con
ms detalle en las siguientes pginas.
SDO_POINT_TYPE:

x
y
z

NUMBER
NUMBER
NUMBER

SDO_ELEM_INFO_ARRAY:

VARRAY (1048576) OF NUMBER


SDO_ELEM_INFO_ARRAY:

VARRAY (1048576) OF NUMBER

4 SDO_GTYPE
Este es el primero de los cinco campos en el objeto SDO_GEOMETRY. Como se indic
anteriormente, una geometra puede estar compuesta de uno o ms elementos. Se puede
pensar en SDO_GTYPE como la "visin global". Define qu tipo de geometra se almacena
en el objeto SDO_GEOMETRY.
Se debe asociar al SDO_GTYPE ms apropiado con la geometra que deseemos
representar. Por ejemplo, un nico elemento de tipo polgono 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 (heterogneo) slo debe usarse si es
un requisito que la geometra almacene tipos de elementos diferentes. HETEROGENEOUS
COLLECTION (Colecciones heterogneas) no son parte del estndar Open Geospatial
Consortium (OGC), y puede no ser soportado por todas las aplicaciones.

GTYPE

Descripcin

1 POINT

La geometra contiene un punto

2 LINESTRING

La geometra contiene un line string

3 POLYGON

La geometra contiene un polgono

4 HETEROGENEOUS
COLLECTION

La geometra es una coleccin de distintos


elementos: puntos, lineas y poligonos.

5 MULTIPOINT

La geometra tiene multiples puntos

6 MULTILINESTRING

La geometra tiene multiples line strings.

7 MULTIPOLYGON

La geometra tiene multiples polgonos.

SDO_GTYPE. Define el tipo de geometra almacenada en el


objeto. Se especifica en el formato DLTT donde:
D identifica el nmero de dimensiones
L identifica el LRS
TT identifica el tipo de geometra

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 nmero de coordenadas que se utilizan para definir
un vrtice. El valor de L se utiliza para indicar el sistema de referencia lineal (LRS) el
cual se explica a detalle ms adelante. Los valores van desde 01 hasta 07 en TT, el
cual es usado para indicar el tipo de geometra. Por ejemplo, un valor de 02 indica una
LineString que puede contener lneas rectas o arcos.
Un valor de SDO_GTYPE de 2003 indica que la geometra es un polgono de dos
dimensiones sin ningn tipo de referencias lineales.
Nota: Los valores de TT de 08 y 09 se utilizan para representar los slidos y multisolidos,
que no estn cubiertos en este texto.

SISTEMA DE REFERENCIA LINEAL (Linear


Referencing 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 polgono.
El valor de la medida es tpicamente proporcional a la distancia registrada desde el
inicio de la geometra.
Es comnmente usado en muchas aplicaciones de SIG, tales como transporte y
servicios pblicos.

Desde Oracle 9i, la posicin de la medida en una geometra LRS est codificada en el
segundo dgito de izquierda a derecha en SDO_GTYPE.
Si la geometra no es una geometra LRS, entonces no hay ningn cambio en
SDO_GTYPE (es decir, 2000-2007, 3000-3007 y 4000-4007).
La posicin LRS debe ser coherente en todas las geometras en la columna.
Las posiciones de medida se almacena en la geometra por la misma razn que la
dimensionalidad se almacena en la geometra. Almacenar esta informacin en la
geometra elimina una bsqueda en el diccionario para encontrar la posicin de medida,
que es especialmente difcil si la geometra viene de una visin compleja (como se
discuti previamente).

Una geometra 2D con una medida:


Geometras 2D con una medida debe tener el valor de medida en la tercera posicin
de cada vrtice.
Geometras 3D (es decir los valores, x, y, z) con una medida:
Geometras 3D con una medida debe almacenar el valor de medida en la cuarta
posicin de cada vrtice.

6 MTODOS CON SDO_GTYPE


GET_GTYPE() devuelve el tipo de geometra, utilizando dos dgitos

SQL> SELECT g.geom.get_gtype() state_gtype


FROM
geod_states g
WHERE g.state = 'Delaware';
STATE_GTYPE
----------3
Las tablas deben ser renombradas cuando accedemos a los atributos o mtodos 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.

GET_DIMS() devuelve el nmero de dimensiones:

SQL> SELECT s.geom.get_dims() state_dims


FROM geod_states s
WHERE s.state = 'Delaware';
STATE_DIMS
---------- devuelve la dimensin LRS:
GET_LRS_DIM()
2

GET_LRS_DIM() devuelve la dimensin LRS:

SQL> SELECT s.geom.get_lrs_dim() state_lrs_dim


FROM geod_states s
Where s.state = 'Delaware';
STATE_LRS_DIM
------------0

Hasta ahora, slo el primero de los cinco campos en el objeto SDO_GEOMETRY ha sido
discutido. Los siguientes dos campos que analizaremos sern
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 ser
NULL. Todas las geometras en una columna deben tener el mismo SDO_SRID. Ms
detalles acerca de los sistemas de coordenadas estn cubiertos en las lecciones titulado
"Sistemas de coordenadas: Informacin 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_POINT
del 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
geometra contiene uno o ms elementos. Si el nico elemento que se va a almacenar es
un punto, se sugiere sea almacenado en el campo SDO_POINT, una descripcin de cada
elemento que compone la geometra se almacena en el campo SDO_ELEM_INFO.
El campo de SDO_ELEM_INFO es un VARRAY (varying-sized array) de tipo numrico.
Los valores que se coloquen en el campo SDO_ELEM_INFO deben ser considerados en
grupos de tres nmeros. Los valores representan el triplete:
Desplazamiento de coordenada: Este es un desplazamiento en el campo
SDO_ORDINATES (descrito ms adelante). Una geometra puede estar compuesta de
uno o ms elementos. El primer elemento de una geometra comienza siempre en la
posicin 1.
Tipo de elemento: Este es el tipo de elemento (punto, lnea, polgono, ). El tipo de
elemento es tambin llamado eType. Todos los valores posibles para el tipo de elemento
se discuten en la parte restante de esta unidad.
Interpretacin: Posee un significado diferente dependiendo del valor del tipo de elemento.
Puede significar que todos los puntos que integran un elemento estn conectados con
lneas rectas, arcos circulares, o podra significar que es el header (encabezado) de un
elemento compuesto.

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


Este campo es una VARRAY de tipo numrico. 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 mxima es de 1,048,576.
En el caso de SDO_ELEM_INFO, el nmero mximo de elementos simples que
cualquier geometra puede tener es de 349,525 (1,048,576 / 3).
En el caso de SDO_ORDINATES, si la geometra tiene coordenadas de dos
dimensiones, puede llegar a tener hasta 524,288. Si la geometra es de tres dimensiones
(o de dos dimensiones con una medida de LRS), el nmero mximo de coordenadas es
349,525. Si hay coordenadas de cuatro dimensiones en la geometra, el nmero mximo
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 especfica 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_POLES


2>
VALUES (attribute_1, , attribute_n,
3>
SDO_GEOMETRY (
4>
3001, null,
5>
SDO_POINT_TYPE (-75.2,43.7,200),
6>
null, null)
7>
);

RESUMEN DE TIPOS DE ELEMENTOS

Hasta el momento, slo 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 geometra puede estar compuesta de uno o ms
elementos. Si la geometra 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, interpretacin).
Este cuadro NO muestra el desplazamiento de coordenadas. Este cuadro slo describe las
otras dos partes del valor del triplete (tipo de elemento, interpretacin).
No se debe confundir con los tipos de elementos SDO_GTYPEs, ya que stos representan
el tipo de geometra que se almacena.

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 interpretacin
describe cuntos puntos son almacenados.
Elemento de tipo 2: Para almacenar LineStrings
Interpretacin 1 representa una LineString convencional conectada con lneas rectas.
Interpretacin 2 representa una LineString compuesta de uno o ms arcos circulares.
Elemento de tipo 3: En un formato de 4 dgitos, 1003 representa un polgono de tipo anillo
exterior y 2003 representa un anillo interno:
Interpretacin 1: polgono convencional conectada con las lneas rectas
Interpretacin 2: Arc polygon (polgono arco) , conectado con arcos circulares
Interpretacin 3: Rectngulo optimizado , slo requiere de representar los puntos de la parte
inferior izquierda y superior derecha
del rectngulo
Interpretacin 4: crculo optimizado (no es realmente un polgono, pero es clasificado como
polgono porque tiene rea)
Elemento de tipo 4: LineString compuesta, tiene elementos contiguos que contiene lneas
rectas y arcos circulares. El campo de interpretacin determina cuntos 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 polgono compuesto de tipo anillo
exterior (un elemento contiguo que contiene lneas rectas y arcos circulares). 2005
representa un polgono compuesto que es un anillo interior . El campo de interpretacin
determina cuntos subelementos (es decir, los valores del triplete en el campo de
SDO_ELEM_INFO) componen este polgono compuesto.

LINESTRING

(x2,y2)

(x1,y1)

(x3,y3)

(x4,y4)

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


coordenada, tipo de elemento, interpretacin) que se almacena en el campo de
SDO_ELEM_INFO. La mayora de los desplazamientos de coordenadas que se ve en los
ejemplos siguientes comenzar con el nmero 1, porque los ejemplos que muestran tienen
geometras con un solo elemento. Hay algunos ejemplos con geometras que tienen ms
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 ms segmentos contiguos.
La interpretacin de un tipo de elemento 2 define cmo conectar los segmentos que
componen al LineString. En este ejemplo, la interpretacin es 1 y corresponde a una
LineString cuyos segmentos estn conectados con lneas rectas ( LineString convencional).
LineString que forman un anillo no tienen ninguna rea implicada.
Los segmentos de lnea pueden cruzar entre s.
Nota: SDO_GTYPE para esta geometra 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 geometra.

10

ARC STRING

(x2,y2)

(x4,y4)

(x1,y1)
(x3,y3)

(x5,y5)

(x7,y7)
(x6,y6)

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


tipo de elemento, interpretacin) 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 ms segmentos contiguos.
La interpretacin define cmo se han de conectar los segmentos que componen el
LineString. En este ejemplo, la interpretacin es 2, y corresponde a una LineString cuyos
segmentos estn conectados con arcos circulares. Un arco est definido por tres puntos
distintos de la circunferencia de un crculo: 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 geometra es 2002 (un solo elemento de tipo LineString).

11

POLYGON

(x5,y5)
(x6,y6)
(x1,y1)

(x4,y4)

(x2,y2)

(x3,y3)

En general, el tipo de elemento 3 corresponde a un polgono. En lugar de especificar un


tipo de elemento 3, se recomienda determinar claramente si un polgono anillo exterior o un
anillo interior. Polgonos de anillo exterior se representan como el tipo de elemento 1003, y
polgonos de anillo interior son representados como el tipo de elemento de 2003.
Los polgonos anillo exterior deben almacenar sus coordenadas en sentido contrario a las
manecillas del reloj.
El polgono anillo interior debe almacenar sus coordenadas en sentido horario.

Cumplir con los comentarios anteriores permite clculos ms rpidos.


El ltimo punto de un polgono debe ser el mismo que el primer punto. A pesar de que este
punto podra ser informacin un tanto obvia, debe repetirse para ajustarse al estndar del
Open Geospatial Consortium (OGC).
La interpretacin define cmo conectar los segmentos que conforman el polgono. En este
ejemplo, la interpretacin es 1, y corresponde a un polgono cuyos segmentos estn
conectados con lneas rectas (un polgono convencional).
Los segmentos de lnea de los polgonos NO se cruzan entre s.
Nota: SDO_GTYPE para esta geometra es 2003 (un nico polgono).

12

ARC POLYGON

(x6,y6)
(x7,y7)

(x5,y5)

(x8,y8)

(x4,y4)

(x9,y9)
(x1,y1)

(x3,y3)
(x2,y2)

El tipo de elemento de 1003 indica que es un polgono anillo exterior.


La interpretacin 2 indica que los segmentos de lnea son arcos circulares.
Las coordenadas que lo conforman se almacenan en sentido anti horario.
La interpretacin define cmo se conectan los segmentos que conforman el polgono. En
este caso, la interpretacin es de 2, y corresponde a un polgono cuyos segmentos estn
conectados con arcos circulares. Un arco circular est definido por tres puntos.
Nota: SDO_GTYPE para esta geometra es 2003 (un nico polgono).

13

RECTANGLE

(x2,y2)

(x1,y1)
El tipo de elemento de 1003 corresponde a un polgono anillo exterior.
Si el polgono fuera un anillo interior, estara representado, como el tipo de elemento 2003.
En este ejemplo, la interpretacin es 3, y corresponde a un rectngulo optimizado para el
almacenamiento. Slo la parte inferior izquierda y superior derecha de los puntos del
rectngulo se almacenan. Un rectngulo optimizado tiene rea.
Nota: SDO_GTYPE para esta geometra es 2003 (un nico polgono).

14

CIRCLE

(x2,y2)

(x1,y1)

(x3,y3)

El tipo de elemento de 1003 indica que es un polgono anillo exterior.


En este ejemplo, la interpretacin es de 4, y corresponde a un crculo. El crculo est
representado por cualquiera de los tres puntos distintos que integran la circunferencia.
Nota: SDO_GTYPE para esta geometra es 2003 (un nico polgono).

15

COMPOUND LINE STRING

El primer triplete es denominado encabezado


Elemento de tipo 4: nos indica que tenemos una LienString compuesta
Interpretacin 3: indica el nmero de subelementos por los cuales est formada la
LineString compuesta.

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


son conectados con lneas rectas o con arcos circulares.
Una LineString tiene las mismas propiedades que una LineString simple. Se permiten lneas
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 lnea recta o un arco circular.
El primero es un triplete de cabecera (header). La interpretacin en la cabecera indica
cuntos subelementos forman parte de la LineString compuesta.
Todos los subelementos deben ser del tipo de elemento 2 (interpretacin 1 2) y deben ser
contiguos (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 geometra es 2002 (un solo elemento de tipo LineString).

(x4,y4)
(x5,y5)

(x3,y3)
(x6,y6)
(x2,y2)

(x7,y7)

(x9,y9)
(x8,y8)

(x1,y1)

16

COMPOUND POLYGON

El triplete de encabezado define a los subelementos.


Tipo de elemento es 1005: Indica que es un polgono anillo exterior
Interpretacin 2: nos marca el nmero de subelementos que formarn al
polgono

(x6,y6)
(x7,y7)
(x1,y1)

(x4,y4)
(x5,y5)

(x3,y3)

(x2,y2)
El tipo de elemento 5 corresponde a un polgono compuesto.
Un polgono compuesto se define por una serie de subelementos contiguos. Cada
subelemento es una lnea recta o un arco circular. El primero es un triplete de cabecera. La
interpretacin en la cabecera indica cuntos subelementos (o tripletas adicionales en
SDO_ELEM_INFO) componen este polgono compuesto. Todos los subelementos de un
polgono compuesto debe ser del tipo de elemento 2 (segmentos) con la interpretacin 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 polgono).
Los polgonos compuestos tienen las mismas propiedades como polgonos (es decir, los
segmentos
de
lnea
de
los
polgonos
NO
se
cruzan
entre
s).

17

18

REGLAS PARA ELEMENTOS DE TIPO POLGONO

POLGONO CON HUECOS

(x5,y5)
(x8,y8)

(x6,y6)
(x1,y1)

(x4,y4)
(x7,y7)
(x2,y2)

(x3,y3)

Este es un ejemplo de un polgono 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 polgonos.
Nota: SDO_GTYPE para esta geometra es 2003 (un nico polgono ).

19

POLGONO COMPUESTO CON HUECOS

(x5,y5)

(x7,y7)
(x8,y8)
(x1,y1)

(x2,y2)

(x4,y4)

(x6,y6)
(x10,y10)
(x9,y9)

(x3,y3)

Este es un ejemplo de un polgono compuesto con un hueco. El anillo exterior es un tipo de


elemento 1005 (polgono compuesto) y el anillo interior es un tipo de elemento 2003
(rectngulo
optimizado).
El polgono 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 geometra es 2003 (un nico polgono ). Un polgono con uno o
ms elementos vaco todava puede ser considerado como un nico polgono (que no es
clasificado como un MultiPolygon).

20

CONSTRUYENDO GEOMETRAS

Utilice la instruccin SQL INSERT para la construccin de las geometras 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)

Anteriormente, se vio la forma de insertar un punto


SDO_POINT.

(40,10)

a travs de la utilizacin de

Este es el primer ejemplo para insertar datos de carcter geomtrico utilizando los
campos (SDO_ELEM_INFO y SDO_ORDINATES) del objeto SDO_GEOMETRY.
La instruccin 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 de
SDO_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));

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)));

(15,60)
(10,50)
(10,50)

(10,30)

(45,60)

(30,50)

(50,50)
(35,40)

(25,35)

(50,30)

Este es otro ejemplo para insertar informacin en los campos (SDO_ELEM_INFO y


SDO_ORDINATES) del objeto SDO_GEOMETRY.
En este ejemplo se inserta el polgono compuesto con un hueco, mismo que se habia
presentado con anterioridad.
La instruccin 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 del
tipo 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 geometra es 2003 (un nico polgono en 2D). Un polgono
con uno o ms huecos todava puede ser considerado como un nico polgono (que no es
clasificado
como
un
MultiPolygon).

21

REGLAS PARA INSERTAR GEOMETRAS EN


TABLAS ESPACIALES.

Todas las geometras deben tener la misma dimensin en una tabla espacial.
El valor D en SDO_GTYPE debe ser el mismo.
Todas las geometras deben estar asociadas con el mismo sistema de coordenadas.
El valor SDO_SRID debe ser el mismo.

SDO_GTYPE

4 dgitos para el GTYPEs:


Incluida la dimensin.

2D

3D

1. POINT

2001

3001

2. LINESTRING

2002

3002

3. POLYGON

2003

3003

4. HETEROGENEOUS

2004

3004

5. MULTIPOINT

2005

3005

6. MULTILINESTRING

2006

3006

7. MULTIPOLYGON

2007

3007

COLLECTION

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 actualizacin de la vista USER_SDO_GEOM_METADATA con
informacin 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 informacin 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 geometras para las cuales
x tiene permisos de select.
Oracle

Spatial

nunca

actualiza o elimina informacin


USER_SDO_GEOM_METADATA.

de

la

vista

de

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

Actualizar la vista USER_SDO_GEOM_METADATA con la informacin de


metadatos acerca de cada columna SDO_GEOMETRY.
Las siguientes vistas estn disponibles para cada usuario:
USER_SDO_GEOM_METADATA
ALL_SDO_GEOM_METADATA:
Esta contiene informacin de metadatos sobre todas las tablas espaciales sobre
las cuales el usuario tiene privilegios de SELECT
Nunca se debe de insertar informacin en esta vista, ya que su propsito
principal es mostrar informacin.

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

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 acrnimo para el sistema de identificacin 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 estn 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 es
utilizado actualmente por Oracle Spatial 11g; fue utilizado en versiones previas a Oracle
9i.
SDO_LB: LB es un acrnimo para el lmite inferior. Representa el valor ms mas
pequeo
para
esta
dimensin.
SDO_UB: UB es un acrnimo para el lmite superior. Representa el mayor valor posible
para esta dimensin.

SDO_TOLERANCE:
Es la distancia requerida entre dos coordenadas de manera que sean considerados como
coordenadas individuales.

Es utilizado por la indexacin de Oracle Spatial


Datos simples: La unidad de tolerancia y la unidad de datos son los mismos.
Datos geodsicos: Para los datos almacenados con longitud y latitud, la unidad de la
tolerancia es metros (es decir, 0,5m de tolerancia ). Los mrgenes ms pequeos de
tolerancia permitidos para los datos geodsicos son de 0,05 metros (5 centmetros).

23

INSERTANDO DATOS EN LA VISTA


USER_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 geodsicos, en el eje x los lmites deben ser desde -180 hasta 180, y en el
eje
y
los
lmites
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 carcter geomtrico, una fila de metadatos debe ser insertada en
USER_SDO_GEOM_METADATA. Esto se hace con insert convencional.
Nota: Usted debe especificar el eje "x" antes que el eje y.

También podría gustarte