Sistemas de Información Geográfica BD Espaciales y BD Espacio-temporales Miguel Rodríguez Luaces Laboratorio de Bases de Datos Universidade da Coruña Objetivo Hemos descrito de modo teórico y abstracto los campos de SIG, SBGD espaciales y espacio-temporales Ahora describiremos las herramientas que nos permite implementar estos sistemas. En particular — ¿Por dónde empezar? — Herramientas SIG comerciales — Sistemas gestores de bases de datos — Servicios web de información geográfica — Clientes web de información geográfica — Herramientas de escritorio — Librerías de desarrollo — Fuentes de información geográfica 2/72 ¿Por dónde empezar? Free GIS [http://www.freegis.org] — 355 componentes software, 25 fuentes de datos, 19 fuentes de documentación y 10 proyectos — Clasificados por aplicación, lenguaje, SO, licencia, etc. 3/72 ¿Por dónde empezar? Open Source GIS [http://www.opensourcegis.org/] — 247 componentes software — Ahora mismo es sólo una lista enorme de descripciones 4/72 ¿Por dónde empezar? Open Geospatial Consortium [http://www.opengeospatial.org] — Estándares para información geográfica — Registro de productos que los cumplen 5/72 ¿Por dónde empezar? Open Source Geospatial Foundation [http://www.osgeo.org/] — Incubadora de proyectos — Capítulo español 6/72 Herramientas SIG comerciales ESRI ArcGIS [http://www.esri.com/] — El líder del mercado 7/72 Herramientas SIG comerciales ESRI ArcGIS [http://www.esri.com/] — Conectores para bases de datos SFS Oracle Spatial PostGIS desde la versión 9.3 — Soporte para otros SGBD Access, Oracle, DB2, SQL Server, Informix — Servidores de datos ArcSDE [ArcGIS Server] ArcIMS — Soporte para estándares, pero con trabajo Conectores para los servicios 8/72 Herramientas SIG comerciales ESRI ArcGIS [http://www.esri.com/] — Mucha funcionalidad Vectorial Raster — Visor gratuito [ArcExplorer] http://www.esri.com/software/arcexplorer/explorer.html — Creador del formato shapefile Estandar de facto en sistemas de información geográfica Descripción técnica del formato publicada Utilizado como formato de intercambio Permite datos alfanuméricos y geográficos No permite geometrías de distintos tipos en un fichero 9/72 Herramientas SIG comerciales Intergraph GeoMedia [http://www.intergraph.es] — El gran rival de ESRI 10/72 Herramientas SIG comerciales Intergraph GeoMedia [http://www.intergraph.es] — Conectores para bases de datos SFS Oracle Spatial NO tiene soporte para PostGIS Soporte para otras bases de datos Access, SQL Server, DB2 Servidores de datos Geomedia Web Map Professional Mucha funcionalidad Vectorial Raster Visor gratuito (Geomedia Viewer) — — — — http://www.intergraph.es/Productos/GeoMedia/geomedia_viewer.asp 11/72 Herramientas SIG comerciales Otras herramientas SIG — MapInfo [http://www.mapinfo.es] — AutoCAD Map 3D — Autodesk MapGuide — Microstation Geographics Tienen las ventajas y los problemas de los productos comerciales — Ventajas Productos llave en mano Soporte de una gran empresa — Problemas El producto se vende en paquetes El software es una caja negra 12/72 Sistemas gestores de bases de datos Oracle Spatial [http://www.oracle.com/technology/products/spatial/] — Es una opción para Oracle 11g 13/72 Sistemas gestores de bases de datos Oracle Spatial [http://www.oracle.com/technology/products/spatial/] — Oracle 11-g incluye Oracle Locator — Funcionalidad Tipos de datos y operadores (OGC y SQL/MM) Sistemas de coordenadas Índices espaciales — Oracle Spatial es una opción adquirible por separado — Funcionalidad Soporte para raster, topología y redes Cálculo de rutas Servicios web de publicación de información 14/72 Sistemas gestores de bases de datos PostGIS [http://www.postgis.org/] — Desarrollado por Refractions Research 15/72 Sistemas gestores de bases de datos PostGIS [http://www.postgis.org/] — Extensión para PostgreSQL — Tipos de datos y operaciones para objetos geográficos basados en el modelo vectorial — Funcionalidad Funciones de gestión Creación y borrado de tablas y columnas geométricas Gestión de sistemas de referencia espacial Predicados espaciales Dimension-Extended 9 Intersection Model Operadores espaciales Predicados espaciales usando el bounding box 16/72 Sistemas gestores de bases de datos PostGIS [http://www.postgis.org/] — Funcionalidad (sigue) Funciones de medición Funciones de utilidad Comprobación de validez geométrica Constructores de geometrías Operadores de acceso a las geometrías Operadores de edición de geometrías Modificar las coordenadas Transformación de sistema de referencia espacial Transformaciones afines (rotación, desplazamiento, escalado) Simplificación 17/72 Sistemas gestores de bases de datos PostGIS [http://www.postgis.org/] — Funcionalidad (sigue) Conversión de formatos Well-Know Text [WKT] y Extended WKT Well-Know Binary [WKB] y Extended WKB GML, KML y SVG (con precisión configurable) Operaciones de SQL Multimedia Importación y exportación de datos shp2pgsql (de Shapefile a SQL) pgsql2shp (de SQL a Shapefile) Clases para utilizar en un driver JDBC 18/72 Sistemas gestores de bases de datos PostGIS [http://www.postgis.org/] — Funcionalidad (sigue) Índices espaciales No todas las funciones del SQL hacen uso de los índices Ejemplo: SELECT the_geom FROM geom_table WHERE distance( the_geom, GeomFromText('POINT(100 200)', -1) ) < 10 La función distance no utiliza el índice espacial, el planificador resuelve la consulta como una búsqueda secuencial 19/72 Sistemas gestores de bases de datos PostGIS [http://www.postgis.org/] — Funcionalidad (sigue) Índices espaciales Para que la consulta utilice el índice podemos reescribirla: SELECT the_geom FROM geom_table WHERE the_geom && 'BOX3D(90 190, 110 210)'::box3d AND distance( the_geom, GeomFromText('POINT(100 200)', -1) ) < 10 El planificador sabe que puede utilizar el índice espacial para evaluar la operación &&, con lo que el número de tuplas que deben ser analizadas secuencialmente es mucho menor 20/72 Sistemas gestores de bases de datos PostGIS [http://www.postgis.org/] — Instalación En Windows: En Linux: (dos alternativas) Instalar Postgres sin instalar el PostGIS que viene integrado Instalar PostGIS con su propio instalador El instalador crea una plantilla (template_postgis) que hay que usar para crear bases de datos con funcionalidad geográfica Encontrar un paquete apropiado para nuestra distribución Descargar y compilar PostGIS con el código fuente de Postgres Hay dos scripts (lwpostgis.sql y spatial_ref_sys.sql) que añaden la funcionalidad geográfica a una base de datos ya creada Una BD con soporte espacial incluye: Una tabla geometry_columns con metadatos de PostGIS Una tabla spatial_ref_sys con los sistemas de referencia 21/72 Sistemas gestores de bases de datos MySQL [http://www.mysql.com/] — Incluye soporte espacial de forma nativa 22/72 Sistemas gestores de bases de datos MySQL [http://www.mysql.com/] — Funcionalidad [diferencias] Funciones de gestión Los tipos de datos geográficos están integrados en el lenguaje No hay soporte para sistemas de referencia espacial Predicados espaciales Operadores espaciales y operadores de edición No implementados Conversión de formatos Implementados usanfo el bounding box Sólo Well-Know Text [WKT] y Well-Know Binary [WKB] Importación y exportación de datos Son necesarias herramientas externas 23/72 Sistemas gestores de bases de datos SQLite [http://www.sqlite.org/] — Librería C que implementa un SGBD autocontenido — La base de datos se almacena en un fichero portable 24/72 Sistemas gestores de bases de datos SpatiaLite y VirtualShape [http://www.gaia-gis.it/spatialite/] — Extensión para SQLite con funcionalidad geográfica — Funcionalidad Formatos de datos: WKT y WKB Soporte para sistemas de referencia espacial Construcción de geometrías Operaciones de acceso y medición Predicados espaciales calculados con el bounding box Tansformaciones afines (rotación, escalado y desplazamiento) Importación y exportación de shapefiles — VirtualShape permite utilizar shapefiles directamente desde SQL 25/72 Servicios web de información geográfica UMN MapServer [http://mapserver.gis.umn.edu/] — El servicio web más exitoso 26/72 Servicios web de información geográfica UMN MapServer [http://mapserver.gis.umn.edu/] — Lenguaje de implementación: C++ — Modos de empleo: Como servicio web: CGI Como librería: PHP, Python, Perl, Ruby, Java, y C# — Desarrollado para Unix. La instalación en Windows es complicada (cada vez menos) — Configuración mediante ficheros de texto — El más rápido y ligero 27/72 Servicios web de información geográfica UMN MapServer [http://mapserver.gis.umn.edu/] — Fuentes de datos ESRI: Shapefiles, ArcSDE SGBD: Oracle, PostGIS, MySQL Muchos otros formatos (ver OGR) — Estándares soportados WMS (cliente y servidor), WMC y SLD WFS (no transaccional), Filter encoding WCS GML 28/72 Servicios web de información geográfica GeoServer [http://geoserver.org] — El más fácil de instalar y configurar 29/72 Servicios web de información geográfica GeoServer [http://geoserver.org] — Lenguaje de implementación: Java — Modo de empleo: Como servicio web: aplicación J2EE — Configuración mediante interfaz de usuario — Rendimiento limitado: no es el más rápido — Incluye OpenLayers como visor integrado — Genera mapas en muchos formatos Google Earth: KML PDF SVG 30/72 Servicios web de información geográfica GeoServer [http://geoserver.org] — Fuentes de datos Maduras: PostGIS, Shapefile, ArcSDE, DB2, Oracle Soportadas: WFS, MySQL, MapInfo — Estándares soportados WMS y SLD WFS (transaccional), Filter encoding WCS GML 31/72 Servicios web de información geográfica Deegree [http://www.deegree.org/] — El más completo 32/72 Servicios web de información geográfica Deegree [http://www.deegree.org/] — Lenguaje de implementación: Java — Modo de empleo: Como servicio web: aplicación J2EE — Configuración mediante ficheros y difícil — Buen rendimiento — Es el que implementa más estándares del OGC — Incluye un GeoPortal como desarrollo propio — Tiene la peor documentación 33/72 Servicios web de información geográfica Deegree [http://www.deegree.org/] — Fuentes de datos SGBD: PostGIS, Oracle, SQL Genérico (SQL Server, DB2) ESRI: Shapefile, ArcSDE — Estándares soportados WMS y SLD WFS (transaccional), Filter encoding WCS GML CSW Web Processing Service Web Terrain Service / Web Perspective View Service 34/72 Servicios web de información geográfica MapGuide Open Source [http://mapguide.osgeo.org/] — Liberado por Autodesk (parte de su software comercial) 35/72 Servicios web de información geográfica MapGuide Open Source [http://mapguide.osgeo.org/] — Lenguaje de implementación: C++ — Modo de empleo: Como servicio web: CGI Como librería: PHP, Java, .Net — Ofrece clientes web listos para usar — Acceso a datos sobre la biblioteca FDO ESRI: Shapefile, ArcSDE, MySQL, ODBC GDAL / OGR Cliente de WMS y WFS — Estándares soportados WMS WFS 36/72 Servicios web de información geográfica TileCache [http://www.tilecache.org/] — Implementación de un WMS-C por MetaCarta 37/72 Servicios web de información geográfica TileCache [http://www.tilecache.org/] — Lenguaje de implementación: Python — Modo de empleo: Como servicio Web: CGI — Funcionalidad En lugar de generar la imagen con cada petición al WMS, se almacena una cache de tiles Para cada nivel de escala, se renderiza de antemano la cartografía como un conjunto de celdas TileCache actua como servicio WMS-C que puede ser utilizado desde clientes que soporten el estándar 38/72 Servicios web de información geográfica FeatureServer [http://featureserver.org/] — Servidor de features desarrollado por MetaCarta 39/72 Servicios web de información geográfica FeatureServer [http://featureserver.org/] — Lenguaje de implementación: Python — Modo de empleo: Como servicio Web: CGI — Fuentes de datos: SGBD: DBM, BerkeleyDB, PostGIS Servicios: WFS Otros: OGR (Shapefile, GML, etc.), Flickr — Servicios (entrada y salida) Entrada y salida: JSON, GeoRSS, KML Sólo salida: HTML, WFS (GML), OpenStreetMap 40/72 Servicios web de información geográfica GeoNetwork [http://geonetwork-opensource.org/] — Catálogo de metadatos 41/72 Servicios web de información geográfica GeoNetwork [http://geonetwork-opensource.org/] — Lenguaje de implementación: Java — Modo de empleo: Como servicio web: aplicación J2EE — Permite gestionar y publicar metadatos de nuestra infraestructura de datos espaciales — Fuentes de datos Estándares ISO de metadatos (ISO 19115 y 19139) Otros estándares: FGDC (EE.UU.), Dublin Core — Estándares soportados CSW de Open Geospatial Consortium Open Search Open Archive Initiative 42/72 Clientes web de información geográfica Chameleon [http://chameleon.maptools.org/] — Orientado a UMN MapServer 43/72 Clientes web de información geográfica Chameleon [http://chameleon.maptools.org/] — Lenguaje de desarrollo: PHP + Javascript — Diseño orientado a Widgets y utiliza AJAX — Baja actividad — Funcionamiento: El interfaz de usuario se define en una plantilla HTML <CWC2 TYPE="MapDHTML" VISIBLE="true" WIDTH="400" HEIGHT="300" ALLOWRESIZE="true" MARQUEECOLOR="#FF3333" MARQUEEWIDTH="2" MINSCALE="1"/> La plantilla se procesa en una página PHP $szTemplate = "./sample_basic.html"; $szMapFile = "../map/chameleon.map"; $oApp->CWCInitialize( $szTemplate, $szMapFile $oApp->CWCExecute(); ); 44/72 Clientes web de información geográfica CartoWeb [http://www.cartoweb.org/] — Orientado a UMN MapServer 45/72 Clientes web de información geográfica CartoWeb [http://www.cartoweb.org/] — Lenguaje de desarrollo: PHP + Javascript — Arquitectura escalable (altamente modular) — Implementa un geoportal completo. Utiliza AJAX — Baja actividad 46/72 Clientes web de información geográfica Ka-Map [http://ka-map.maptools.org/] — Orientado a UMN MapServer 47/72 Clientes web de información geográfica Ka-Map [http://ka-map.maptools.org/] — Lenguaje de desarrollo: PHP + JavaScript — Uso de Tiling, PreCaché y AJAX — Colaboración con OpenLayers — Funcionamiento: El interfaz de usuario se define una página HTML La página realmente se genera con PHP, que se encarga de cargar el mapa El mapa se define en el formato de UMN MapServer — El menos dependiente de MapServer, pero necesita adaptación para hacerlo independiente 48/72 Clientes web de información geográfica OpenLayers [http://openlayers.org/] — Independiente del servidor 49/72 Clientes web de información geográfica OpenLayers [http://openlayers.org/] — Lenguaje de desarrollo: JavaScript — Utiliza AJAX, tiles, cache — Mucha actividad y sinergia con otros proyectos — Funcionamiento: <html><head><title>OpenLayers Example</title> <script src="OpenLayers.js"></script></head> <body><div style="width:100%; height:100%" id="map"></div> <script defer="defer" type="text/javascript"> var map = new OpenLayers.Map('map'); var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS", "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} ); map.addLayer(wms); map.zoomToMaxExtent(); </script> </body></html> — Cliente de: WMS, WFS, WMC, GeoRSS, KML, GeoJSON 50/72 Clientes web de información geográfica Community MapBuilder [http://communitymapbuilder.org/] — Independiente del servidor 51/72 Clientes web de información geográfica Community MapBuilder [http://communitymapbuilder.org/] — Lenguaje de desarrollo: JavaScript — Buena documentación — Muy bien estructurado y extensible — Funcionamiento: El interfaz de usuario es una página HTML con etiquetas marcadas con ids específicos Mediante JavaScript se carga un fichero XML de configuración que define el interfaz de usuario El fichero referencia a un fichero WMC que define el mapa — Cliente: WMS, WFS, WMC, GeoRSS, GML, Google — Edición sobre un WFS-T 52/72 Herramientas SIG de escritorio gvSIG [http://www.gvsig.gva.es] — Desarrollo español 53/72 Herramientas SIG de escritorio gvSIG [http://www.gvsig.gva.es] — Liderado por la Generalitat Valenciana — Lenguaje de desarrollo: Java — Desarrollo rápido y gran comunidad de usuarios — Mucha funcionalidad Raster y vectorial Edición Soporte de estándares — Buen diseño arquitectónico — Escasa documentación técnica 54/72 Herramientas SIG de escritorio uDIG [http://udig.refractions.net/] — Desarrollo de Refractions Research (PostGIS) 55/72 Herramientas SIG de escritorio uDIG [http://udig.refractions.net/] — Lenguaje de desarrollo: Java — Basado en Eclipse — Requerimientos hardware bastante elevados — Muy buena documentación, pero en inglés — Gran comunidad de usuarios — Proyecto muy relacionado con Geotools y GeoServer, comparten desarrolladores. 56/72 Herramientas SIG de escritorio openJUMP [http://openjump.org] — El pionero 57/72 Herramientas SIG de escritorio openJUMP [http://openjump.org] — Lenguaje de desarrollo: Java — Un buen punto de partida Muy bien estructurado internamente Fácil extensibilidad Complejidad reducidad — La funcionalidad es limitada — Gran número de proyectos derivados: Kosmo (español), JUMP (el desarrollo original) deeJUMP (de los creadores de deegree) 58/72 Herramientas SIG de escritorio GRASS [http://grass.itc.it/] — El más fuerte en análisis raster 59/72 Herramientas SIG de escritorio GRASS [http://grass.itc.it/] — Lenguaje de desarrollo: C++ — Desarrollo en UNIX, su uso en Windows es complejo — Se apoya en GDAL/OGR y PROJ4 — Orientado a línea de comandos — Incluye mucha funcionalidad y documentación Análisis 2D y 3D Cálculos sobre imágenes Funcionalidad vectorial y SQL — El punto débil siempre ha sido el interfaz de usuario y la curva de aprendizaje 60/72 Herramientas SIG de escritorio Quantum GIS [http://www.qgis.org/] — Lenguaje de desarrollo: C++ — Pensado como la versión amigable de GRASS SAGA GIS [http://www.saga-gis.uni-goettingen.de/] — Lenguaje de desarrollo: C++ — Orientado principalmente a raster — Comunidad de usuarios escasa MapWindow [http://www.mapwindow.com/] — Lenguaje de desarrollo: C++ — Incluye un cliente de escritorio y un control ActiveX — Desarrollado para la plataforma .Net — Orientado al análisis hidrológico 61/72 Herramientas SIG de escritorio Globos 3D — NASA WorldWind [http://worldwind.arc.nasa.gov/] Lenguaje de desarrollo: C# Utiliza información geográfica libre en la visualización Es software open source Acaban de sacar un SDK en Java — Google Earth [http://earth.google.com] Es la aplicación referencia Permite incluir nueva información (KML) Ni la cartografía ni el software son libres 62/72 Herramientas SIG de escritorio CatMDEdit [http://catmdedit.sourceforge.net/] — Desarrollo del consorcio TeIDE (Español) — Actualmente mantenido por la Universidad de Zaragoza y GeoSLab — Editor de metadatos de escritorio — Soporta: ISO 19115 - NEM Dublin Core CSDGM — Visor de tesauros incluido 63/72 Librerías de desarrollo GeoTools [http://geotools.codehaus.org/] — Lenguaje de desarrollo: Java — Proyecto maduro — Mucha funcionalidad (datos, filtros, pintado, etc.) — Fuerte adherencia a estándares: WFS, SLD, Filter Encoding — Soporte completo de formatos: Vector: SHP, PostGIS, MySQL, Oracle, Geomedia, ... Ráster: GeoTIFF, ArcGrid, formatos GDAL,... — Utilizado por: uDIG GeoServer ArcSDE, 64/72 Librerías de desarrollo Java Topology Suite [http://tsusiatsoftware.net/jts/] — Lenguaje de desarrollo: Java — Implementación del estándar SFS con objetos Java — Incluye funcionalidad adicional (índices, poligonización) — Muy utilizado en otros proyectos Java Conflation Suite [http://www.jump-project.org] — Lenguaje de desarrollo: Java — Librería para la combinación datasets geoespaciales GEOS [http://geos.refractions.net/] — Migración de JTS a C++ — Utilizado en PostGIS 65/72 Librerías de desarrollo GDAL [http://www.gdal.org/] — Lenguaje de desarrollo: C++ — Soporte raster: 50+ formatos: GeoTIFF, Erdas, ECW, MrSID, JPEG2000, SDE,... — Utilizado como librería de acceso a datos en Software libre: MapServer, Grass, QGIS, gvSIG Software propietario: ArcGIS, Google Earth, FME, ... — Es la biblioteca geoespacial más utilizada OGR [http://www.gdal.org/ogr/] — Soporte Vectorial: 20+ formatos: SHP, ArcSDE, ESRI Personal geoDB, GML, GPX, MapInfo, DGN, KML, Oracle Spatial, ... 66/72 Librerías de desarrollo PROJ4 [http://proj.maptools.org/] — Lenguaje de desarrollo: C++ — Soporte de sistemas de proyeccción GDAL, MapServer, gvSIG, Grass, ... FDO [http://fdo.osgeo.org/] — Lenguaje de desarrollo: C++ — API acceso Ráster y Vector de MapGuide Open Source — Soporte formatos: ArcSDE, SHP, SDF, WMS, WFS, GDAL, mySQL, SQL Server (beta). — Comunidad activa no exclusiva de Autodesk 67/72 Fuentes de información geográfica Infraestructura de Datos Espaciales de España (IDEE) — http://www.idee.es/ — Datos propios — Registro de servidores de España IDE de Galicia (SITGA) — http://sitga.xunta.es/ — Servicios OGC (WMS y WFS — Datos descargables IDE de A Coruña (Deputación da Coruña) — http://www.dicoruna.es/webeiel — Cartografía de la provincia de A Coruña — Servicios OGC (WMS, WFS, Nomenclátor, CSW) 68/72 Fuentes de información geográfica Visible Earth Project [http://visibleearth.nasa.gov/] — Imágenes de satélite de la Tierra — Blue Marble: imágenes a 500 m/pixel SRTM [http://www2.jpl.nasa.gov/srtm/] — Shuttle Radar Topography Mission — Datos de elevación cada 90 m (aprox) OpenStreetMap [http://www.openstreetmap.org/] — Aplicar el concepto Wiki a la información geográfica — Hay herramientas de edición, visualización y descarga Geonames [http://www.geonames.org/] — Nomenclator (Gazetteer) — Listado de nombres de lugar con ubicaciones geográficas 69/72 Conclusiones 70/72 Referencias Esta presentación contiene material extraído de: Panorama actual del ecosistema de software libre para SIG Miguel Montesinos, Jorge Gaspar Sanz Prodevelop mmontesinos@prodevelop.es, jsanz@prodevelop.es Presentado en las II Jornadas de SIG Libre http://www.sigte.udg.es/jornadassiglibre http://www.sigte.udg.es/jornadassiglibre/uploads/file/Ponencias/P5.odp 71/72 Propiedad intelectual 72/72