Models de dades espacials. Bases de dades espacials

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

Extensiones Espaciales
Spatial Database Bases de Datos Espaciales MOTORES COMERCIALES Oracle Spatial.
Bases de Datos Espaciales SPATIAL QUERY LANGUAGES
1 Intersecting chords in the interior of a circle Secants intersecting at a common exterior point. Tangents intersecting at a common exterior point Secant.
PL/SQL Francisco Moreno Universidad Nacional. Funciones Si un procedimiento tiene solo un parámetro de salida, se puede remplazar por una función y esta.
Características Objeto Relacionales en Oracle
PL/SQL Francisco Moreno Universidad Nacional.
…Tablas DDL.
SQL Lenguaje de consulta estructurado
Introducción a los Datos Espaciales Ms Fernando Bordignon.
Vocabulary of Instruction: Geometry
Fernando Alonso Nicolás Serrano Acceso a Bases de Datos con Java JDBC 01 de Abril de 2008.
HYPERBOLAS Standard 4, 9, 16, 17 DEFINITION OF A HYPERBOLA
DEFINITION OF A ELLIPSE STANDARD FORMULAS FOR ELLIPSES
PUESTO-TRABAJO (Código-Puesto, Empresa, Sueldo, DNI- Contratado) TITULADO (DNI-Titulado, Nombre, Apellidos, Dirección) TITULACION (Iden-Titulación, Nombre,
Two-dimensional Shapes Las formas bidimensionales
Tema: DISTANCIA ENTRE DOS PUNTOS
SQL: DDL.
6 Triggers ORACLE - II Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
6 Triggers ORACLE - III Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
La Fecha: Hoy es martes, 30 de septiembre Objective: SWBAT use the verb tener in Spanish to talk about things that you and others have and have to do.
Linear Wire Antennas Infinitesimal Dipole From: Balanis, C. A. “Antenna Theory, Analysis and Design” Third Edition. A John Wiley & Sons, Inc.,Publication.
Anàlisi de Fourier i Mesures en Corrent Continu
Francisco Moreno Bases de Datos II Universidad Nacional
Introducción a JAVA COMP 250.
Curso Computación-Tecnología Médica
MYSQL SQL: Lenguaje de consulta estructurado. Es un lenguaje de programación para trabajar con BD relacionadas, entre las cuales tenemos MYSQL, ORACLE,
Tipos de datos en MYSQL YEAR: Año. “YYYY” o “YY”
BASE DE DATOS IUPSM CLASE PRACTICA. PROF. ING. JOSE L GUZMAN H.
SQL: structured Query Language
1.1 Key Concepts.
MATH VOCABULARY WEEK #9 x-axis –the horizontal number line that, together with the y-axis, forms the coordinate plane. y-axis –the vertical number line.
Español 2 5 de diciembre de 2016
Oracle Pl/SQl Developer – Nivel 1
GRAPHIC MATERIALS 1. GRAPHIC MATERIALS. GRAPHIC MATERIALS 1. GRAPHIC MATERIALS.
Youden Analysis. Introduction to W. J. Youden Components of the Youden Graph Calculations Getting the “Circle” What to do with the results.
Projecte Fi de Carrera Disseny i desenvolupament d’un esquema criptogràfic per gestionar de forma segura els historials mèdics dels pacients a través d’una.
Equacions amb dues incògnites.
Elaboració d’un mapa temàtic
Models de dades espacials
Ciències per al món contemporani
Ciències per al món contemporani
Cambios en el espacio: transformaciones geométricas
Presentació de la base de dades
Library and Information Science Abstract
Creació d’un mapa personalitzat
Las figuras geométricas
Magnitudes vectoriales
Equivalent Thèvenin d'un circuit de corrent continu
SISTEMA GESTOR D’EMPRESA D’EXCAVACIONS
Jonathan Ceballos Rodriguez ( ) Zenón Perisé Alía ( )
Fonaments de Cartografia i Sistemes d’Informació Geogràfica
Optimització de consultes en MySQL (unes notes)
Disseny de la persistència Introducció i mapping objecte/relacional
SCIENCE OF SYNTHESIS.
Magnitudes vectoriales
Disseny de la persistència Introducció i mapping objecte/relacional
Disseny de la persistència Serialització
Capítulo 7 USO DE BASES DE DATOS OBJETO- RELACIONALES.
Los Pronombres.
Matemàtiques Geometria.
REAXYS.
VECTOR: Conjuction of 2 parameters: Module: Quantity, actual value, dimension Direction: “Where is it going to or coming from”
Xavi Fabregat 4tA Karim Atsailali 4tA
Dipòsit Digital de la Universitat de Barcelona
Welcome to PowerPoint gdskcgdskfcbskjc. Designer helps you get your point across PowerPoint Designer suggests professional designs for your presentation,
Astronomy has really big numbers. Distance between Earth and Sun meters kilometers This is the closest star.
ENTERPRISE ARCHITECTURE UCV –TRUJILLO Ing. Mg. Daniel Antonio Miranda Acuña.
3D Man Arranging Colorful Toy Blocks Your Logo. 3D Man Arranging Colorful Toy Blocks.
Transcripción de la presentación:

Models de dades espacials. Bases de dades espacials Fonaments de Cartografia i Sistemes d’Informació Geogràfica

Bases de dades amb suport espacial (vectorial) Recordatori: Model integrat: Un gestor de bases de dades relacionals incorpora tipus de dades, operadors, funcions i índexs per treballar amb les geometries de les dades vectorials En contraposició, el model híbrid gestiona per separat atributs i geometries Exemples: MySQL, Spatial Extensions (opensource) PostgreSQL i PostGIS (opensource) Oracle Spatial

MySQL: tipus geomètrics Geometry (non-instantiable) Point (instantiable) Curve (non-instantiable) LineString (instantiable) Line LinearRing Surface (non-instantiable) Polygon (instantiable) GeometryCollection (instantiable) MultiPoint (instantiable) MultiCurve (non-instantiable) MultiLineString (instantiable) MultiSurface (non-instantiable) MultiPolygon (instantiable)

MySQL: creació d’una taula CREATE TABLE illes ( codi integer, nom varchar(50), … geometria GEOMETRY );

MySQL: Representació de geometries Valors: Un punt: POINT(15 20) Una línia amb 4 punts: LINESTRING(0 0, 10 10, 20 25, 50 60) Un polígon amb un anell exterior i un altre interior: POLYGON( (0 0,10 0,10 10,0 10,0 0), (5 5,7 5,7 7,5 7, 5 5) )

MySQL: operadors espacials (I) Buffer(g,d) Difference(g1,g2) Intersection(g1,g2) SymDifference(g1,g2) Union(g1,g2) NOTA: Operacions referides al Minimum Bounding Rectangle (MBR)

MySQL: operadors espacials (II) Distance(g1,g2) Contains(g1,g2) Crosses(g1,g2) Disjoint(g1,g2) Equals(g1,g2) Intersects(g1,g2) Overlaps(g1,g2) Related(g1,g2,pattern_matrix) Touches(g1,g2) Within(g1,g2)

MySQL: indexació Podem definir un índex espacial sobre una columna de tipus geomètric per accelerar els accessos CREATE SPATIAL INDEX sp_index ON carrers(geometria); Utilitza arbre R

PostgreSQL: tipus de dades geomètrics Tipus geomètric Tamany d’emmag. Representació Descripció Point 16 bytes (x,y) Un punt en l’espai Line 32 bytes ((x1,y1),(x2,y2)) Una línia entre dos punts Lseg Un segment de línia entre dos punts Box Un rectangle definit per dos vèrtexs oposats Path 4+32n bytes ((x1,y1),...) Un seguit desegments de línia (tancat) [(x1,y1),...] Un seguit desegments de línia (obert) Polygon Polígon (similar a un path tancat) Circle 24 bytes <(x,y),r> Cercle (definit pel centre i el radi)

PostgreSQL: índex espacial Podem definir un índex espacial sobre una columna de tipus geomètric per accelerar els accessos Per fer-ho s’utilitza l’arbre R Exemple: CREATE INDEX name ON table USING RTREE (column);

PostgreSQL: funcions geomètriques Retorna Descripció Exemple area(object) double precision area of item area(box '((0,0),(1,1))') box(box, box) box intersection box box(box '((0,0),(1,1))',box '((0.5,0.5),(2,2))') center(object) point center of item center(box '((0,0),(1,2))') diameter(circle) diameter of circle diameter(circle '((0,0),2.0)') height(box) vertical size of box height(box '((0,0),(1,1))') Isclosed(path) boolean a closed path? isclosed(path '((0,0),(1,1),(2,0))') isopen(path) an open path? isopen(path '[(0,0),(1,1),(2,0)]') length(object) length of item length(path '((-1,0),(1,0))') pclose(path) path convert path to closed popen(path '[(0,0),(1,1),(2,0)]') npoint(path) int4 number of points npoints(path '[(0,0),(1,1),(2,0)]') popen(path) convert path to open path popen(path '((0,0),(1,1),(2,0))') radius(circle) radius of circle radius(circle '((0,0),2.0)') width(box) horizontal size width(box '((0,0),(1,1))')

PostgreSQL: operadors geomètrics Descripció Exemple + Translation box '((0,0),(1,1))' + point '(2.0,0)' - box '((0,0),(1,1))' - point '(2.0,0)' * Scaling/rotation box '((0,0),(1,1))' * point '(2.0,0)' / box '((0,0),(2,2))' / point '(2.0,0)' # Intersection '((1,-1),(-1,1))' # '((1,1),(-1,-1))' Number of points in polygon # '((1,0),(0,1),(-1,0))' ## Point of closest proximity point '(0,0)' ## lseg '((2,0),(0,2))' && Overlaps? box '((0,0),(1,1))' && box '((0,0),(2,2))' &< Overlaps to left? box '((0,0),(1,1))' &< box '((0,0),(2,2))' &> Overlaps to right? box '((0,0),(3,3))' &> box '((0,0),(2,2))' <-> Distance between circle '((0,0),1)' <-> circle '((5,0),1)' << Left of? circle '((0,0),1)' << circle '((5,0),1)' <^ Is below? circle '((0,0),1)' <^ circle '((0,5),1)' >> Is right of? circle '((5,0),1)' >> circle '((0,0),1)' >^ Is above? circle '((0,5),1)' >^ circle '((0,0),1)' ?# Intersects or overlaps lseg '((-1,0),(1,0))' ?# box '((-2,-2),(2,2))'; ?- Is horizontal? point '(1,0)' ?- point '(0,0)' ?-| Is perpendicular? lseg '((0,0),(0,1))' ?-| lseg '((0,0),(1,0))' @-@ Length or circumference @-@ path '((0,0),(1,0))' ?| Is vertical? point '(0,1)' ?| point '(0,0)' ?|| Is parallel? lseg '((-1,0),(1,0))' ?|| lseg '((-1,2),(1,2))' @ Contained or on point '(1,1)' @ circle '((0,0),2)' @@ Center of @@ circle '((0,0),10)' ~= Same as polygon '((0,0),(1,1))' ~= polygon '((1,1),(0,0))'

PostGIS És un paquet que dóna major suport per treballar amb informació geogràfica a PostgreSQL

Oracle: Oracle Spatial Oracle Spatial és un paquet d’Oracle que dóna suport per a dades espacials

Oracle Spatial: tipus geomètric Una columna que ha d’emmagatzemar les geometries es declara amb el tipus MDSYS.SDO_GEOMETRY La figura mostra les diferents geometries soportades en Oracle Spatial

Oracle Spatial: Exemple Àrees de distribució de 4 tipus de refrescos de cola diferents

Oracle Spatial: Creació de la taula CREATE TABLE cola_markets ( mkt_id NUMBER PRIMARY KEY, name VARCHAR2(32), shape MDSYS.SDO_GEOMETRY);

Oracle Spatial: Inserció de dades A l’hora de fer una inserció d’un element (mercat de cola) a la BD, s’han de definir una sèrie de paràmetres referents a la geometria Entre d’altres: Tipus de geometria: un codi de 4 dígits. Per exemple 2003 és un polígon en 2D, 3002 és una línia en 3D, o 4001 un punt en 4D Sistema de referència espacial Llista de coordenades amb la seva descripció

Oracle Spatial: Inserció de dades INSERT INTO cola_markets VALUES(1, ’cola_a’, MDSYS.SDO_GEOMETRY( 2003, -- 2-dimensional polygon NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3), -- one rectangle (1003 = exterior) MDSYS.SDO_ORDINATE_ARRAY(1,1, 5,7) -- only 2 points needed to -- define rectangle (lower left and upper right) with -- Cartesian-coordinate data ) ); INSERT INTO cola_markets VALUES(2, ’cola_b’, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), -- one polygon (exterior polygon ring) MDSYS.SDO_ORDINATE_ARRAY(5,1, 8,1, 8,6, 5,7, 5,1)

