Extensiones Espaciales

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

2.1.1 Definición. Un arreglo puede definirse como un grupo o una colección finita, homogénea y ordenada de elementos. Los arreglos pueden ser de los siguientes.
Diccionario de Datos (DD)
Descripción del Trabajo Final
SQL Y BASES DE DATOS A TRAVÉS DE LA WEB
SQL Sigla del nombre “Structured Query Language”.
CLASIFICACIÓN DE CLASES Orientación a objetos UNIVERSIDAD DEL VALLE DEL FUERTE Análisis y Diseño Orientado a Objetos Cañedo Encinas Fernando Onorat. Ingeniería.
VISTAS (VIEWS) DEFINICIÓN Y OBJETIVO DE LAS VISTAS.
Rocio Contreras Aguila Primer Semestre Para poder ejecutar esto SQL Server nos permite definir datos y nos entrega herramientas para poder exigir.
LENGUAJE ESTRUCTURADO DE CONSULTA “SQL”
BASE DE DATOS OBJETO RELACIONAL
XML XQuery.
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo Introducción a PL/SQL Conceptos básicos.
CGI I La mayor parte de los elementos HTML de que disponemos permite al visitante visualizar los contenidos de un sitio, pero no interactuar con él. Dicho.
Acceso a bases de datos MySQL en PHP
Parte 3. Descripción del código de una función 1.
Sistemas de coordenadas de referencia
GAZETTEER Y SERVICIO WFS-G
Por: Ronald Toscano Pretelt
Analizadores Sintácticos Descendentes Predictivos
LABVIEW FILE I/O CLASE 5.
INTELIGENCIA ARTIFICIAL
Lenguaje de consulta de Hibernate
Máster en Tecnologías de Información Geográfica
Julio Pacheco SQL SERVER 2005 XML APRENDIENDO CON EJEMPLOS.
Introducción XML y WebServices.
Sistema de gestión de las bases de datos (SGBD).
Teoría de lenguajes y compiladores
Base de Datos Relacional.
INTERFAZ DE ACCES DISEÑO DE BASE DE DATOS
Lenguaje Estructurado de Consultas (Structured Query Language – SQL)
DIAGRAMA DE COMPONENTES INTEGRANTES Córdova Vásquez Giovanny Escobar Alvares Calixto Gomez Quinteros Adelaida Pinto Flores Yarmila.
Marzo 2007 Lenguajes Visuales Clase III.
Tipos de datos y campos.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
POO Java Módulo 3 Elementos de programas Identificadores
Mayo de 2009Dos Ideas - La visión de Sistemas desde el Desarrollo Definición de Datos Conceptos básicos.
"Y todo lo que hagáis, hacedlo de corazón, como para el Señor y no para los hombres" (Colosenses 3:23) Modelo Orientado a Objetos UML (I) Prof. Leonid.
SESIÓN 2. Completados por el tipo de objeto sobre el que actúan y el objeto concreto: CREATE DATABASE mibase ; Permite crear una base de datos llamada.
UNIDAD I Conceptos Básicos.
SQL Lenguaje de consulta estructurado
Motores de almacenamiento en MySQL por Mario López y Juan A. Sánchez.
Introducción a los Datos Espaciales Ms Fernando Bordignon.
Facultad I · Prof. Dr. Volkert Brosda 1 XQuery una herramienta para trabajar con XML Volkert Brosda.
Administración de Archivos
Definition Type Document (DTD)
Subconsultas Avanzadas
Bases de datos en la Web n Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web n Ventajas –Proporcionar.
Componentes sintácticos
Clase 10: Estructuras de datos y arreglos.
Colegio de Bachilleres Plantel 13 Xochimilco-Tepepan Integrantes: Karen Elizabeth González Monroy Elizabeth De Jesús Vergara Grupo:308.
INSTITUTO DE ESTUDIOS SUPERIORES DE CHIHUAHUA COMPUTACION Ciclo: segundo cuatrimestre Lic. Roberto Servando Roque Corona.
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
IBD CLASE 15. SQL Lenguaje de Consultas Estruturado (SQL) ◦Lenguaje de trabajo estándard para modelo relacional ◦Componentes ◦DDL: Data Definition Language.
Introducción a Bases de Datos en Microsoft Access Programación de Computadoras 2 Sección: P.
Structured Query Language (Lenguaje Estructurado de Consultas)
Introducción a UML DIAGRAMA DE CLASES Departamento de Informática
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:21 PRESENTACION: BASE DE DATOS ALUMNAS: Adán Millán Sánchez.
“NormaTécnica NTG ” Lic. Enrique Navarro Luévano INEGI Acceso e Intercambio de Datos e Información Geoespaciales.
Mapeo de Estructuras XML a Bases de Datos Relacionales
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 0 Introducción.
Base de Datos I. SQL es el lenguaje estándar para trabaja con base de datos relacionales. MySQL, el sistema de gestión de bases de datos SQL Open Source.
Una base de datos es una colección de información organizada de forma que un programa de ordenador pueda seleccionar rápidamente los fragmentos de datos.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
Comandos DDL Los comandos DDL son las siglas de Data Definition Language, y se corresponde con el conjunto de órdenes que permiten definir las estructuras.
SQL es un estándar internacional para trabajar con bases de datos, que consta de dos partes: una parte para manipular datos y una parte para definir tipos.
SQL Lenguaje Estructurado de Consultas. Structured Query Lenguaje (SQL). Lenguaje de acceso a bases de datos. Proyecto de Investigación de IBM. La mayoria.
Bases de Datos SQL.
M. A. Manso + M. A. Bernabé + D. Ballari. Grupo de Investigacion MERCATOR. UPM 03/04/ Contenido Servicios OGC basados en Open Source Bases de datos.
Transcripción de la presentación:

