Oracle Spatial de la A a la Z - Unidad 4

7

Click here to load reader

description

by Jorge Ulises Gonzalez Medina

Transcript of Oracle Spatial de la A a la Z - Unidad 4

Page 1: Oracle Spatial de la A a la Z - Unidad 4

4 Definiendo colecciones geométricas

OBJETIVOS•Construir geometrías como multipoint, multiline, y multipolygon.•Describir la forma de construir un punto de orientación.•Identificar los constructores y métodos de SDO_GEOMETRY.

Este es el primer ejemplo de una colección geometría. Una colección es una geometría que contiene varios elementos. En la figura se puede apreciar una colección de tipo multipunto. Para una multipunto, el tipo de elemento es 1, y la interpretación corresponde con el número de puntos que pertenecen a la colección.

Nota: SDO_GTYPE para esta geometría es 2005 (multipunto 2D). Recuerda que SDO_GTYPE es el primer campo del objeto SDO_GEOMETRY, el cual describe toda la geometría.

1 MULTIPOINT

Ordinate Offset Element

Type

Interpretation

1 1 5

Número de puntos que forman parte de la colección.

Page 2: Oracle Spatial de la A a la Z - Unidad 4

El SDO_GTYPE 2005 indica que se trata de un elemento de tipo multipunto de dos dimensiones.El valor de la interpretación en el primer triplete SDO_ELEM_INFO_ARRAY define el número de puntos que formarán parte de la colección.

SDO_GEOMETRY (2005, NULL, NULL, SDO_ELEM_INFO_ARRAY (1,1,2, 1,1,1,

3,1,1),SDO_ORDINATE_ARRAY (65,5, 70,7))

2 MULTILINESTRING

También es posible tener una colección de linestring´s; siempre y cuando estas no se encuentren conectadas entre si.

En la figura se muestra, la colección de varias polilineas (linestring´s). Para cada elemento de la colección se tiene un valor triple en el campo de SDO_ELEM_INFO. En el ejemplo la línea recta posee un triplete con los valores (1,2,1) y la segunda línea tiene un triplete de (7,2,1).

Nota: SDO_GTYPE para esta geometría es 2006 (multilinestring).

SDO_GEOMETRY (2006, NULL, NULL,

SDO_ELEM_INFO_ARRAY (1,2,1, 5,2,1),

SDO_ORDINATE_ARRAY (50,15, 55,15,

60,15, 65,15))3 MULTIPOLYGON

Page 3: Oracle Spatial de la A a la Z - Unidad 4

En ejemplo, se ejemplifica la colección MultiPolygon. Para un MultiPolygon, cada elemento de la colección contiene un valor triple en el campo de SDO_ELEM_INFO; el pentágono tiene un triplete (1,1003,1) y el triplete del rectángulo optimizado es (13,1003,3).

Un ejemplo real del uso de este tipo de colecciones es como el estado de Hawai se puede representar utilizando un MultiPolygon.

El SDO_GTYPE 2007 indica que se trata de un MultiPolygon El tipo de elemento de 1003 indica un polígono anillo exterior.

SDO_GEOMETRY (2007, NULL, NULL,

SDO_ELEM_INFO_ARRAY (1,1003,1, 11,1003,3),SDO_ORDINATE_ARRAY (50,105, 55,105,

60,110,

50,110, 50,105, 62,108, 65,112))

4 ORIENTED POINT (PUNTO ORIENTADO)Un punto orientado (oriented point) puede ser utilizado en la visualización de mapas y otras

aplicaciones de visualización que incluyen símbolos

El vector de orientación se utiliza para orientar la simbología y / o texto para el etiquetado en la cartografía y las aplicaciones de visualización. Por ejemplo, puedes usar un vector de orientación para mostrar una etiqueta de texto o una imagen orientada a un ángulo determinado.

Page 4: Oracle Spatial de la A a la Z - Unidad 4

El campo de SDO_ELEM_INFO para un punto de orientación contiene dos tripletes.

El primer triplete:coordenadas de desplazamiento: 0; ya que es el primer punto.Tipo de elemento: Un tipo de elemento de 1 para denotar un que se trata de un punto.Interpretación: Una interpretación con valor 1 para designar a un único punto.

El segundo triplete:coordenadas de desplazamiento: El elemento de compensación para el vector de orientaciónTipo de elemento: Un tipo de elemento de 1 para denotar un punto.Interpretación: Una interpretación con valor 0 para especificar que se trata de un vector de orientación.