Oracle Spatial: Inserció de dades INSERT INTO cola_markets VALUES(3, ’cola_c’, MDSYS.SDO_GEOMETRY( 2003, -- 2-dimensional polygon NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), -- one polygon (exterior polygon ring) MDSYS.SDO_ORDINATE_ARRAY(3,3, 6,3, 6,5, 4,5, 3,3) ) ); INSERT INTO cola_markets VALUES(4, ’cola_d’, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4), -- one circle MDSYS.SDO_ORDINATE_ARRAY(8,7, 10,9, 8,11)

Oracle Spatial: índex espacial Abans de crear un índex sobre una columna geometria (‘shape’ al nostre exemple), cal prèviament omplir unes metadades (a la taula USER_SDO_GEOM_METADATA): INSERT INTO USER_SDO_GEOM_METADATA VALUES ( ’cola_markets’, ’shape’, MDSYS.SDO_DIM_ARRAY( -- 20X20 grid MDSYS.SDO_DIM_ELEMENT(’X’, 0, 20, 0.005), MDSYS.SDO_DIM_ELEMENT(’Y’, 0, 20, 0.005) ), NULL -- SRID );

Oracle Spatial: índex espacial Ara ja es pot crear l’índex sobre la columna ‘shape’ Pot utilitzar-se un índex amb arbre R: CREATE INDEX cola_spatial_idx ON cola_markets(shape) INDEXTYPE IS MDSYS.SPATIAL_INDEX; També es podria definir (amb altres paràmetres) un arbre quaternari (quadtree), amb cel·les de tamany fixe o variable