Extensiones Espaciales Instituto Tecnológico de Costa Rica Maestría en Computación MC6007: Bases de Datos Avanzadas Extensiones Espaciales de MySQL Santiago Molina Cartago, Costa Rica http://www.freewebs.com/santiagobd

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

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) http://www.opengis.org 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.

Conceptos básicos 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: punto o conjunto de puntos representando cualquier cosa en el mundo que tenga una ubicación.

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.

Jerarquía de clases geométricas Geometry Point Curve Surface GeometryCollection LineString Polygon MultiPoint MultiCurve MultiSurface MultiPolygon MultiLineString Todas las clases tiene propiedades. Las clases instanciables tienen reglas (aserciones) que definen las instancias de clases válidas.

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.

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

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.

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

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) 0101000000000000000000F03F000000000000F03F Orden de byte : 01 (0: little endian; 1: big endian) Tipo WKB : 01000000 (Código que indica el tipo de geometría) X : 000000000000F03F (Coord. en valor de doble precisión) Y : 000000000000F03F

Storage Engines con soporte Geoespacial

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

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]) GeomCollFromText(wkt[,srid]) LineFromText(wkt[,srid]) MLineFromText(wkt[,srid]) MPointFromText(wkt[,srid]) MPolyFromText(wkt[,srid]) PointFromText(wkt[,srid]) PolyFromText(wkt[,srid])

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]) GeomCollFromWKB(wkb[,srid]) LineFromWKB(wkb[,srid]) MLineFromWKB(wkb[,srid]) MPointFromWKB(wkb[,srid]) MPolyFromWKB(wkb[,srid]) PointFromWKB(wkb[,srid]) PolyFromWKB(wkb[,srid])

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)

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;

Bases de datos con capacidades espaciales INSERT: INSERT INTO geom VALUES (GeomFromText('POINT(1 1)')); SET @g = 'POINT(1 1)'; INSERT INTO geom VALUES (GeomFromText(@g)); Usando funciones específicas: INSERT INTO geom VALUES (PointFromText(@g)); Usando representaciones WKB: mysql> INSERT INTO geom VALUES -> (GeomFromWKB(0x0101000000000000000000F03F000000000000F03F));

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;

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.

Funciones Geometry 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): 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)) |

Funciones Geometry (2) 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): 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 |

Funciones Point X(p) mysql> SET @pt = 'Point(56.7 53.34)'; mysql> SELECT X(GeomFromText(@pt)); +---------------------------------+ | X(GeomFromText(@pt)) | | 56.7 | Y(p) mysql> SELECT Y(GeomFromText(@pt)); | Y(GeomFromText(@pt)) | | 53.34|

