Bases de Datos Espaciales SPATIAL QUERY LANGUAGES
Qué es un query? Qué es un Query ? Ejemplos: Una pregunta que se desarrolla en una base de datos Los Queries son expresados en una declaración del alto nivel El algoritmo de búsqueda no es expresado en la consulta Ejemplos: SELECT S.nombre FROM Personas S WHERE S.genero = ‘F’
Qué es query language? Qué es query language? Ejemplos: Un lenguaje a través del cual podemos expresar las consultas a una base de datos Un query language restringe las tuplas de una tabla Ejemplos: Lenguaje Natural, e.j. Español, podemos expresar consultas a través de preguntas con palabras claves como Qué, Cunado, Donde, etc. Lenguajes de programación, e.j. Java, Se pueden expresar preguntas de diferente forma, indicando diferentes acciones Structured Query Language(SQL)
Ejemplo de base de datos Modelo conceptual 3 Entities: Country, City, River 2 Relationships: capital-of, originates-in Attributes listed in Figure
Ejemplo de Bases de datos – Modelo Lógico 3 Relaciones Country(Name, Cont, Pop, GDP, Life-Exp, Shape) City(Name, Country, Pop,Capital, Shape) River(Name, Origin, Length, Shape) Keys Primary keys are Country.Name, City.Name, River.Name Foreign keys are River.Origin, City.Country Datos para las 3 tablas Se muestran en el siguiente slide
Datos de las tablas
Qué es SQL? SQL – información General SQL and spatial data Es un estándar para consultar bases de datos Se soporta en el concepto lógico de las relaciones y el algebra relacional Soportado por muchas herramientas como por ejemplo: IBM DB2, Oracle, MS SQL Server, Sybase, ... 3 versiones: SQL1 (1986), SQL2 (1992), SQL 3 (1999) Puede expresar cualquier acceso a una base de datos relacional SQL and spatial data ESRI Arc/Info maneja su estándar propietario de consultas Otros GIS interactuan con las bases de Datos usando el estándar de SQL Usando open database connectivity (ODBC) o otros protocolos Muchas consultas son manejadas por el cliente no por el servidor
Data Definition Language (DDL) Data Manipulation Language (DML) Componentes de SQL? Data Definition Language (DDL) Data Manipulation Language (DML) Data Control Language (DCL)
Creando tablas en SQL
Poblando tablas en SQL Adicionando registros a una tabla Estamento “INSERT INTO” Se especifica el nombre de la tabla, los atributos y valores Ejemplo: INSERT INTO River(Name, Origin, Length, Shape) VALUES(‘Magdalena’, ‘Col’, 6000,Line((1,2), (5,6), (8,9)))
Estamentos SELECT Clauses SELECT especifica las columnas FROM especifica las tablas WHERE especifica el filtro o restricción ORDER BY especifica el tipo de orden GROUP BY, HAVING especifica un nivel de agregación Operators and functions Operadores aritmeticos, e.j. +, -, … Operadores de comparación, e.j. =, <, >, BETWEEN, LIKE… Operadores lógicos, e.j. AND, OR, NOT, EXISTS, Operadores de manipulación, e.j. UNION, IN, ALL, ANY, … Funciones estadisticas, e.j. SUM, COUNT, ... Etc.
SELECT Ejemplo 1. SELECT Name, Country FROM CITY Resultado
SELECT Ejemplo 2. SELECT * FROM CITY WHERE CAPITAL=‘Y ’ Resultado
SQL for Spatial Data Open Geodata Interchange Standard (OGIS) Define los tipos de datos para los estamentos DDL Define operadores relacionales para los estamentos DML Soportado por proveedores como por ejemplo: Oracle, IBM,...
OGIS Spatial Data Model Tipos de geometrias: Point, Curve, Surface and GeometryCollection Operaciones sobre los datos espaciales: Aplica a la definición de la geometría SpatialReference, Envelope, Export,IsSimple, Boundary Predicados sobre las relaciones topologicas Equal, Disjoint, Intersect, Touch, Cross, Within, Contains Analisis espacial Distance,Buffer,Union, Intersection, ConvexHull, SymDiff
Ejemplo Resultado SELECT C1.Nombre FROM Paises C1, Paises C2 WHERE Touch(C1.Shape,C2.Shape)=1 AND C2.Nombre =‘Colombia ’ Resultado
Ejemplo SELECT R.Name, C.Name FROM River R, Country C WHERE Cross(R.Shape,C.Shape)=1
Ejemplo SELECT Ci.Nombre FROM Ciudades Ci, Rios R WHERE Overlap(Ci.Shape, Buffer(R.Shape,300))=1 AND R.Name =‘Magdalena ’
Ejemplo CREATE VIEW Vecinos AS SELECT P1.Nombre , Count (Nombre) Vecinos FROM Paises P1, Paises P2 WHERE Touch(P2.Shape,Co1.Shape) GROUP BY P1.Nombre