La ubicación del punto de partida es (71, 42).Se esta representando un símbolo asociado con el punto que se orienta a lo largo de un vector (71, 42) hasta(72, 43) formando un ángulo de 45 grados.

SDO_GEOMETRY(2001, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,1,1, 3,1,0), SDO_ORDINATE_ARRAY(71, 42, 1, 1))

Los puntos orientados deben de poseer coordenadas para el punto que ha de ser almacenado, así como un conjunto de coordenadas que son relativas al punto especificado. Teniendo en cuenta las coordenadas del vector de orientación (i, j), la ecuación siguiente se puede utilizar para calcular el ángulo de orientación:Ángulo = arctan (j / i)En el ejemplo el vector tendría un valor de arctan (1 / 1) = 45 grados.

Reglas

•Un punto 2D tiene un vector de orientación 2D.•Un punto 2D con un sistema de referencia lineal (LRS) tiene un vector de orientación 2D.•Un punto 3D tiene un vector de orientación 3D.•Un punto en 3D con una medida de LRS tiene un vector de orientación 3D.

Page 5: Oracle Spatial de la A a la Z - Unidad 4

5 CONSTRUCTORES SDO_GEOMETRY

Los objetos SDO_GEOMETRY pueden ser creados utilizando diferentes constructores.Un constructor puede ser cualquiera de los siguientes:SQL Multimedia (SQL/MM) Well-Known Text (WKT) el cual puede ser una cadena de caracteresen el formato “character large object” (CLOB) o en el formato VARCHAR2SQL/MM Well-Known Binary (WKB) el cual posee el formato binary large object (BLOB) .Los constructores devuelven un objeto SDO_GEOMETRY.

Formatos de constructores:

Estos ejemplos muestran el uso de los constructores que utilizan SDO_GEOMETRY bajo SQL / MM WKT; adicionalmente se presenta su equivalente como lo habíamos trabajado en la unidad anterior.

1. En este ejemplo se toma una cadena WKT como entrada para representar un polígono.. Utilizando WKT debemos de tener separados por espacios los diferentes grupos de coordenadas

2. En este ejemplo se incluye un sistema de referencia espacial el cual nos permitirá rellenar el valor SDO_SRID del objeto SDO_GEOMETRY.

Page 6: Oracle Spatial de la A a la Z - Unidad 4

6 PRIMEROS MÉTODOS EN SDO_GEOMETRY

El tipo de objeto SDO_GEOMETRY dispone de una serie de métodos que nos permiten recuperar información acerca de un objeto en particular.

GET_GTYPE()El método GET_GTYPE() devuelve el tipo de geometría, la cual se encuentra especificada en el valor de SDO_GTYPE.

SELECT g.geom.get_gtype() state_gtype FROM geod_states g WHERE g.state = 'Delaware';STATE_GTYPE----------- 3

Nota: Cada vez que se accede a un método o un atributo asociado a un objeto, se debe utilizar un alias de la tabla. En el ejemplo, se utiliza el método de SDO_GEOMETRY GET_GTYPE. El alias de la tabla que es utilizado en este ejemplo es “g”; el cual esta asociado con la tabla geod_states.

GET_DIMS()Devuelve la dimension de un objeto tal y como se especifica en su valor SDO_GTYPE

SELECT s.geom.get_dims() state_dims FROM geod_states s WHERE s.state = 'Delaware';STATE_DIMS---------- 2

Otros métodos para objetos SDO_GEOMETRYGET_WKB():Devuelve la geometria en formato WKBGET_WKT():Devuelve la geometria en formato WKTST_CoordDim():Devuleve la dimension de una geometria; es un metodo analogo a GET_DIMS().ST_IsValid():Se encarga de verificar si una geometria es valida.Devuelve 1 s I es valida, en caso contraio devuleve 0.

Page 7: Oracle Spatial de la A a la Z - Unidad 4

set long 500;SELECT a.geom.GET_WKT() FROM (SELECT SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(146,66, 148,66, 148,68, 146,68, 146,66)) geom FROM dual) a;A.GEOM.GET_WKT()----------------POLYGON ((146.0 66.0, 148.0 66.0, 148.0 68.0, 146.0

68.0, 146.0 66.0))

SELECT a.geom.ST_COORDDIM() FROM (SELECT SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(146,66, 148,66, 148,68, 146,68, 146,66)) geom FROM dual) a;

SELECT a.geom.ST_IsValid() FROM (SELECT SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(146,66, 148,66, 148,68, 146,68, 146,66)) geom FROM dual) a;

1

2

Otro método que nos permite checar la validez de una geometría es:SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT