La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Extensiones Espaciales de MySQL Santiago Molina Cartago, Costa Rica Instituto Tecnológico de Costa Rica Maestría en.

Presentaciones similares


Presentación del tema: "Extensiones Espaciales de MySQL Santiago Molina Cartago, Costa Rica Instituto Tecnológico de Costa Rica Maestría en."— Transcripción de la presentación:

1 Extensiones Espaciales de MySQL Santiago Molina Cartago, Costa Rica Instituto Tecnológico de Costa Rica Maestría en Computación MC6007: Bases de Datos Avanzadas

2 MC Bases de Datos Avanzadas Contenido Introducción El modelo geométrico OpenGIS Formato de datos espaciales Storage Engines con soporte Geoespacial Bases de datos con capacidades espaciales Funciones para análisis de información espacial

3 MC Bases de Datos Avanzadas Introducción MySQL ha agregado extensiones especiales para permitir la generación, almacenamiento y análisis de capacidades espaciales. Las extensiones siguen la especificación del Consorcio Open GIS (OGC) MySQL implementa un subconjunto del entorno SQL con Tipos Geométricos propuesto por el OGC: tipos geométricos SQL, funciones para crear y analizar valores geométricos.

4 MC Bases de Datos Avanzadas Conceptos básicos Elemento geométrico Elemento geométrico: Cualquier objeto en el mundo que tenga una ubicación. Por ejemplo: Una entidad: una montaña, una ciudad, etc. Un espacio: área de código postal. Una ubicación definible: un cruce de carreteras. Geometría Geometría: punto o conjunto de puntos representando cualquier cosa en el mundo que tenga una ubicación.

5 MC Bases de Datos Avanzadas El modelo geométrico OpenGIS La especificación propuesta por el OGC se basa en el modelo OpenGIS de geometría; en éste, cada objeto geométrico tiene las siguiente propiedades: Asociación a un Sistema de Referencia Espacial. Pertenencia a alguna geometría. Existe una jerarquía de clases que describen el modelo Algunas clases son instanciables, otras no.

6 MC Bases de Datos Avanzadas Jerarquía de clases geométricas Todas las clases tiene propiedades. Las clases instanciables tienen reglas (aserciones) que definen las instancias de clases válidas. Point LineStringPolygonMultiPoint Geometry CurveSurfaceGeometryCollection MultiCurve MultiSurface MultiPolygonMultiLineString

7 MC Bases de Datos Avanzadas Clase Geometry Clase base de la jerarquía, no instanciable. Tiene propiedades que son comunes para todas las subclases: Tipo: cada geometría pertenece a una de las clases instanciables. SRID (Identificador de Referencial Espacial): Identifica el Sistema de Referencia Espacial asociado a la geometría que define el espacio de coordenadas en el que la geometría está definida. Exterior: es todo el espacio no ocupado por la geometría. Interior: el espacio ocupado por la geometría. Límite: es la interfaz entre el interior y el exterior de la geometría.

8 MC Bases de Datos Avanzadas Clase Geometry [2] Propiedades: MBR (Mininum Bounding Rectangle): es el límite de la geometría, formado por valores mínimos y máximos de coordenadas (X, Y). Simple o no-simple: valores geométricos de tipo (LineString, MultiPoint, MultiLineString) son simples o no-simples. Cerrado o no cerrado: valores geométricos de tipo (LineString, MultiLineString) son cerrados o no cerrados. Dimensión: una geometría puede tener dimensión -1, 0, 1 ó 2. -1: geometría vacía. 0: geometría sin longitud ni área. Point 1: geometría con longitud diferente de cero y área cero. LineString 2: geometría con área distinta de cero. Polygon

9 MC Bases de Datos Avanzadas Formato de datos espaciales Formatos soportados que suelen utilizarse para representar objetos geométricos en consultas: Well-Known Text (WKT) Well-Known Binary (WKB) MySQL almacena los valores de geometría en un formato no idéntico a los antes mencionados.

10 MC Bases de Datos Avanzadas Formato WKT Diseñado para intercambiar datos geométricos en formato ASCII. Algunos ejemplos: POINT(15 25) LINESTRING(0 0, 15 15, 20 25, 45 55) POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5)) MULTIPOINT(0 0, 20 20, 60 60) MULTILINESTRING((10 10, 20 20), (15 15, 30 15)) MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5))) GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))

11 MC Bases de Datos Avanzadas Formato WKB Definido tanto por la especificación OpenGIS como por el estándar SQL/MM Part 3: Spatial. Se emplea para intercambiar datos como cadenas binarias representadas por valores BLOB que contienen información geométrica WKB. Ejemplo:POINT (1 1) F03F F03F Orden de byte : 01(0: little endian; 1: big endian) Tipo WKB : (Código que indica el tipo de geometría) X : F03F (Coord. en valor de doble precisión) Y : F03F

12 MC Bases de Datos Avanzadas Storage Engines con soporte Geoespacial

13 MC Bases de Datos Avanzadas Bases de datos con capacidades espaciales MySQL tiene tipos de datos que corresponden a las clases OpenGIS: GEOMETRY: puede almacenar valores geométricos de cualquier tipo. POINT LINESTRING POLYGON Los siguientes tipos pueden almacenar colección de valores: MULTIPOINT MULTILINESTRING MULTIPOLYGON GEOMETRYCOLLECTION

14 MC Bases de Datos Avanzadas Crear Geometrías usando Funciones WKT MySQL proporciona funciones que toman como parámetros de entrada una representación WKT y, opcionalmente, un SRID. El valor de retorno es la geometría correspondiente. GeomFromText(wkt [, srid]) GeomFromText(wkt [, srid]) GeomCollFromText(wkt[,srid]) GeomCollFromText(wkt[,srid]) LineFromText(wkt[,srid]) LineFromText(wkt[,srid]) MLineFromText(wkt[,srid]) MLineFromText(wkt[,srid]) MPointFromText(wkt[,srid]) MPointFromText(wkt[,srid]) MPolyFromText(wkt[,srid]) MPolyFromText(wkt[,srid]) PointFromText(wkt[,srid]) PointFromText(wkt[,srid]) PolyFromText(wkt[,srid]) PolyFromText(wkt[,srid])

15 MC Bases de Datos Avanzadas Crear Geometrías usando Funciones WKB También, provee otras funciones que toman como parámetros de entrada un BLOB que contiene una representación WKB, y opcionalmente, un SRID. GeomFromWKB(wkb [, srid]) GeomFromWKB(wkb [, srid]) GeomCollFromWKB(wkb[,srid]) GeomCollFromWKB(wkb[,srid]) LineFromWKB(wkb[,srid]) LineFromWKB(wkb[,srid]) MLineFromWKB(wkb[,srid]) MLineFromWKB(wkb[,srid]) MPointFromWKB(wkb[,srid]) MPointFromWKB(wkb[,srid]) MPolyFromWKB(wkb[,srid]) MPolyFromWKB(wkb[,srid]) PointFromWKB(wkb[,srid]) PointFromWKB(wkb[,srid]) PolyFromWKB(wkb[,srid]) PolyFromWKB(wkb[,srid])

16 MC Bases de Datos Avanzadas Funciones específicas de MySQL MySQL provee un conjunto de funciones (extensiones) no estándar para crear representaciones WKB de geometrías. El valor devuelto por estas funciones se puede emplear como argumento por cualquier función de la familia GeomFromWKB(…). GeometryCollection(g1,g2,...) LineString(pt1,pt2,...) MultiLineString(ls1,ls2,...) MultiPoint(pt1,pt2,...) Point(x,y)

17 MC Bases de Datos Avanzadas Bases de datos con capacidades espaciales MySQL provee una forma estándar de crear columnas espaciales para tipos geométricos. CREATE TABLE: mysql> CREATE TABLE geom (g GEOMETRY); Query OK, 0 rows affected (0.02 sec) ALTER TABLE: mysql> ALTER TABLE geom ADD pt POINT; Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> ALTER TABLE geom DROP pt; Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0

18 MC Bases de Datos Avanzadas Bases de datos con capacidades espaciales INSERT: INSERT INTO geom VALUES (GeomFromText('POINT(1 1)')); = 'POINT(1 1)'; INSERT INTO geom VALUES Usando funciones específicas: = 'POINT(1 1)'; INSERT INTO geom VALUES Usando representaciones WKB: mysql> INSERT INTO geom VALUES -> (GeomFromWKB(0x F03F F03F));

19 MC Bases de Datos Avanzadas Bases de datos con capacidades espaciales Extraer datos espaciales: formato interno y convertir a WKT o WKB. Formato interno: CREATE TABLE geom2 (g GEOMETRY) SELECT g FROM geom; En formato WKT: mysql> SELECT AsText(g) FROM geom; | AsText(p1) | | POINT(1 1) | | LINESTRING(0 0,1 1,2 2) | En formato WKB: SELECT AsBinary(g) FROM geom;

20 MC Bases de Datos Avanzadas Analizando información espacial Funciones de conversión de formato: AsBinary(g): convierte de formato interno a WKB AsText(g): convierte de formato interno a WKT GeomFromText(wkt[,srid]): convertir de WKT a formato interno GeomFromWKB(wkb[,srid]): convertir de WKB a formato interno.

