Uso della console python per preparare mappe offline da WMS (scaricatore di mattonelle)

Questo studio spiega come preparare le mappe offline da sorgenti WMS/WFS o qualsiasi mappa caricata in QGIS, scaricando le tile con l’aiuto di uno script in python. Lo script genera anche un mosaico di tutte le piastrelle.

L’accesso vettoriale e raster tramite Web Map Service (WMS) è un servizio molto comune ed efficace. Essa ha diversi vantaggi, come la sicurezza, stili di mappa flessibili centralizzati. Un esempio sono le mappe Google maps, Yahoo, Bing, MODIS, Landsat, le carte pubblicate dalla NASA, NRSC (India). Lo svantaggio/limitazione di WMS è che funziona via internet o intranet. Potrebbe non essere possibile ottenere una connessione internet, specialmente sul campo durante i sondaggi. Anche il WMS è lento rispetto a qualsiasi formato di immagine non in linea come GeoTiff, jpg, img ecc.

Uso di QGIS

QGIS è uno strumento che consente di collegare e accedere a qualsiasi servizio WMS. La connessione WMS è basata su semplici URL e, una volta stabilita la connessione alla mappa può essere visto su QGIS. Se vogliamo, possiamo salvare la mappa QGIS come jpg (File > Salva come immagine) e avere un file world che possiede le coordinate geografiche di quella particolare regione ad esempio campione.jpg è la mappa e campione.jpgw sono le coordinate. Ciò significa che l’immagine scaricata è georeferenziata. Si possono scaricare le piastrelle in formato griglia manualmente e utilizzarle in seguito in modalità non in linea. Il download manuale è possibile se l’area è molto piccola o immagini a bassa risoluzione.

QGIS con mattonelle WMS

QGIS con mattonelle WMS

Console python

Un piccolo script è stato scritto nella console Python, disponibile sul sito ufficiale QGIS nel PyQGIS Developer Cookbook. Lo script è formato da 4 componenti, elencati di seguito.

  1. X,Y coordinate (superiore sinistro inferiore e destro) della prima piastrella

  2. Dimensione della piastrella da scaircare (es 0.001 X 0.001 gradi)

  3. Numero di piastrelle da scaricare (calcolata in base all’estensione della mappa e alla dimensione della piastrella)

  4. Cartella di destinazione dove memorizzare le piastrelle

Lo script funziona in due semplici cicli for, il primo definisce l’estensione di mappa in QGIS ed esegue le righe/colonne. Una volta che è stata ottenuta la misura della mappa, la mappa viene caricata in QGIS. Il ritardo di 3 secondi (dipende dalla connessione ad internet) è stata introdotto prima del salvataggio della mappa in jpg nella cartella definita dall’utente. Una volta che lo script viene eseguito, tutte le piastrelle nella cartella possono essere caricate direttamente in QGIS oppure caricare il mosaico da Raster > Varie > Fondi o costruisci Raster Virtuale (catalogo). Entrambi gli strumenti generano il mosaico ma la fondamentale differenza è che la fusione crea un’immagine indipendente di piastrelle, mentre il raster virtuale genera un collegamento a tutte le singole piastrelle.

Script python e cartella dove vengono memorizzate le piastrelle

Script python e cartella dove vengono memorizzate le piastrelle

Il metodo ha limitazioni: i cambiamenti nella mappa lato server non si rifletteranno nelle mappe offline. In questo caso l’utente dovrà ripetere la procedura e generare nuovi offline mappa. La seconda limitazione è che la mappa offline creata sarà in formato immagine e non può essere utilizzata per la creazione di mappe tematiche o per la classificazione delle immagini. Con alcuni sforzi supplementari, alcune mappe possono essere convertiti in immagini vettoriali con qualche perdita di dati.

Obiettivo

Il mosaico è una pura immagine anche se è scaricato dalla mappa tematica (7-8 colore). Con uno strumento avanzato, come riclassificazione, analisi strato/banda, questo raster può essere convertito in vettore poligono. Il WMS ha diverse richieste come getcapabilities, getmap getfeatureinfo, ecc. Utilizzando il getgeatureinfo possono essere recuperati gli attributi per ogni poligono. Lo script può essere convertito in plugin, in modo tale che chiunque senza conoscenze di scripting possa essere in grado di utilizzare lo script.

In conclusione

Queste esperienze dimostrano che QGIS può essere utilizzata a qualsiasi livello avanzato. Con competenze di programmazione si può scrivere un piccolo script o un plug-in per migliorare la qualità del lavoro e risparmiare tempo. In QGIS, l’accesso a un repository di plug-in sviluppati a livello mondiale, è il lato migliore di QGIS. Il PyQGIS Developer Cookbook è una grande risorsa per scrivere uno script e elaborazione dati raster è molto più facile ora con l’aiuto di strumenti GDAL.

Autori

Questo articolo è stato scritto nel maggio 2014 da Prashant Kadgi, a Pune (India) e lavora attualmente come consulente in servizi di consulenza GIS. Dal 2009 lavora con GIS & RS in NRM, forestali, e-governance, progetti di sviluppo software, in diverse regioni dell’India e del mondo.