I client WebGIS

Un “WebGIS” può essere definito in molti modi, ma in generale si tratta di un’architettura Web specializzata per fornire/fruire strumenti e servizi per la visualizzazione, l’interrogazione e l’analisi di informazioni spaziali, tramite rappresentazioni cartografiche, grafiche e alfanumeriche.

Come ogni architettura Web generica, un WebGIS si compone di componenti che svolgono la funzione di client e altri di server. I due (gruppi) di componenti comunicano tramite Internet, sfruttando il protocollo HTTP per scambiarsi richieste e risposte.


Architetture WebGIS


Il client di un WebGIS può svolgere le più svariate funzionalità, tra cui:

  • Visualizzazione e navigazione (pan/zoom) di cartografia raster e/o vettoriale
  • Manipolazione delle proprietà geometriche e alfanumeriche di dati vettoriali
  • Manipolazione dinamica della rappresentazione cartografica (stilizzazione dei dati vettoriali, filtri raster, animazioni grafiche, ecc.)
  • Dialogo con i servizi cartografici, tramite protocolli standard o proprietari, per:
    • eseguire ricerche sui dati (es. tramite WMS e WFS)
    • editare dati (es. WFS-T))
    • eseguire funzioni di elaborazione (es. WPS)
    • ecc.

La funzione delle librerie come OpenLayers, Leaflet o Mapbox GL è quella di offrire un pacchetto di strumenti per facilitare l’implementazione di queste funzionalità, utilizzando il linguaggio di programmazione Javascript.

Una semplice pagina Web come la seguente, che rappresenta una funzione di ricerca alfanumerica di dati spaziali, e la rappresentazione geografica dei risultati su base cartografica, richiede:

  1. di interrogare e ottenere la base cartografica da un servizio (server) proprio o di terze parti, come OpenStreetMap o Google Maps
  2. inserire e posizionare i dati ottenuti da tali servizi all’interno della pagina Web
  3. richiedere, ad esempio tramite protocollo WMS, i dati sulla base del modulo di ricerca alfanumerico
  4. gestire i dati ottenuti dal server, dargli una rappresentazione grafica e posizionarli all’interno della mappa in modo congruente con la base cartografica (gestione dei sistemi di riferimento)

Questo flusso, semplificato, di una pagina di ricerca GIS richiederebbe la scrittura di molto codice se non si disponesse di librerie che implementano e astraggono gran parte delle funzioni di base che sottendono all’implementazione dei passi descritti.


"Pagina Web con mappa"

OpenLayers

OpenLayers è un progetto nato nel 2006 da parte di MetaCarta (azienda acquisita nel 2010 dalla Nokia) e rilasciato con licenza open source FreeBSD. Attualmente esistono due versioni parallele del codice:

  • OpenLayers 2, che è stata la versione principale fino al 2013 quando è stata rilasciata la prima della nuova serie 3 che è stato un cambio radicale rispetto alla precedente, rendendole incompatibili. La versione 2 continua ad essere mantenuta, essendo alla base di molte applicazione realizzate fino a poche anni fa.
  • OpenLayers 4 che è la versione attuale, e sarà quella utilizzata in questo corso.

Il codice viene mantenuto e sviluppato all’interno del repository pubblico GitHub dove è possibile seguire tutte le novità del codice, inserire eventuali problemi riscontrati o suggerire modifiche tramite l’issue tracker.

Essendo codice open source è possibile utilizzarlo liberamente, analizzarne il codice ed estenderlo. Il rilascio di eventuali versioni modificate è sottoposto ai vincoli della licenza FreeBSD.

Tra le molte funzioni offerte da OpenLayers ci sono:

  • visualizzazione e interazione con un oggetto mappa, che fa da contenitore di strati cartografici raster e vettoriali
  • visualizzazione e interrogazione di immagini georiferite fornite da servizi standard (come OGC WMS e TMS) o standard de facto come XYZ, utilizzato ad esempio dalle tile (tasselli di immagini) fornite dai server di OpenStreetMap
  • visualizzazione, interrogazione e gestione delle proprietà geometriche e alfanumeriche di dati vettoriali ottenuti da servizi standard (come OGC WFS) o da altri servizi che forniscano i dati in uno dei tanti formati gestiti da OpenLayers: GeoJSON, TopoJSON, Mapbox Vector Tiles, GML, KML, ecc.
  • gestione dei sistemi di riferimento e funzoni per la riproiezione al volo di immagini e vettoriali, col supporto della libreria proj4js
  • stilizzazione cartografica avanzata degli elementi vettoriali
  • filtraggio dinamico degli strati raster (immagini) in mappa
  • animazioni delle mappa e degli elementi geografici degli strati presenti in mappa
  • interazione con servizi cartografici di editing, come OGC WFS-T
  • widget visuali (controlli) per gestire le varie interazioni con la mappa
  • gestione delle interazioni con la mappa e gli strati geografici per la creazione di funzionalità custom
  • integrazione diretta con le librerie JSTS e Turf per eseguire elaborazioni geometriche avanzate sui dati vettoriali

Nelle lezioni analizzeremo molte di queste funzionalità, singolarmente e all’interno di un progetto WebGIS che completeremo al termine del corso.