Funciones LineString EndPoint(ls) mysql> SET @ls = 'LineString(1 1,2 2,3 3)'; mysql> SELECT AsText(EndPoint(GeomFromText(@ls))); +------------------------------------------------------+ | AsText(EndPoint(GeomFromText(@ls))) | | POINT(3 3) | GLength(ls) mysql> SELECT GLength(GeomFromText(@ls)); +------------------------------------------+ | GLength(GeomFromText(@ls)) | | 2.8284271247462 |

Funciones LineString (2) NumPoints(ls) mysql> SET @ls = 'LineString(1 1,2 2,3 3)'; mysql> SELECT NumPoints(GeomFromText(@ls)); +---------------------------------------------+ | NumPoints(GeomFromText(@ls)) | | 3 | PointN(ls,N) mysql> SELECT AsText(PointN(GeomFromText(@ls),2)); +------------------------------------------------------+ | AsText(PointN(GeomFromText(@ls),2)) | | POINT(2 2) |

Funciones LineString (3) StartPoint(ls) mysql> SET @ls = 'LineString(1 1,2 2,3 3)'; mysql> SELECT AsText(StartPoint(GeomFromText(@ls))); +-------------------------------------------------------+ | AsText(StartPoint(GeomFromText(@ls))) | | POINT(1 1) |

Funciones MultiLineString GLength(mls) mysql> SET @mls = 'MultiLineString((1 1,2 2,3 3),(4 4,5 5))'; mysql> SELECT GLength(GeomFromText(@mls)); +---------------------------------------------+ | GLength(GeomFromText(@mls)) | | 4.2426406871193 | IsClosed(mls) mysql> SELECT IsClosed(GeomFromText(@mls)); | IsClosed(GeomFromText(@mls)) | | 0 |

Funciones Polygon Area(poly) mysql> SET @poly = 'Polygon((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))'; mysql> SELECT Area(GeomFromText(@poly)); +----------------------------------------+ | Area(GeomFromText(@poly)) | | 4 | ExteriorRing(poly) mysql> SET @poly = 'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))'; mysql> SELECT AsText(ExteriorRing(GeomFromText(@poly))); +--------------------------------------------------------------+ | AsText(ExteriorRing(GeomFromText(@poly))) | | LINESTRING(0 0,0 3,3 3,3 0,0 0) |

Funciones Polygon (2) InteriorRingN(poly,N) mysql> SET @poly = 'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))'; mysql> SELECT AsText(InteriorRingN(GeomFromText(@poly),1)); +------------------------------------------------------------------+ | AsText(InteriorRingN(GeomFromText(@poly),1)) | +-----------------------------------------------------------------+ | LINESTRING(1 1,1 2,2 2,2 1,1 1) | NumInteriorRings(poly) mysql> SELECT NumInteriorRings(GeomFromText(@poly)); +---------------------------------------------------------+ | NumInteriorRings(GeomFromText(@poly)) | | 1 |

Funciones MultiPolygon Area(mpoly) mysql> SET @mpoly = 'MultiPolygon(((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1)))'; mysql> SELECT Area(GeomFromText(@mpoly)); +-------------------------------------------+ | Area(GeomFromText(@mpoly)) | | 8 | +------------------------------------------+

Funciones GeometryCollection GeometryN(gc,N) mysql> SET @gc = 'GeometryCollection(Point(1 1),LineString(2 2, 3 3))'; mysql> SELECT AsText(GeometryN(GeomFromText(@gc),1)); +-------------------------------------------------------------+ | AsText(GeometryN(GeomFromText(@gc),1)) | | POINT(1 1) | NumGeometries(gc) mysql> SELECT NumGeometries(GeomFromText(@gc)); +------------------------------------------------------+ | NumGeometries(GeomFromText(@gc)) | | 2 | +-----------------------------------------------------+

GeoflashExplorer y Ext. Espacial MySQL

Más Info Documentación MySQL: http://dev.mysql.com/doc/ Foro MySQL: http://forums.mysql.com/list.php?23 JCC’s SQL Standars Page http://www.jcc.com/sql.htm GeoFlashExplorer: http://www.theurbanexplorer.com

¿Preguntas? Comentarios…