Oracle Spatial: exemples de consultes espacials -- Return the topological intersection of two geometries. SELECT SDO_GEOM.SDO_INTERSECTION(c_a.shape, c_c.shape, 0.005) FROM cola_markets c_a, cola_markets c_c WHERE c_a.name = 'cola_a' AND c_c.name = 'cola_c'; -- Do two geometries have any spatial relationship? SELECT SDO_GEOM.RELATE(c_b.shape, 'anyinteract', c_d.shape, 0.005) FROM cola_markets c_b, cola_markets c_d WHERE c_b.name = 'cola_b' AND c_d.name = 'cola_d'; -- Return the areas of all cola markets. SELECT name, SDO_GEOM.SDO_AREA(shape, 0.005) FROM cola_markets; -- Return the area of just cola_a. SELECT c.name, SDO_GEOM.SDO_AREA(c.shape, 0.005) FROM cola_markets c WHERE c.name = 'cola_a'; -- Return the distance between two geometries. SELECT SDO_GEOM.SDO_DISTANCE(c_b.shape, c_d.shape, 0.005)

Oracle Spatial: SDOAPI JDBC és una llibreria que permet des de classes Java accedir a les dades d’una base de dades relacionals i executar-hi sentències SQL Problema: JDBC és estàndard i no té suport per a les dades geomètriques Solució: Oracle proporciona la llibreria SDOAPI, que estén JDBC amb els tipus geomètrics d’Oracle

Referències MySQL: PostgreSQL: PostGIS Oracle Spatial: http://www.mysql.com/ PostgreSQL: http://www.postgresql.org/ PostGIS http://postgis.refractions.net Oracle Spatial: http://www.oracle.com/technology/products/spatial/index.html