Presentación para un seminario temático impartido en el Máster en Tecnologías de la Información Geográfica. Hablamos sobre SIG libre, geodatabases e hicimos una introducción a Postgis.
Las geodatabases en el panorama del FOSS GIS. Introduccion y casos de estudio
1. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Las geodatabases en el panorama del FOSS GIS
Introducci´n y casos de estudio
o
Benito M. Zaragoz´
ı
Seminario Tem´tico
a
M´ster en Tecnolog´ de la Informaci´n Geogr´fica
a ıas o a
Universidad de Alcal´ de Henares
a
2 y 3 de abril de 2013
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
2. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Contexto tecnol´gico del FOSS SIG
o
Tendencias en el acceso a la informaci´n geogr´fica
o a
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
3. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Contexto tecnol´gico del FOSS SIG
o
Knowledge Discovery in Databases (KDD)
• El KDD analiza las bases de datos m´s voluminosas.
a
• El KDD puede aprovechar datos con or´ıgenes y formatos tan
distintos como los existentes en el ´rea de las TIG.
a
• Las tareas y m´todos de “Data Mining” sirven para extraer
e
conocimiento a partir de las bases de datos.
• La IG tiene particularidades que la hacen m´s dif´ de analizar
a ıcil
que los datos provenientes de otras ´reas de aplicaci´n.
a o
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
4. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Contexto tecnol´gico del FOSS SIG
o
Open Geospatial Consortium (OGC)
Miembros OGC
• Empresas distribuidoras de software: ESRI, Autodesk, Bentley
Systems, Cadcorp, Intergraph, NAVTEQ, etc.
• Universidades: Delft University of Technology, Harvard
University, ITC University of Twente, MIT, etc.
• Agencias gubernamentales: Norwegian Building Authority, US
Geological Survey (USGS), etc.
http://www.opengeospatial.org/
Est´ndar OGC
a
Documento establecido por consenso y aprobado por los miembros
del OGC. Este documento provee de reglas y directrices que
buscan la interoperabilidad del software geoespacial.
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
5. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Contexto tecnol´gico del FOSS SIG
o
WKT y WKB
Well-known text (WKT)
WKT es uno de los est´ndares OGC m´s conocidos. WKT es un
a a
lenguaje de etiquetado para representar geometr´ vectoriales,
ıas
sistemas de referencia espacial y transformaciones. En su versi´n
o
binaria, el well-known binary (WKB) se utiliza para transferir dicha
informaci´n rapidamente entre bases de datos y distintos tipos de
o
software geoespacial.
POINT(53 105)
MULTIPOINT(100 0, 100 100)
LINESTRING(0 0, 25 100, 50 0, 75 100, 100 0)
MULTILINESTRING((100 100, 75 0, 50 100, 25 0, 0 100), (0 0, 25 100, 50 0, 75 100, 100 0))
POLYGON((0 0, 100 0, 100 100, 0 100, 0 0))
POLYGON((0 0, 100 0, 100 100, 0 100, 0 0), (25 25, 25 75, 75 75, 75 25, 25 25))
MULTIPOLYGON(((125 125, 125 175, 175 175, 175 125, 125 125)), ((0 175, 0 100, 100 175, 0 175)))
GEOMETRYCOLLECTION(POINT(53 105), LINESTRING(0 0, 25 100, 50 0, 75 100, 100 0),
POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)))
Pr´ctica
a
Edita y crea geometr´ en OpenJump y familiarzate con el WKT.
ıas
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
6. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Contexto tecnol´gico del FOSS SIG
o
Open Source Geospatial Foundation (OSGeo)
OSGeo apoya, financia y
comercializa
herramientas FOSS GIS.
Adem´s, fomenta el
a
acceso a datos
espaciales libres.
http://www.osgeo.org/
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
7. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Contexto tecnol´gico del FOSS SIG
o
Clasificaci´n de proyectos de FOSS SIG (Ramsey, 2007)
o
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
8. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Contexto tecnol´gico del FOSS SIG
o
Infraestructuras de Datos Espaciales (IDE)
Para analizar distintas posibilidades podeis echarle un vistazo a
este White Paper de Opengeo.org
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
9. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Contexto tecnol´gico del FOSS SIG
o
Generaci´n de informes
o
Las IDEs y los geoportales se centran en la difusi´n de la
o
informaci´n geogr´fica. Sin embargo, las mismas tecnolog´
o a ıas
utilizadas por las IDE pueden utilizarse para generar modelos
geogr´ficos y analizar datos “inteligentes”. La primera parte de
a
esta cuesti´n se puede abordar directamente en las geodatabases.
o
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
10. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Introducci´n a las geodatabases
o
Qu´ es una geodatabase?
e
Definici´n de geodatabase
o
Una geodatabase es una base de datos con tipos especiales para
los objetos geom´tricos. Permite almacenar datos geom´tricos y
e e
proporciona funciones especiales, ´
ındices espaciales y lenguajes de
consulta (SQL). Una base de datos espacial es a menudo utilizado
como un simple contenedor de almacenamiento para los datos
espaciales, pero se puede ser mucho m´s que eso.
a
Geodatabases relacionales
• Comerciales: Oracle Spatial, SQL Server (2008), IBM DB2
Spatial, IBM Informix Spatial, MapInfo SpatialWare y ESRI
ArcSDE.
• Libres: MySQL Spatial, SpatiaLite y PostGIS.
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
11. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Introducci´n a las geodatabases
o
Otras geodatabases alternativas (NoSQL)
Definici´n de NoSQL
o
Seg´n nosql-database.org, es la nueva generaci´n de bases de
u o
datos que se distinguen por las siguientes caracter´
ısticas:
• No-relacionales.
• Distribuidas.
• Open-source
• Horizontalmente escalables.
NoSQL con componente espacial
• Perst, SpaceBase y ¿DB4O-spatial?
• Neo4j y AllegroGraph.
• MongoDB y CouchDB.
• CartoDB y StormDB.
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
12. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Introducci´n a las geodatabases
o
SGBD espaciales vs SIG orientados a la aplicaci´n
o
La relaci´n entre SIG y Sistemas Gestores de Bases de Datos
o
(SGBD) es cada vez m´s cercana y est´ tomando un inter´s
a a e
creciente. Existen varios motivos que explican dicho inter´s:
e
Ventajas
Inconvenientes
• Reducci´n de la redundancia
o
• Costes m´s elevados.
a
de datos.
• Personal adicional.
• Aumento de la integridad de
datos. • Aumento del tiempo de
desarrollo.
• Independencia de datos.
• Riesgo centralizado.
• Seguridad de los datos.
• Anonimato de los datos.
• Mantenimiento eficiente.
• Racionalidad excesiva.
• Visi´n Corporativa.
o
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
13. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Introducci´n a las geodatabases
o
PostgreSQL
Qu´ es PostgreSQL?
e
PostgreSQL es un SGBD relacional orientado a objetos y libre.
Entre sus principales ventajas podemos encontrar:
• Alta concurrencia y seguridad.
• Amplia variedad de tipos nativos (N´meros de precisi´n
u o
arbitraria, texto de largo ilimitado, direcciones IP, direcciones
MAC, arrays, geometr´ etc).
ıas,
• Otras caracter´
ısticas (foreign keys, triggers, vistas, integridad
transaccional, herencia de tablas, soporte para transacciones
distribuidas, etc).
• Funciones en varios lenguajes procedurales (PL/PgSQL, C,
C++, Java PL/Java web, PL/Perl, plPHP, PL/Python,
PL/Ruby, PL/sh, PL/Tcl, PL/R, etc).
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
14. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Introducci´n a las geodatabases
o
PostGIS
Qu´ es PostGIS?
e
PostGIS es la extensi´n espacial, FOSS y OGC, para el Sistema de
o
Gesti´n de Base de Datos PostgreSQL. PostGIS a˜ade funciones
o n
espaciales (distancia, ´rea, uni´n, intersecci´n, etc) y tipos de
a o o
datos espaciales a la base de datos. Esta extensi´n es similar a
o
ESRI ArcSDE, Oracle Spatial, MySQL-spatial, y DB2 Spatial
Extender. La versi´n 2.0.0 tiene otras mejoras notables:
o
• 3D support.
• Raster/vector support.
• SQL/MM topology support.
• Tiger geocoder with loader for 2010 Tiger data.
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
15. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Introducci´n a las geodatabases
o
PostgreSQL y PostGIS con pgAdmin III
Query 1: Hello world!!
1 SELECT version () ;
2 -- SELECT p o s t g i s _ f u l l _ v e r s i o n () ;
3 -- SELECT * FROM pg_tables WHERE
schemaname = ’ public ’;
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
16. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Introducci´n a las geodatabases
o
Crear una base de datos con una tabla espacial
Creamos una base de datos llamada “testdb”, le a˜adimos una
n
nueva tabla y una columna de geometr´
ıas:
Query 2: Crear una tabla
1 CREATE TABLE ciudades ( id int4 , name varchar (50) ) ;
2 SELECT A d dGe ome tryC olu mn ( ’ ciudades ’ , ’ the_geom ’ , 4326 , ’ POINT ’ , 2) ;
A continuaci´n, se utiliza el comando INSERT para a˜adir los
o n
primeros registros en la tabla que acabamos de crear (buscad m´s
a
en geonames.org ).
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
17. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Introducci´n a las geodatabases
o
Consultas b´sicas
a
Query 3: A˜adir registros a la tabla ciudades
n
1 INSERT INTO ciudades ( id , the_geom , name ) VALUES (1 , ST_GeomFromText ( ’ POINT
( -0.1257 51.508) ’ ,4326) , ’ London , England ’) ;
2 INSERT INTO ciudades ( id , the_geom , name ) VALUES (2 , ST_GeomFromText ( ’ POINT
( -81.233 42.983) ’ ,4326) , ’ London , Ontario ’) ;
3 INSERT INTO ciudades ( id , the_geom , name ) VALUES (3 , ST_GeomFromText ( ’ POINT
(27.91162491 -33.01529) ’ ,4326) , ’ East London , SA ’) ;
Query 4: Consultas b´sicas
a
1 SELECT * FROM ciudades ;
2 -- SELECT id , ST_AsText ( the_geom ) , ST_AsEwkt ( the_geom ) , ST_X ( the_geom ) , ST_Y (
the_geom ) FROM ciudades ;
3 -- SELECT p1 . name , p2 . name , ST _ Di st a nc e _S ph e re ( p1 . the_geom , p2 . the_geom ) FROM
ciudades AS p1 , ciudades AS p2 WHERE p1 . id > p2 . id ;
4 -- SELECT p1 . name , p2 . name , S T _ D i s t a n c e _ S p h e r o i d ( p1 . the_geom , p2 . the_geom , ’
SPHEROID [" GRS_1980 " ,6378137 ,298.257222] ’) FROM ciudades AS p1 , ciudades AS
p2 WHERE p1 . id > p2 . id ;
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
18. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Introducci´n
o
Problema
En una universidad con decenas de edificios y miles de empleados
se quiere optimizar la gesti´n de personal y el gasto. Los gerentes
o
sospechan que el gasto en limpieza parece desproporcionado en
algunos departamentos. Adem´s, entre otros diversos problemas,
a
bromean sobre el rumor de que en los edificios pr´ximos a la
o
cafeter´ se hacen m´s horas extra. No obstante, no tienen un
ıa a
modo de analizar este tipo de situaciones. La informaci´n depende
o
de distintos departamentos independientes:
• Cartograf´ digital de los proyectos de cada edificio (Oficina
ıa
t´cnica de proyectos).
e
• Un c´digo para denominar a cada estancia (Gesti´n de
o o
espacios docentes).
• Un completo listado de personal (Gesti´n econ´mica).
o o
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
19. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Introducci´n (II)
o
Una geodatabase es un medio ideal para solucionar estos y otros
posibles problemas. Analizar los datos de un modo sistem´tico
a
depender´ de que superemos con ´xito una serie de fases.
a e
Objetivos espec´
ıficos
1 Definir un modelo de base de datos (ER, OO, Graph, etc).
2 Escoger un SGBD apropiado (centenares de usuarios).
3 Implementar la base de datos e incorporar toda la informaci´n
o
disponible.
4 Desarrollar m´todos para responder a las preguntas espec´
e ıficas
de los gestores y del p´blico en general.
u
5 Publicar los informes de un modo din´mico, para que los
a
usuarios encuentren lo que necesitan con poco esfuerzo.
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
20. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Diagrama Entidad-Relaci´n b´sico
o a
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
21. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Creaci´n de las tablas
o
CREATE TABLE
Crea una nueva tabla (vac´ en la base de datos actual y admite
ıa)
un buen n´mero de par´metros (tablas temporales, herencia,
u a
valores por defecto, OIDs, restricciones, etc). El usuario que haya
creado la tabla ser´ el propietario.
a
Query 5: Crear tablas Query 6: Crear tablas
1 CREATE TABLE Departamentos (
1 CREATE TABLE Usos (
2 DptoID VARCHAR (10) PRIMARY KEY ,
2 CodUso VARCHAR (10) PRIMARY KEY ,
3 NomDpto VARCHAR (50) NOT NULL ) ;
3 DescUso VARCHAR (50) ,
4
4 GrupoUso VARCHAR (20) NOT NULL ) ;
5 CREATE TABLE Personas (
5
6 PersId VARCHAR (20) PRIMARY KEY ,
6 CREATE TABLE PuestoDeTrabajo (
7 Apellido1 VARCHAR (30) NOT NULL ,
7 PersId VARCHAR (20) NOT NULL ,
8 Apellido2 VARCHAR (30) ,
8 EstanId VARCHAR (20) NOT NULL ,
9 Nombre VARCHAR (30) NOT NULL ,
9 PerfilID VARCHAR (20) NOT NULL ,
10 Ciudad VARCHAR (20) NOT NULL ,
10 Perfil VARCHAR (50) NOT NULL ,
11 FechaNac DATE NOT NULL ,
11 PerfilGrupo VARCHAR (20) NOT NULL ) ;
12 HorasExtra SMALLINT DEFAULT 0 NOT NULL ) ;
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
22. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Plugin SPIT en QGIS
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
23. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Definir claves externas
Mantener la integridad referencial
Los cambios en una tabla pueden implicar modificaciones en otras
tablas relacionadas. En los SGBD simples esto se podr´ realizar
ıa
manualmente, pero esto puede generar problemas y es muy
inc´modo en BD grandes. PostgreSQL controla esto
o
autom´ticamente mediante el uso de claves ajenas.
a
Query 7: A˜adir claves ajenas
n
1 ALTER TABLE Estancias
2 ADD FOREIGN KEY ( coddpto ) REFERENCES Departamentos ( dptoid ) ;
3
4 ALTER TABLE Estancias
5 ADD FOREIGN KEY ( coduso ) REFERENCES Usos ( coduso ) ;
6
7 ALTER TABLE PuestoDeTrabajo
8 ADD FOREIGN KEY ( EstanId ) REFERENCES Estancias ( codigo ) ;
9
10 ALTER TABLE PuestoDeTrabajo
11 ADD FOREIGN KEY ( PersId ) REFERENCES Personas ( PersId ) ;
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
24. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Carga de datos
INSERT
Inserta nuevas filas en una tabla. Se puede insertar una unica fila
´
especificada por expresiones de valor, o varias filas, como resultado
de una consulta.
Query 8: Ins´rtate en la tabla de Personas
e
1 INSERT INTO Personas VALUES ( ’ PersId ’ , ’ Apellido1 ’ , ’ Apellido2 ’ , ’ Nombre ’ , ’
Ciudad ’ , ’ FechaNac ’ , HorasExtra ) ;
Ahora puedes comprobar:
1 Lo que sucede al introducir un registro con una clave primaria
repetida en la misma tabla.
2 Lo que sucede al vulnerar las restricciones especificadas en la
creaci´n de las tablas (Ej: Valores nulos o unicos).
o ´
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
25. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Carga de datos masiva
COPY
Utilizaremos este comando para importar y exportar datos entre
PostgreSQL y los ficheros del sistema. Este m´todo podr´ resultar
e a
m´s pr´ctico y ´gil que realizar INSERT.
a a a
Query 9: Ejemplo de COPY
1 COPY Departamentos FROM ’ .../ Departamentos . csv ’ WITH DELIMITER ’; ’ csv header ;
2 -- Ahora copia el resto de ficheros a la base de datos .
¿Importa el orden?
´
Si importas las estancias o los puestos de trabajo antes que las
otras tablas te habr´ aparecido un error de regla de integridad
a
referencial. No se puede hacer referencia a algo que, por lo que
concierne a nuestra base de datos actual, no existe.
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
26. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Eliminar datos de la DB
DELETE
Este m´todo elimina filas de una tabla que satisfagan la cl´usula
e a
WHERE o si no hay WHERE, se eliminar´n todas las filas de la
a
tabla. El resultado es una tabla v´lida, pero vac´ Es interesante
a ıa.
ver como afecta la existencia de claves ajenas:
Query 10: Ejemplo de DELETE
1 -- --- Intentamos borrar un registro en la tabla Departamentos .
2 -- SELECT * FROM Departamentos WHERE dptoid = ’09.24 ’;
3 -- DELETE FROM Departamentos WHERE dptoid = ’09.24 ’;
4 -- --- Comprobamos la existencia de registros relacionados en otras tablas .
5 -- SELECT * FROM Estancias WHERE coddpto = ’09.24 ’;
6 -- --- Borramos los registros relacionados de otras tablas .
7 -- DELETE FROM Estancias WHERE coddpto = ’09.24 ’;
8 -- --- Finalmente podemos borrar los registros de la tabla principal .
9 -- DELETE FROM Departamentos WHERE DptoId = ’09.24 ’;
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
27. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Consultas a la BD
El SQL es un lenguaje est´ndar de consulta de bases de datos con
a
un gran n´mero de alternativas a la hora de explotar una base de
u
datos. Existen muchos m´todos y palabras clave para filtrar,
e
ordenar y combinar los datos. Vamos a practicar un poco:
Query 11: Ejemplos de operadores
1 SELECT * FROM Personas ;
2 -- SELECT * FROM Personas WHERE Apellido1 = ’ tu apellido ’;
3 -- SELECT Nombre , Apellido1 FROM Personas WHERE extract ( years from age ( fechanac ) )
< 35;
4 -- SELECT Nombre , Apellido1 FROM Personas WHERE extract ( years from age ( fechanac ) )
>= 50 AND extract ( years from age ( fechanac ) ) <=70;
5 -- SELECT Nombre , Apellido1 FROM Personas WHERE extract ( years from age ( fechanac ) )
BETWEEN 50 AND 70;
6 -- SELECT NomDpto FROM Departamentos WHERE NomDpto LIKE ’ %GEO %’;
7 -- SELECT DISCTINCT Perfil FROM PuestoDeTrabajo WHERE Perfil LIKE ’ %Cate %’;
8 -- SELECT * FROM Personas ORDER BY Apellido1 ;
9 -- SELECT Nombre , Apellido1 FROM Personas ORDER BY extract ( years from age (
fechanac ) ) asc LIMIT 5 OFFSET 1;
10
11 -- Investigad los m´ todos UNION , INTERSECT y EXCEPT
e
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
28. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Distintas consultas, mismo resultado
Sintaxis y rendimiento
El lenguaje SQL es muy rico y PosgreSQL ofrece muchas otras
posibilidades para manipular y consultar los datos. As´ pues, suele
ı
suceder que hay distintos modos de formular una misma pregunta
a una base de datos. En ocasiones la diferencia podr´ ser
a
puramente sint´ctica, pero en otras situaciones unas opciones
a
pueden ser m´s r´pidas y eficientes que otras.
a a
Query 12: Ejemplo de OR
1 SELECT Nombre , Apellido1 Query 13: Ejemplo de IN
2 FROM Personas
1 SELECT Nombre , Apellido1
3 WHERE
2 FROM Personas
4 Ciudad = ’ Alicante ’ OR
3 WHERE Ciudad IN
5 Ciudad = ’ Elche ’ OR
4 ( ’ Alicante ’ , ’ Elche ’ , ’ Benidorm ’ , ’ Alcoy
6 Ciudad = ’ Benidorm ’ OR
’ , ’ Torrevieja ’) ;
7 Ciudad = ’ Alcoy ’ OR
8 Ciudad = ’ Torrevieja ’;
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
29. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Consultas sobre varias tablas
Query 14: Ejemplo de consultas sobre varias tablas (I)
1 SELECT NomDpto , Codigo
2 FROM Departamentos , Estancias
3 WHERE Estancias . coddpto = Departamentos . dptoid
4 ORDER BY NomDpto ;
Query 15: Ejemplo de consultas sobre varias tablas (II)
1 SELECT COUNT ( personas . persid )
2 FROM Departamentos , Estancias , PuestoDeTrabajo , Personas
3 WHERE NomDpto LIKE ’ %QUIMICA %’
4 AND Departamentos . dptoid = Estancias . coddpto
5 AND Estancias . codigo = PuestoDeTrabajo . estanid
6 AND P ue st oDeTrabajo . PersId = Personas . PersId ;
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
30. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Consultas sobre varias tablas
Query 16: Ejemplo de consultas sobre varias tablas (III)
1 SELECT NomDpto , count ( personas . persid )
2 FROM Departamentos , Estancias , PuestoDeTrabajo , Personas
3 WHERE personas . Horasextra BETWEEN 900 AND 1000
4 AND Departamentos . dptoid = Estancias . coddpto
5 AND Estancias . codigo = PuestoDeTrabajo . estanid
6 AND P ue st oDeTrabajo . persid = Personas . persid
7 GROUP BY nomdpto
8 ORDER BY count ( personas . persid ) desc ;
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
31. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Consultas complejas
Consultas anidadas
Habitualmente, necesitaremos combinar consultas sencillas para
responder a preguntas m´s complejas. Existen muchos modos para
a
hacer esto, pero el uso de consultas anidadas es el m´s b´sico.
a a
Un ejemplo
Si necesit´semos listar aquellos departamentos cuya superficie
a
media es mayor que la media de la universidad, necesitaremos
anidar dos consultas:
1 La superficie media de cada departamento.
2 La superficie media de los departamentos de la universidad.
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
32. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Consultas anidadas
Query 17: Superficie media de cada departamento
1 SELECT Departamentos . nomdpto , SUM ( ST_Area ( Estancias . geom ) ) As dptom2
2 FROM Departamentos , Estancias
3 WHERE
4 Departamentos . dptoid = Estancias . coddpto
5 GROUP BY Departamentos . nomdpto
6 ORDER BY dptom2 desc ;
Query 18: Superficie media de los departamentos
1 SELECT AVG ( dptom2 ) as supmeddptos
2 FROM
3 ( SELECT Departamentos . nomdpto , SUM ( ST_Area ( Estancias . geom ) ) As dptom2
4 FROM Departamentos , Estancias
5 WHERE
6 Departamentos . dptoid = Estancias . coddpto
7 GROUP BY Departamentos . nomdpto
8 ORDER BY dptom2 desc ) as avgm2 ;
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
33. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Consultas anidadas
Query 19: Departamentos que superan la superficie media
1 SELECT nomdpto , dptom2
2 FROM
3 ( SELECT Departamentos . nomdpto , SUM ( ST_Area ( Estancias . geom ) ) As dptom2
4 FROM Departamentos , Estancias
5 WHERE
6 Departamentos . dptoid = Estancias . coddpto
7 GROUP BY Departamentos . nomdpto ) as dptom2
8 WHERE
9 dptom2 >
10 ( SELECT AVG ( dptom2 ) as s u p e r f i c i e _ m e d i a _ d e _ l o s _ d e p a r t a m e n t o s
11 FROM ( SELECT Departamentos . nomdpto , SUM ( ST_Area ( Estancias . geom ) ) As dptom2
12 FROM Departamentos , Estancias
13 WHERE
14 Departamentos . dptoid = Estancias . coddpto
15 GROUP BY Departamentos . nomdpto
16 ORDER BY dptom2 desc ) as avgm2 )
17 ORDER BY dptom2 desc ;
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
34. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Consultas actualizadas
Vistas
Las vistas permiten personalizar la apariencia de una base de
datos. Una vista se genera a partir de una selecci´n (SELECT) de
o
tablas (o vistas) existentes en la misma o en otras bases de datos.
Una vez generada, la vista mantiene el enlace con las tablas de
origen. Esto quiere decir que los cambios en los datos que afecten
las tablas de origen tambi´n afectan las vistas que, de este modo,
e
siempre estar´n actualizadas.
a
Query 20: Creaci´n de una vista
o
1 CREATE VIEW clasUsos AS
2 SELECT gid , d . dptoid , e . geom , d . nomdpto , e . codigo , u . descuso , st_area ( e . geom )
3 FROM Departamentos d , Estancias e , Usos u
4 WHERE
5 d . dptoid = e . coddpto AND
6 e . coduso = u . coduso AND
7 d . nomdpto LIKE ’ %GEO %’;
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
35. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Consultas espaciales
Query 21: Clasificaci´n de las estancias seg´n su superficie
o u
1 SELECT DISTINCT categoria , COUNT ( codigo )
2 FROM
3 ( SELECT codigo , ’a ) enorme ’ as categoria
4 FROM Estancias
5 WHERE st_area ( geom ) >100
6 UNION
7 SELECT codigo , ’b ) grande ’ as categoria
8 FROM Estancias
9 WHERE st_area ( geom ) BETWEEN 50 AND 100
10 UNION
11 SELECT codigo , ’c ) nada mal ’ as categoria
12 FROM Estancias
13 WHERE st_area ( geom ) BETWEEN 20 AND 50
14 UNION
15 SELECT codigo , ’d ) estandar ’ as categoria
16 FROM Estancias
17 WHERE st_area ( geom ) BETWEEN 7 AND 20
18 UNION
19 SELECT codigo , ’e ) claustro - f´ bico ’ as categoria
o
20 FROM Estancias
21 WHERE st_area ( geom ) < 7) as clasif
22 GROUP BY categoria
23 ORDER BY categoria ;
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
36. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Consultas espaciales
Query 22: 100 estancias m´s pr´ximas a la cafeter´
a o ıa
1 SELECT codigo , coduso
2 FROM Estancias
3 ORDER BY geom <-> st_setsrid ( st_makepoint (717185 ,4251205) ,25830) ASC
4 LIMIT 100;
Query 23: Despachos m´s pr´ximos a las cafeter´
a o ıas
1 SELECT st_astext ( st_collect ( Estancias . geom ) )
2 FROM Cafeterias , Estancias , Usos
3 WHERE
4 Estancias . coduso = Usos . coduso AND
5 Usos . descuso = ’ Despacho ’ AND
6 st_intersects (
7 ( SELECT ST_Buffer ( ST_Multi ( ST_Collect ( geom ) ) ,100) FROM Cafeterias ) ,
8 Estancias . geom ) ;
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
37. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Reglas geogr´ficas
a
Reglas y disparadores
Las reglas (“rules”) y los disparadores (“triggers”) son m´todos
e
que permiten automatizar procesos dentro de las bases de datos.
Ya hab´is visto alg´n ejemplo de “triggers” cuando hab´is
e u e
atentado contra la integridad referencial de las tablas. Aparecen
mensajes que os informan de que no pod´ borrar un registro,
ıais
puesto que hab´ registros de otras tablas relacionados con el que
ıa
intentabais borrar con el DELETE. De un modo similar, estos
comportamientos pueden muy utiles para gestionar la informaci´n
´ o
geogr´fica. Ahora veremos un ejemplo de trigger y m´s adelante
a a
utilizaremos una regla para solucionar un ejercicio.
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
38. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Reglas geogr´ficas (con un “trigger”)
a
Query 24: Nadie trabajar´ en...
a
1 CREATE OR REPLACE FUNCTION c o m p r u e b a _ s u p e r f i c i e ()
2 RETURNS trigger AS
3 $BODY$
4 BEGIN
5 IF new . codigo
6 IN ( SELECT codigo FROM estancias WHERE st_area ( geometria ) < 6) THEN
7 RAISE EXCEPTION ’ ERROR FATAL . Intentas insertar una persona con NIF % en
la estancia %, que tiene una superficie de menos de 6 metros
cuadrados . ¿Quieres emparedarlo ? ’ , NEW . persid , NEW . codigo ;
8 END IF ;
9 RETURN NEW ;
10 END ;
11 $BODY$
12 LANGUAGE plpgsql VOLATILE
13 COST 100;
14 ALTER FUNCTION c o m p r u e b a _ s u p e r f i c i e ()
15 OWNER TO pgis ;
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
39. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Gesti´n de espacios de una corporaci´n
o o
Ejercicios libres (b´scate la vida)
u
1 Teniendo en cuenta que los costes de la limpieza de la
universidad dependen del uso de las estancias y de su
superficie. Responde:
• ¿Cu´les son 5 los departamentos con mayores necesidades?
a
• ¿Cuanto cuesta la limpieza de las estancias vac´ de la
ıas
universidad?
• Indica cu´les son los departamentos que m´s “despilfarran”.
a a
2 ¿Es cierto que las personas que trabajan cerca de la cafeter´
ıa
(XY) hagan m´s horas extra? Prop´n una idea de c´mo
a o o
comprobarlo.
3 La universidad necesita mantener un registro de todas las
personas que ya no trabajan all´ S´ que ser´ dif´ pero debes
ı. e a ıcil
dimitir ;-)
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
40. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Soluci´n experta a la gesti´n de infraestructuras
o o
Gesti´n de espacios en la Universidad de Alicante
o
¿Qu´ es SIGUA?
e
SIGUA es un Sistema de Informaci´n especializado en la gesti´n de
o o
espacios universitarios basado diferentes est´ndares y tecnolog´
a ıas
FOSS. El n´cleo principal SIGUA es una geodatabase montada en
u
PostgreSQL, que utiliza la extensi´n PostGIS para la gesti´n y
o o
an´lisis de la informaci´n espacial.
a o
SIGUA.NET
Varias instituciones han mostrado inter´s de tener su propio
e
SIGUA. Sin embargo, la estructura de las universidades y los datos
disponibles pueden variar (cada universidad tendr´ su propio
a
diagrama ER). SIGUA.NET es una iniciativa para distribuir la
estructura b´sica de SIGUA y que cada entidad pueda adaptarla a
a
sus necesidades.
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
41. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Soluci´n experta a la gesti´n de infraestructuras
o o
La geodatabase de SIGUA
SIGUA en cifras
• 10 Esquemas.
• 67 Tablas.
• 104 Vistas.
• 1.217 Funciones.
• 24 Reglas y disparadores.
• 5 Roles.
• Backups diarios.
• 3 API (SOAP, REST y desktop).
• M´s todo lo de PostgreSQL/PostGIS.
a
Instalador de SIGUA.NET en GitHub
https://github.com/labgeo/siguanet-dbdemo
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
42. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Soluci´n experta a la gesti´n de infraestructuras
o o
La geodatabase de SIGUA.NET
¿Qu´ contiene?
e
SIGUA.NET proporciona lo esencial para tener una base de datos
similar a la de SIGUA pero mucho m´s gen´rica y adaptable a la
a e
gesti´n de espacios de otras organizaciones. Adem´s de la
o a
estructura de la base de datos tambi´n incluye unos datos de
e
ejemplo para que el usuario pueda comprobar toda la funcionalidad
del esquema p´blico de SIGUA.
u
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
43. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Soluci´n experta a la gesti´n de infraestructuras
o o
Inteligencia detr´s de SIGUA
a
Ejemplos de reglas
La estructura de las bases de datos de SIGUA o la de SIGUA.NET
es mucho ma compleja que la del ejemplo que hemos desarrollado
en este curso, por lo que permite responder a un n´mero de
u
preguntas incluso mayor de lo que hemos podido imaginar para
nuestro modesto ejemplo. A continuaci´n, podemos ver un par de
o
ejemplos interesantes de reglas y disparadores existentes en SIGUA:
1 ¿qu´ sucede al ubicar a un empleado en una estancia
e
demasiado peque˜a o que ya est´ abarrotada?
n a
2 ¿qu´ sucede al ubicar a un empleado en una estancia cuyo uso
e
no es apropiado?
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı
44. Presentaci´n
o Geodatabases Mini proyecto SIGUA.NET
Soluci´n experta a la gesti´n de infraestructuras
o o
Gracias por vuestra atenci´n!!
o
Las geodatabases en el panorama del FOSS GIS Introducci´n y casos de estudio
o Benito M. Zaragoz´
ı