Geopaparazzi mappe offline

Caricare mappe offline per Geopaparazzi

Avere la possibilità di usare delle mappe di sfondo (basemaps) salvate nella memoria dello smartphone, è utile per due principali motivi: funzionano anche in assenza del collegamento Internet (appunto offline), poter usare delle mappe personalizzate  per le esigenze di copertura e rappresentazione grafica di una certa  zona d’interesse.

Per scegliere quale mappa di sfondo si vuole usare, nella finestra del menù principale di Geopaparazzi troviamo (icone piccole in alto) l’apposito bottone; cliccando su di esso compare l’elenco  delle mappe disponibili.

geopaparazzi mappe

All’installazione di Geopaparazzi è presente solo la basemap di default di OSM (Openstreetmap): mapnik, ma se notate è presente un bottone giallo col segno “+”, cliccando il quale, potete aggiungere tutte le mappe che volete: o singolo file o un’intera cartella.

I files delle mappe (vediamo tra breve come sono fatti) vengono normalmente messi nella cartella “geopaparazzi” che viene creata all’installazione dell’app; ma possono  trovarsi ovunque nella memoria dello smartphone:  in sottocartelle di “geopaparazzi” create appositamente o in altre cartelle esterne.

E’ possibile salvare le mappe anche in una eventuale memoria SD esterna, anzi questa eventualità è conveniente nel caso di file-mappa molto grandi. Attenzione però che, a partire dalla versione di Android 4.4 (KitKat) le app, e quindi anche Geopaparazzi, possono accedere una memoria SD esterna solo in lettura.

geopaparazzi cartelle mappe

In definitiva per visualizzare una mappa offline in Geopaparazzi i passaggi sono due:

  1. caricare il file della mappa in una cartella di memoria dello smartphone (quella di default è la cartella “geopaparazzi”);
  2. dal menù principale di Geopaparazzi, dopo aver cliccato sull’apposito bottone, selezionare il file della mappa.

Naturalmente il primo passaggio si fa solo la prima volta e con i metodi tipici per trasferire un file nella memoria dello smartphone: cavetto USB, colleg. bluetooth, da cloud, …, etc.

PC smartphone connessione USB

Anche se non dovrebbe esserci bisogno, prima di andare avanti facciamo una precisazione; stiamo parlando di basemaps ovvero mappe di sfondo sulle quali la nostra app ci mostrerà la nostra posizione GPS, i punti rilevati, le tracce dei percorsi, … etc. Queste mappe non sono “sovrapponibili” in trasparenza, come si può fare con deidei geodati vettoriali (overlays) e quindi possono essere usate una per volta.

I tipi di mappe

Geopaparazzi consente di visualizzare i seguenti tipi di basemaps :

  • .mapurl : online e offline;
  • .mbtiles : offline;
  • .map : mappe OSM offline;
  • .sqlite : offline, ancora in sviluppo (solo per testing)

I file del tipo .mapurl non rappresentano direttamente delle mappe, ma sono dei file di testo che contengono informazioni utili (secondo una certa sintassi) per ricevere mappe fornite da un servizio di tiles XYZ o TMS. Possono essere:

  • servizi remoti (online) come quelli delle mappe di OSM oppure mappe pubblicate tramite WMS, quindi individuati con un URL remoto (per es.  url=http: //tile.openstreetmap.org/ZZZ/XXX/YYY.png)
  • servizi locali (offline) ovvero tiles di mappe caricate nella memoria del telefono e perciò individuati con un URL locale (per es.  url=mytilesfolder/ZZZ/XXX/YYY.png)

Diciamo subito che il caso più frequente è il primo (servizio tiles remoto), in quanto memorizzare delle tiles XYZ (o TMS) nella memoria del telefonino è abbastanza pesante e complicato (albero di cartelle e sotto-cartelle con tanti piccoli file immagine) e sono preferibili altre soluzioni più semplici come le MBTiles.

Chi volesse maggiori informazioni sulle regole per scrivere i parametri in un file .mapurl, le può trovare qui: .mapurl parameters. Come esempio riportiamo qui di seguito il file .mapurl di una mappa  WMS:

I file di tipo .mbtiles sono mappe raster rappresentate nel formato MBTiles che tecnicamente è un database SQLite che consente di memorizzare in un unico file tutte le tiles che compongono una mappa. E’ sicuramente la soluzione preferibile per salvare delle proprie mappe offline per Geopaparazzi.

I file di tipo .map sono delle mappe basate su Openstreetmap (cioè con le informazioni geografiche presenti in OSM) memorizzate in un formato binario efficiente per immagazzinare dati di grandi dimensioni e rese disponibili gratuitamente in seno al progetto Mapsforge avente appunto il fine di realizzare mappe vettoriali offline per Android e più in generale per applicazioni basate su Java.

Parleremo più dettagliatamente più avanti sia delle mappe .mbtiles che le .map.

I file di tipo .sqlite sono mappe rappresentate nel formato rasterlite2 che è basato anch’esso sui database SQLite; precisamente permette di salvare e gestire mappe raster all’interno di SpatiaLite il noto geoDB per dati geografici vettoriali. E’ un formato aperto relativamente nuovo (ancora nella versione beta)  che permette di salvare mappe raster di grandi dimensioni multi-risoluzione in modo efficiente in un unico file. Tra l’altro ha il supporto pieno per i metadati e la georeferenziazione in qualunque SRS.

Geopaparazzi  prevede il supporto per questo tipo di mappe ed il suo sviluppo sta procedendo bene (geopaparazzi/RasterLite2-Tasks); ma trattandosi di una libreria ancora non stabile,  ci sono un pò di problemi da risolvere e quindi per adesso l’uso di mappe rasterlite2 serve solo per effettuare dei test.

MBTiles

Il loro nome deriva da Mapbox tiles, visto che è un formato aperto creato in seno al progetto Mapbox (mapbox/mbtiles-spec) . Come abbiamo già detto, tecnicamente permette di memorizzare le tiles di una mappa in un database SQLite e quindi tutte in un unico file.

Banalmente se ne deduce che non è un’alternativa a formati come per esempio:  geoTIFF, JPEG2000, ECW, cioè formati per rappresentare un’immagine-mappa georeferenziata. Il formato .mbtiles serve per rappresentare mappe suddivise in tiles (tiled maps).

Proprio perché questo formato consente di salvare comodamente delle mappe offline, Geopaparazzi oltre che leggere direttamente delle mappe .mbtiles, lo utilizza per salvare in cache le tiles delle mappe remote descritte da un mapurl. Infatti tra i parametri presenti dentro un file .mapurl c’è anche “mbtiles” con il quale si specifica in quale cartella salvare la cache (la cartella di default si chiama defaulttiles).

MBTiles mappe

Ma come procurarsi delle mappe in formato .mbtiles?
Innanzitutto c’è qualche sito web che ne ha disponibili già pronte da scaricare, come per esempio:

In genere sono mappe molto grandi perché ricoprono l’estensione di  intere nazioni o addirittura continenti.

Comunque il modo migliore è crearsele da soli partendo da mappe in altro formato, con appositi editor e tool di conversione. Tra l’altro in questo modo, è anche possibile aggiungere ad una mappa di sfondo anche dei propri layer vettoriali e quindi realizzare una mappa personalizzata. Ci sono diversi tool sia online che da installare sul PC, oppure eseguibili da linea di comando; adesso ne citiamo alcuni tra quelli più diffusi.

L’applicazione storica  per creare mappe in formato MBTiles è TileMill sviluppata da MapBox; totalmente open source e gratuita, su questa Wiki page trovate le informazioni che la riguardano ed i link per accedere il progetto ed effettuarne il download. Comunque è un’applicazione  ormai vecchia non più supportata da MapBox, perché dal 2015 l’ha sostituita con Mapbox studio (un servizio online per gli utenti registrati a Mpabox) e ne ha ceduto il mantenimento ad un gruppo di volontari: tilemill-project/tilemill.

Comunque  la vecchia versione di TileMill (la v. 0.10.1) funziona ancora abbastanza bene con il vantaggio che esiste un comodo installer per Windows; altrimenti, per usare la versione più recente (1.0.1) si devono usare i sorgenti scaricabili dalla sua repo su github come spiegato in questa pagina.

Se si vogliono creare delle mappe .mbtiles estratte da OSM (OpenStreetMap) una soluzione è HOT Export Tool, un servizio cloud gratuito (bisogna solo essere registrati) che permette di selezionare un area geografica d’interesse ed  esportarla in diversi formati, tra cui appunto anche MBTiles. Il suo utilizzo è molto semplice e ne parliamo in quest’altro articolo: Come usare i dati di OSM – 2^parte

Un’applicazione desktop molto interessante e gratuita è Maperitive che, sempre partendo dalle mappe di OSM, permette di creare delle proprie mappe, applicando lo stile grafico a proprio gusto (rendering rules) ed aggiungendovi anche dati vettoriali (per esempio tracce GPS).  Oltre alle funzione presenti in una semplice ma funzionale interfaccia grafica, esiste una nutrita raccolta di comandi testuali che possono essere eseguiti singolarmente o come script (da un apposito quadro chiamato commander)  rendendo l’applicazione ancora più flessibile.

Poi abbiamo MapTiler che probabilmente è ad oggi l’applicazione più famosa per leggere (viewer)  e creare mappe in formato MBTiles. Esiste sia nella versione desktop che come servizio cloud online, ma non è gratuita, o meglio esistono dei profili gratuiti ma con delle limitazioni che comunque, in molti casi, potrebbero non interessare. L’unico fastidio è che le versioni gratuite producono delle mappe in cui compare in trasparenza (watermark) il logo di MapTiler.

MapTiler

Un’altra applicazione abbastanza usata per creare mappe offline per diverse applicazioni Android (OruxMaps, RMaps, Locus , … etc) è Offline Map Maker la quale permette di partire, oltre che da OSM, anche da altri servizi di mappe come quelle di Google, Here e molte altre. Tra i vari formati consentiti per salvare la mappa offline, c’è anche l’ MBTiles e quindi può essere adoperata anche per Geopaparazzi. Ha un’interfaccia molto semplice ma efficiente ed è facile da usare; esiste una versione trial con delle limitazioni, ma la versione completa è a pagamento.

Se usate QGIS, c’è un plugin che vi permette di creare delle tiled map in formato XYZ ma anche come MBTiles; si chiama QTiles (adesso con QGIS 3 è diventato QTiles3) ed un plugin è ancora considerato “sperimentale”, quindi per vederlo ed installarlo, nel plugin manager di QGIS dovete settare questa opzione. Come appena detto è un plugin che in generale crea delle tiles, quindi se si vuole ottenere un file in formato MBTiles, bisogna settare la relativa opzione come mostrato nella seguente figura:

Qtiles

Su YouTube potete trovare questo breve video tutorial su come usarlo.

Se avete una mappa raster o una qualunque immagine georeferenziata, non composta da tiles, in formato geoTIFF , JPEG o simile, un’altro modo per convertirla in MBTiles è tramite il comando gdal_translate della libreria GDAL, quindi da linea di comando. Per chi non la conoscesse GDAL (Geospatial Data Abstraction Library)   è un’importante libreria di funzioni geospaziali installabile facilmente su Windows tramite OSGeo4W, utility ben nota a chi usa  QGIS o GRASS.

Quindi una volta entrati nella console (ambiente linea di comando) o comunque in una shell e supponendo che il file della mappa da convertire si chiama my_map.tiff ed è espresso nel Sistema di Riferimento WGS84/Pseudo-Mercator (EPSG: 3857), il comando da scrivere è il seguente:

Se invece la vostra mappa  non è in EPSG 3857, prima di eseguire la trasformazione in MBTiles, bisogna riproiettarla in questo SR adoperando un qualunque tool di riproiezione o un GIS che consente di farlo, oppure con un altro comando GDAL nel seguente modo:

Dopo aver eseguito il comando gdal_translate che ha creato il file my_map.mbtiles, se il file è troppo grande conviene creare le cosidette overview (dette anche piramidi) altrimenti uno zoom al livello massimo comporta il rendering e ridimensionamento al volo tutto il raster. In genere si generano delle copie dell’immagine con risoluzione 1/2, 1/4, 1/8, … dell’originale e queste possono essere contenute all’interno dello stesso GeoTiff. Per farlo si usa gdaladdo, un’ altra funzione GDAL, nel seguente modo:

Bene, qualunque soluzione abbiate scelto per creare la vostra mappa offline in formato MBTiles, come già detto prima, per usarla con Geopaparazzi non dovete far altro che trasferire il file .mbtiles dentro la memoria del vostro smartphone e poi selezionarla con il selettore di mappa.

Mappe Mapsforge

Come detto all’inizio si tratta di mappe offline derivate da OSM, in un formato compresso (.map) adatto per essere gestito agevolmente in  ambiente Android tramite apps in Java; oltre che Geopaparazzi, diverse altre app GPS (per es. OruxMaps, Locus Map, OsmAnd, … etc) riescono a leggere queste mappe.  Il loro nome deriva appunto dal progetto Mapsforge nato a Berlino nel 2008 che  si pose l’obiettivo di salvare offline porzioni della mappa OSM  in un modo facilmente “portabile”.

Volendo esistono alcuni programmi che permettono di visualizzare i file .map anche in ambiente desktop; per esempio Cruiser è un visualizzatore di mappe e navigatore molto leggero ma efficiente , disponibile per tutti i sistemi (Windows, Mac OS, Linux, Android).

Le mappe Mapsforge, pur essendo usabili come mappe di sfondo (basemaps) non sono delle mappe raster bensì vettoriali; infatti il formato .map  salva gli elementi vettoriali geografici di OSM dell’area geografica che rappresenta la mappa. Questi elementi vengono poi vestiti graficamente secondo un certo stile o tema definito in un file XML (render theme). Oltre a quello di default (quello di Mapsforge) esistono altri stili di terze parti come per esempio quelli di OpenAndroMaps e di  OruxMaps.

Non essendo mappe composte da tiles, lo stile grafico di rendering prevede la rappresentazione della mappa per i vari livelli di zoom consentiti.

mapsforge

Il sito principale per scaricare queste mappe è ovviamente quello di Mapsforge: Mapsforge download server. In questa pagina potete trovare le mappe distinte per versione e per regione geografica. La versione (v3, v4, v5) è quella della libreria adoperata per realizzarle e bisogna fare attenzione che per il momento Geopaparazzi supporta soltanto le mappe della versione v3 (gli sviluppatori stanno lavorando ad un aggiornamento del motore di rendering  che sarà in grado di visualizzare anche le mappe dell’ultima v5: new map rendering engine #451).

mapsforge download

Altri indirizzi da cui si possono scaricare mappe Mapsforge sono i seguenti:

in particolare l’ultimo sito (bbbike.org) è comodo perchè permette di selezionare l’area (bounding box) per la quale interessa estrarre la mappa OSM, evitando così di scaricare mappe troppo estese.

Ma ripetiamo, se dovete usarle con Geopaparazzi, accertatevi che siano mappe in versione v3 (che comunque è la versione per adesso più diffusa) altrimenti non funzionano! Per verificare la versione di una mappa, si può usare per esempio  il programma Cruiser tramite la voce di menù Tools/Map info.

Quando si carica una mappa Mapsforge in Geopaparazzi viene visualizzata con lo stile/tema di default; se invece si vuole utilizzare un altro stile, allora bisogna caricare anche il relativo file XML e gli eventuali simboli grafici utilizzati (PNG, SVG) . Più precisamente nella stessa cartella della memoria dello smartphone, dovremo avere sia il file .map che il file .xml dello stile con lo stesso nome; per esempio: italy_cycle.map e italy_cycle.xml.

Una volta selezionata e visualizzata una mappa Mapsforge, oltre ad essere usata come sfondo, essendo essa costituita da elementi vettoriali, Geopaparazzi permette anche di filtrarli ed estrarli, salvandoli come tali. Per fare questo, nel menù che si attiva nella vista mappa in alto a destra, è presente la voce Estrai dati da mapsforge.

estrai da mapsforge

I dati vettoriali di OSM che è possibile estrarre sono:

  • punti (POI: Point Of Interest);
  • linee: strade, corsi d’acqua e curve di livello;

nel caso dei POI è possibile estrarre/filtrare i punti la cui descrizione (o meglio il tag OSM) contiene o non contiene (opzione: il filtro esclude) un certo “testo”. In entrambi i casi gli elementi estratti (punti e linee) sono solo quelli che ricadono nell’area geografica attualmente visualizzata nella vista mappa. Poichè alcuni POI  sono visibili per certi livelli di zoom, la ricerca interessa sia il livello corrente che i tre superiori (es: se la vista mappa corrente è a liv. zoom 16, vengono investigati anche i liv. 17, 18 e 19).

Gli elementi estratti dalla mappa Mapsforge vengono salvati:

  • i POI come note testuali (ovviamente georeferite) con  campi corrispondenti ai tag di OSM e nome che termina con (MF).
  • le linee in un apposito DB Spatialite predefinito (mapsforge_extracted.sqlite) costituito da tre layer: osm_contours (curve di livello), osm_roads (strade), osm_waterlines (corsi d’acqua);

dopodichè  questi possono essere  trattati ed editati autonomamente ed eventualmente sovrapposti ad altre basemaps.

mapsforge POI

Per accedere agli elementi salvati nel DB Spatialite, come per altri dati vettoriali di questo tipo, c’è l’apposita voce di menù Lista dati Spatialite e poi la possibilità di selezionare quali layer (curve di livello, strade, corsi d’acqua) visualizzare sulla mappa.

Poiché, come già detto, questi elementi estratti dalla mappa Mapsforge costituiscono dei layer vettoriali autonomi, possono poi essere eventualmente editati e modificati con gli strumenti che Geopaparazzi consente per questo tipo di dati.

Mapsforge Spatialite

 

condividi: