uMap — Tematizzare velocemente i poligoni
uMap è un software potentissimo per la creazione di mappe online, da inserire nel proprio sito, che fanno uso di OpenStreetMap come sfondo.
Il software è creato dall’italo-francese Yohan Boniface, rilasciato in open source con la licenza “do what the fuck you want to public license“, scritto in django e leaflet, e reso disponibile sugli spazi di OpenStreetMap France — http://umap.openstreetmap.fr. (cit. da de.straba.us)
In questo breve tutorial non voglio spiegare cosa è uMap e come funziona, questo è stato fatto benissimo da @napo nel suo blog de.straba.us, da @piersoft nel suo blog (tutti gli articoli su uMap) e da @cirospat nel suo Tutorial per creare mappe online su UMAP aggiornabili con file CSV da GOOGLEDRIVE, proverò a spiegare come tematizzare velocemente i poligoni che vengono importati in uMap da altri software GIS.
La cosa più semplice da fare è quella di esportare i poligoni tematizzati del nostro file in oggetto in più file, ovvero, suddividiamo i poligoni del file originale in n file, tanti quanto sono i temi.
Il file/layer Grado di Vulnerabilità sismica è tematizzato secondo una scala di vulnerabilità in 5 categorie (1) per riproporre velocemente la stessa tematizzazione in uMap basta salvare/esportare i poligoni di ogni categoria in un nuovo file.
I file ottenuti dall’esportazione dei poligoni di ogni singola categoria, importati in uMap (1)
Dal pannello Shape propertis configuriamo le proprietà dei poligoni di tutto il layer, colore del riempimento, trasparenza, linea di contorno, etc
Risultato finale, il file/layer originale, è stato suddivido in 5 nuovi file, (1) ognuno dei quali può essere attivato o disattivato al bisogno.
Ma se non voglio o non posso suddividere il file di base in tanti file…?
o se non voglio avere una colonna infinita di layer nel pannello delle informazioni di uMap…?
devo tematizzare singolarmente ogni poligono?
Tematizzare velocemente i poligoni per uMap
Studiando la struttura del file geojson di uMap mi sono reso conto, che uMap aggiunge una o più colonne al file viene importato, nello specifico per tematizzare i poligoni viene aggiunta la colonna _umap_options, (nella vecchia versione la colonna si chiamava _storage_options).
In questa colonna vengono scritte tutte le info che riguardano le proprietà del poligono, colore, trasparenza, spessore delle linee, ect… che tradotto in codice si scrive così:
{ "fillColor": "#b2b2b2", "color": "Black", "weight": "1", "opacity": "1", "fillOpacity": "0.75", "dashArray": "4" }
I valori sono a titolo di esempio e vanno adattati alle proprie esigenze.
fillColor = colore di riempimento
color = colore bordo
weight = spessore bordo
opacity = opacità bordo
fillOpacity = opacità riempimento
dashArray = tratteggio linea bordo, per ottenere la linea continua, basta omettere il comando
Per aggiungere la nuova colonna ho utilizzato QGIS , colonna _umap_options (1) per la nuova versione sel server uMap o la colonna _storage_options (2) per la vecchia versione di uMap. Dopo aver aggiunto la nuova colonna non ci resta che importare il file su uMap ed i poligoni verranno tematizzati automaticamente secondo le nostre istruzioni.
Per aggiungere la nuova colonna ho utilizzato QGIS , colonna _umap_options (1) per la nuova versione sel server uMap o la colonna _storage_options (2) per la vecchia versione di uMap. Dopo aver aggiunto la nuova colonna non ci resta che importare il file su uMap ed i poligoni verranno tematizzati automaticamente secondo le nostre istruzioni.
Come popolare la nuova colonna _umap_options
In file txt preparatevi i codici json da inserire, per ogni tematismo, nel mio sono 5, ma l’unica cosa che cambia è fillColor ovvero il colore di riempimento, ma siete liberi di modificare tutti i parametri. (Non è un metodo elegante, ma funziona, a breve @totofiandata ci suggerirà un metodo più professionale)
Le azioni da fare sono semplicissime:
- Attivare le modifiche al file e selezionare i poligoni ai quali vogliamo aggiungere il codice json per uMap;
- Aprire la tabella attributi e dal menù a tendina selezionare il campo _umap_options;
- Spostarsi nel campo delle espressioni e incollare i codice preparato in predenza ‘{ “fillColor”: “#ca0020”, “color”: “Black”, “weight”: “1”, “opacity”: “1”, “fillOpacity”: “0.75” }’ virgolette incluse;
- In ultimo cliccare su aggiorna selezione.
- Ripetere la procedura, per ogni tematismo.
Come suggerito da @totofiandaca il campo si può popolare con un metodo più elegante e veloce, usando il Calcolatore di Campi
Come per il precedente metodo dobbiamo rendere il file editabile, aprire il Calcolatore di Campi ed inserire un’espressione, come da immagine.
- Attivare le modifiche al file;
- Aprire il Calcolatore di Campi;
- Scrivere il nome del nuovo campo (_umap_options), spuntare l’opzione Crea un nuovo campo;
- Selezionare il tipo e la lunghezza del campo in uscita, in questo caso è Testo, 255 caratteri;
- Scrivere l’espressione per un tema graduato con 5 classi;
- Cliccare ok per avviare l’operazione.
Visto che la tematizzazione del layer è stata fatta utilizzando il campo VULN con il metodo Graduato, che permette di suddividere i dati di una data colonna in un certo numero di classi e quindi scegliere uno stile differente per ciascuna classe, @totofiandaca ha scritto l’espressione , in basso a seguire, da usare nel Calcolatore di Campi, per popolare velocemente il campo _umap_options, secondo le nostre classi. (grazie Totò)
CASE
WHEN "VULN" >= 1.12 AND "VULN" <= 1.42 THEN '{ "fillColor": "#0571b0", "color": "Black", "weight": "1", "opacity": "1", "fillOpacity": "0.75" }'
WHEN "VULN" > 1.42 AND "VULN" <= 1.60 THEN '{ "fillColor": "#92c5de", "color": "Black", "weight": "1", "opacity": "1", "fillOpacity": "0.75" }'
WHEN "VULN" > 1.60 AND "VULN" <= 1.72 THEN '{ "fillColor": "#fff0bd", "color": "Black", "weight": "1", "opacity": "1", "fillOpacity": "0.75" }'
WHEN "VULN" > 1.72 AND "VULN" <= 1.82 THEN '{ "fillColor": "#f4a582", "color": "Black", "weight": "1", "opacity": "1", "fillOpacity": "0.75" }'
ELSE '{ "fillColor": "#ca0020", "color": "Black", "weight": "1", "opacity": "1", "fillOpacity": "0.75"}'
END
Dopo aver popolato il nuovo campo, non ci resta che esportare il file in formato geojson, facendo attenzione al Sistema di Riferimento SR, che deve essere EPSG: 4326 — WGS 84 perché è il sistema di riferimento usato da uMap.
Esportare il nuovo file in geojson:
- Selezionare il formato dal menù a tendina, Geojson;
- Indicare il nome e la cartella dove salvare il file;
- Selezionare SR corretto per uMap EPSG: 4326 — WGS 84
Adesso non ci resta che caricare il nuovo fine in uMap:
- Aggiungere un nuovo layer;
- Cliccare sull’icona Importa dati;
- Caricare il nuovo file;
- Selezionare il formato dei dati;
- Selezionare il layer dove andranno caricati i dati;
- Infine cliccare sul pulsante Importa.
Grazie a Andrea Borruso e Salvatore Fiandaca per i preziosi suggerimenti
Qui un esempio, la mappa delle Vulnerabilità sismica degli edifici residenziali di Palermo
T’ansignari e t’appeddiri!
Questa è una delle tante ricette che trovate su T’ansignari e t’appeddiri! un repository github di #opendatasicilia nato per mettere a fattore comune scambi di conoscenza/esperienza su questi temi: dati aperti, trasparenza, Linked Open Data, analisi e trasformazione di dati.