21 MC Bases de Datos Avanzadas Funciones Geometry Dimension(g) Dimension(g): retorna la dimensión de g (-1, 0, 1, 2). mysql> SELECT Dimension(GeomFromText('LineString(1 1,2 2)')); | Dimension(GeomFromText('LineString(1 1,2 2)')) | | 1 | Envelope(g) Envelope(g): retorna el MBR de la geometría g. mysql> SELECT AsText(Envelope(GeomFromText('LineString(1 1,2 2)'))); | AsText(Envelope(GeomFromText('LineString(1 1,2 2)'))) | | POLYGON((1 1,2 1,2 2,1 2,1 1)) |

22 MC Bases de Datos Avanzadas Funciones Geometry (2) GeometryType(g) GeometryType(g): retorna el nombre (string) del tipo de geometría g. mysql> SELECT GeometryType(GeomFromText('POINT(1 1)')); | GeometryType(GeomFromText('POINT(1 1)')) | | POINT | SRID(g) SRID(g): retorna del SRID de la geometría g. mysql> SELECT SRID(GeomFromText('LineString(1 1,2 2)',101)); | SRID(GeomFromText('LineString(1 1,2 2)',101)) | | 101 |

23 MC Bases de Datos Avanzadas Funciones Point X(p) X(p) mysql> = 'Point( )'; mysql> SELECT | | | 56.7 | Y(p) mysql> = 'Point( )'; mysql> SELECT | | | 53.34|

24 MC Bases de Datos Avanzadas Funciones LineString EndPoint(ls) EndPoint(ls) mysql> = 'LineString(1 1,2 2,3 3)'; mysql> SELECT | | | POINT(3 3) | GLength(ls) GLength(ls) mysql> = 'LineString(1 1,2 2,3 3)'; mysql> SELECT | | | |

25 MC Bases de Datos Avanzadas Funciones LineString (2) NumPoints(ls) NumPoints(ls) mysql> = 'LineString(1 1,2 2,3 3)'; mysql> SELECT | | | 3 | PointN(ls,N) PointN(ls,N) mysql> = 'LineString(1 1,2 2,3 3)'; mysql> SELECT | | | POINT(2 2) |

26 MC Bases de Datos Avanzadas Funciones LineString (3) StartPoint(ls) StartPoint(ls) mysql> = 'LineString(1 1,2 2,3 3)'; mysql> SELECT | | | POINT(1 1) |

27 MC Bases de Datos Avanzadas Funciones MultiLineString GLength(mls) GLength(mls) mysql> = 'MultiLineString((1 1,2 2,3 3),(4 4,5 5))'; mysql> SELECT | | | | IsClosed(mls) IsClosed(mls) mysql> = 'MultiLineString((1 1,2 2,3 3),(4 4,5 5))'; mysql> SELECT | | | 0 |

28 MC Bases de Datos Avanzadas Funciones Polygon Area(poly ) Area(poly ) mysql> = 'Polygon((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))'; mysql> SELECT | | | 4 | ExteriorRing(poly ) ExteriorRing(poly ) mysql> = 'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))'; mysql> SELECT | | | LINESTRING(0 0,0 3,3 3,3 0,0 0) |

29 MC Bases de Datos Avanzadas Funciones Polygon (2) InteriorRingN(poly,N) InteriorRingN(poly,N) mysql> = 'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))'; mysql> SELECT | | | LINESTRING(1 1,1 2,2 2,2 1,1 1) | NumInteriorRings(poly) NumInteriorRings(poly) mysql> = 'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))'; mysql> SELECT | | | 1 |

30 MC Bases de Datos Avanzadas Funciones MultiPolygon Area(mpoly) Area(mpoly) mysql> = 'MultiPolygon(((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1)))'; mysql> SELECT | | | 8 |

31 MC Bases de Datos Avanzadas Funciones GeometryCollection GeometryN(gc,N) GeometryN(gc,N) mysql> = 'GeometryCollection(Point(1 1),LineString(2 2, 3 3))'; mysql> SELECT | | | POINT(1 1) | NumGeometries(gc) NumGeometries(gc) " mysql> = 'GeometryCollection(Point(1 1),LineString(2 2, 3 3))'; " mysql> SELECT " " | | " " | 2 | "

32 MC Bases de Datos Avanzadas GeoflashExplorer y Ext. Espacial MySQL

33 MC Bases de Datos Avanzadas Más Info Documentación MySQL: Foro MySQL: JCCs SQL Standars Page GeoFlashExplorer:

34 MC Bases de Datos Avanzadas ¿Preguntas? Comentarios…


Descargar ppt "Extensiones Espaciales de MySQL Santiago Molina Cartago, Costa Rica Instituto Tecnológico de Costa Rica Maestría en."

Presentaciones similares


Anuncios Google