Aplicación basada en web y en software libre para la...

17
Aplicaci´ on basada en web y en software libre para la gesti´ on municipal de incidencias y actuaciones en el espacio p´ ublico Dionisio Mart´ ınez Soler Universitat Oberta de Catalunya [email protected] 6 de junio de 2016 Dionisio Mart´ ınez Soler (UOC) Panel municipal 6 de junio de 2016 1 / 17

Transcript of Aplicación basada en web y en software libre para la...

Page 1: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Aplicacion basada en web y en software libre para lagestion municipal de incidencias y actuaciones en el

espacio publico

Dionisio Martınez Soler

Universitat Oberta de Catalunya

[email protected]

6 de junio de 2016

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 1 / 17

Page 2: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Indice

1 IntroduccionRequisitos de la aplicacionPlanteamiento de la solucion

2 Bases de datos espacialesDiseno de una base de datos SpatiaLite

3 Interfaz webBibliotecas JavaScript: OpenLayers vs. LeafletDiseno de la interfaz web con OpenLayersEsquema de funcionamiento de la aplicacion

4 Conexion de la interfaz web a la base de datosFormatos de intercambio de datos espaciales

5 Instalacion y demoPantalla inicial de la aplicacion

6 Desarrollo futuro de la aplicacion

7 Referencias

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 2 / 17

Page 3: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Requisitos de la aplicacion

Requisitos funcionales:

visualizacion de mapa del municipio y de sus infraestructuras;

introduccion de registros de incidencias y actuaciones geolocalizadascon un click sobre el mapa;

visualizacion total o filtrada de incidencias registradas;

modificacion de incidencias registradas;

exportacion de incidencias a otras aplicaciones.

Otros requisitos:

interoperable y usando formatos estandar;

basada en software libre;

accesible en red, en intranet o en Internet;

mapas y datos geograficos abiertos.

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 3 / 17

Page 4: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Planteamiento de la solucion

Base de datos espaciales

Base de datos que siga el estandarSimple feature access - Part 2: SQL option [OGC, 2010]:

implementa el tipo de datos Geometry.PostGIS, SpatiaLite...

Interfaz web

HTML+CSS+JavaScriptBibliotecas JavaScript: Leaflet, OpenLayers, proj4js, jQuery...

Datos geograficos abiertos

Mapas: OpenStreetMap

Ortofotos: PNOA

Datos vectoriales sobre infraestructuras municipales: IDEPO

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 4 / 17

Page 5: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Bases de datos espaciales

1 Estructura cliente-servidor ⇒ requiere configurar ymantener un servidor.

2 Versatil, gran cantidad de funciones espaciales.

3 Eficaz en entornos multiusuario con muchos accesossimultaneos.

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 5 / 17

Page 6: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Bases de datos espaciales

SpatiaLite:extensionespacialparaSQLite

1 No utiliza estructura cliente-servidor ⇒ no requiereconfiguracion y mantenimiento.

2 La base de datos esta contenida en un fichero ⇒ copia ymigracion muy simple.

3 El codigo de SQLite esta en el dominio publico ⇒interoperable.

4 Funciones espaciales suficientes para el proyecto.

5 Almacenamiento binario del tipo de datos Geometry

con funciones para introducirlo o leerlo en formatosWKT, EWKT, KML, GML, y GeoJSON.

6 Gestionable con utilidades graficas y de consola.

7 Gestionable en Python con un modulo especıfico.

8 Algunas limitaciones en entornos multiusuario conmuchos accesos simultaneos.

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 6 / 17

Page 7: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Diseno de una base de datos SpatiaLite

Codigo SQL

CREATE TABLE Incidencias (

id INTEGER NOT NULL PRIMARY KEY,

tipo TEXT(50),

radio INTEGER,

inicio TEXT(22),

fin TEXT(22)

);

Campo Contenido

id getTime(): momento de creacion de incidencia en milisegundos.tipo 50 caracteres de texto libre.radio Radio de area afectada en metros.inicio

fin Fecha y hora en formato YYYY-MM-DDTHH:MM[+-]HH:MM

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 7 / 17

Page 8: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Diseno de una base de datos SpatiaLite

Creacion del campo de tipo Geometry

SELECT AddGeometryColumn(

’Incidencias’,

’geometry’,

4326,

’POINT’,

’XY’,

1

);

4326 Coordenadas en EPSG:4326 (grados de lon/lat como GPS).POINT Tipo de objeto geografico: punto.XY Coordenadas bidimensionales.1 Campo NOT NULL: toda incidencia debe tener una localizacion.

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 8 / 17

Page 9: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Bibliotecas JavaScript: OpenLayers vs. Leaflet

1 Codigo sencillo.

2 Mas ligera.

3 Menos versatil.

4 Funcionalidades de creacion yedicion de nuevos objetosgeograficos vectorialesmediante plugins externos.

OpenLayers 31 Codigo mas complejo.

2 Mas pesada.

3 Mas versatil.

4 Funcionalidades de creacion yedicion de nuevos objetosgeograficos vectorialesincorporadas.

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 9 / 17

Page 10: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Diseno de la interfaz web

panelmunicipal.html

panelmunicipal.css

panelmunicipal.js

Bibliotecas JavaScript:

OpenLayers ⇒ mapas y datos geograficos.proj4js ⇒ para usar en OpenLayers sistemas de referencia diferentes

de EPSG:4326 y EPSG:3857.

jQuery ⇒ simplifica el codigo necesario para la obtencion y mani-pulacion de datos.

Conexion a fuentes de datos geograficos (capas del mapa):

OpenStreetMap http://www.openstreetmap.org

OpenCycleMap http://www.opencyclemap.org

PNOA http://pnoa.ign.es

IDEPO http://ide.depo.es

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 10 / 17

Page 11: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Esquema de funcionamiento de la aplicacion

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 11 / 17

Page 12: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Conexion de la interfaz web a la base de datos

Inspirada en...

“A dynamic web application – OpenLayers AJAX with Python andSpatiaLite” [Mearns, 2015]

Scripts CGI en lenguaje de programacion Python

Usando los modulos:

PySpatialite: lectura y escritura en la base de datos.geojson: intercambio de datos con la interfaz web.

incidencias.py interfaz → GeoJSON ⇒ SpatiaLite → BDincidenciaslayer.py BD → SpatiaLite ⇒ GeoJSON → interfazincidenciasbuffer.py BD → SpatiaLite (Buffer) ⇒ GeoJSON → interfazincidenciaskml.py interfaz → KML ⇒ fichero → interfaz.

Buffer: Transform(Buffer(Transform(geometry, 23029), radio), 4326)

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 12 / 17

Page 13: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Formatos de intercambio de datos geograficos

1 GeoJSONBasado en JSON (JavaScript Object Notation, RFC 7159).Actualmente, borrador de RFC [Butler et alii, 2016].Define objeto Feature, que contiene Geometry + otras propiedades(miembros).Geometry contiene un array de coordenadas.Define objeto FeatureCollection que consiste en un array deFeatures.Content-type: application/json

2 KMLKeyhole Markup Language, formato usado por Google Earth.Formato estandar del OGC desde su version 2.2 (actualmente 2.3),basado en XML.Proximo de GML, siendo un objetivo la convergencia entre ambos.Visualizacion de datos geograficos en tres dimensiones.Permite asociar a los datos anotaciones e imagenes.Permite describir el recorrido de visualizacion de los datos y no solo sulocalizacion en el mapa.Content-type: application/vnd.google-earth.kml+xml

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 13 / 17

Page 14: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Instalacion y demo

Servidor web

Servidor simple con el modulo CGIHTTPServer de Python(mediante el script startserver.sh incluido).

Cualquier servidor web que soporte CGI y disponga de un interpretede Python con los modulos PySpatialite y geojson.

Demo

En la maquina local (CGIHTTPServer):http://localhost:8000/panelmunicipal.html

Demo disponible en Internet(hasta el 23 de junio de 2016 inclusive):https://dmsoler.homenet.org/tfg/panelmunicipal.html

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 14 / 17

Page 15: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Pantalla inicial de la aplicacion

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 15 / 17

Page 16: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Desarrollo futuro de la aplicacion

Aspectos a desarrollar y mejorar:

Formulario intuitivo o calendario para introducir fecha y hora de inicioy fin de las incidencias.

Formulario intuitivo para filtro de incidencias.

Nueva funcionalidad: operaciones espaciales entre incidencias y datosIDEPO.

Carga automatica de datos de ficheros GeoJSON (en diferentessistemas de referencia) existentes en determinado directorio.

Exportacion de datos a formatos diferentes de KML soportados porOpenLayers (KML, GML, GeoJSON o incluso GPX, considerandocada incidencia un waypoint).

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 16 / 17

Page 17: Aplicación basada en web y en software libre para la ...openaccess.uoc.edu/webapps/o2/bitstream/10609/53643/9... · SpatiaLite: extensi on espacial para SQLite 1 No utiliza estructura

Referencias

Butler, H. et alii (2016)

The GeoJSON Format

IETF Internet Draft,https://datatracker.ietf.org/doc/draft-ietf-geojson/

Mearns, Ben (2015)

QGIS Blueprints: Develop analytical location-based web applications with QGIS

Birmingham, Packt Publishing, 2015.

Open Geospatial Consortium (2010)

OpenGIS Implementation Standard for Geographic information - Simple featureaccess - Part 2: SQL option. Version: 1.2.1

http://www.opengeospatial.org/standards/sfs

Dionisio Martınez Soler (UOC) Panel municipal 6 de junio de 2016 17 / 17