IT:Mappe OSM
- Usare le mappe sul GPS
- Srtm2Osm (en)
- Mkgmap (en)
Torna alle Tipologie di mappa
Torna al Portale Italiano
Mappe vettoriali da OpenStreetMap
In questa pagina sono raccolte informazioni utili per ricavare mappe vettoriali personalizzate da OSM, in particolare mappe escursionistiche ottimizzate per Russa GPS, software freeware per PC e PDA che supporta il formato .IMG oltre al formato proprietario .RUS convertibile da Mapedit.
Le stesse mappe possono essere utilizzate sui dispositivi portatili Garmin o da programmi che supportano il formato .IMG come gpsVP, Glopus o Navitel che utilizza un formato .nm2 convertibile da Mapedit.
Il vantaggio del formato vettoriale rispetto alle mappe raster (.jpeg, .map, .ecw) , oltre allla compattezza, è quello di potere sovrapporre vari strati e di gestirne la visualizzazione a seconda del livello di dettaglio impostato.
Utilizzando come base OpenStreetMap, si possono aggiungere altri "layer" vettoriali rappresentanti, ad esempio, le curve di livello del terreno oltre ad altri ottenibili da fonti diverse.
Russa GPS si presta molto bene ad essere utilizzato a questo scopo su dispositivi PDA con Windows CE: è una applicazione freeware leggera ed affidabile che consente la personalizzazione della modalità di rendering delle linee e delle aree.
A questo scopo si utilizzeranno alcune applicazioni descritte di seguito.
Le operazioni da effettuare sono:
- Ottenere il file mappa in formato OSM
- Ottenere il file contenente le curve di livello in formato OSM
- Trasformarli in files .IMG.
- Comporli tramite MapEdit
Ottenere le mappe in formato .OSM
Web browser
Limitatamente a piccole porzioni di territorio, il modo più veloce per scaricare mappe in formato .OSM è il browser.
Aprendo qualsiasi programma web browser (Mozilla firefox, Internet Explorer etc.) alla pagina OpensStreetMap e selezionando "Esporta" nella parte superiore della finestra, si aprirà una scheda dalla quale, selezionando l'opzione "Dati XML OpenStreetMap " tra i formati di esportazione, sarà possibile salvare sul proprio computer la mappa visualizzata nella finestra principale, o parrte di essa, nel formato .OSM.
JOSM
JOSM (it) può essere utilizzato per salvare i dati in formato .OSM, con il vantaggio di potere visualizzare sulla mappa l' area interessata o in alternativa definire i limiti di latitudine e longitudine.
Geofabrik
Geofabrik (en) mette a disposizione qua mappe in formato .OSM compresso nel formato .BZ2 relative all' Europa o divise in vari stati. E' il modo più veloce per ottenere mappe di grandi dimensioni.
Wget
Utilizzando le OSM Extended API (XAPI) e Wget è possibile ottenere mappe .OSM delimitate da coordinate geografiche definite.
Innanzi tutto è necessario scaricare da qui la versione compilata per Windows di Wget e quindi salvare il contenuto del file compresso in una cartella. Wget è un programma a riga di comando, per comodità può tornare utile creare nella stessa cartella un file .TXT da rinominare in .BAT contenente i parametri da passare a wget per effettuare il download del file .OSM.
Xapi è disponibile presso diversi server, ciascuno accessibile direttamente o tramite informationfreeway che reindirizzerà la richiesta ad un server a sua scelta.
- http://www.informationfreeway.org/api/0.6/... reindirizzerà la richiesta ad un server disponibile (scelta consigliata).
- http://open.mapquestapi.com/xapi/api/0.6/... di mapquest. il server ci mette un po' a rispondere (uno o due minuti) ma poi si scarica bene.
- http://osmxapi.hypercube.telascience.org/api/0.6... veloce server localizzato a San Diego.
- http://xapi.openstreetmap.org/api/0.5... è il server OSM standard, relativamente lento.
- http://osm.bearstech.com/osmxapi/api/0.6/... virtual machine di media capacità donata da Bearstech. I dati trasferiti da questo server, alla data del 15 giugno 2009 sono molto datati.
Bisogna tenere presente che questi server possono essere momentaneamente non disponibili.
La forma del comando è la seguente: wget URL del server/map?bbox=left,bottom,right,top -O filename.osm
dove:
- URL del server corrisponde ad uno dei server sopraelencati ( es.: http://www.informationfreeway.org/api/0.6/)
left
è la longitudine del lato a sinistra (left) (lato più a overt) del rettangolo di selezione.bottom
è la latitudine del lato in basso (bottom) (lato più a sud) del rettangolo di selezione.right
è la longitudine del lato a destra (lato più a est) del rettangolo di selezione.top
è la latitudine del lato in alto (lato più a nord) del rettangolo di selezione.filename
è il nome del file che vogliamo ottenere.
Esempi
wget http://www.informationfreeway.org/api/0.6/map?bbox=11.54,48.14,11.543,48.145 -O pippo.osm wget http://xapi.openstreetmap.org/api/0.5/map?bbox=11.54,48.14,11.543,48.145 -O pippo.osm
Nel file .BAT che avremo creato, sarà sufficiente scrivere la linea di comando desiderata, salvare il file ed eseguirlo per dare inizio al download. Poichè i dati sono in formato non compresso, il tutto può richiedere diverso tempo.
Tag Query
Con Xapi si può scegliere di estrarre una mappa contenente determinati tipi di nodi, ways e relazioni. Ad esempio, il comando:
wget http://www.informationfreeway.org/api/0.6/way[mtb:scale=*][bbox=9.20,43.70,12.80,45.15] -O emilia_mtb.osm
otterrà come risultato un file .osm contenente solamente le way contrassegnate con il tag mtb:scale dell' Emilia Romagna.
E' anche possibile selezionare operatori multipli. ad esempio:
way[highway=motorway|motorway_link|trunk|primary]
otterrà un file contenente solo le highway=motorway, highway=motorway_link, highway=trunk e highway=primary.
Questo risulta estremamente utile per ottenere mappe personalizzate. Ulteriori dettagli sul wiki di XAPI.
Osmosis
Osmosis è una applicazione java da linea di comando per manipolare file .osm anche di grandi dimensioni.
Può unire due o più file in un unico, estrarre un bounding box da un file e molto altro ancora.
Dopo aver scaricato il file .zip e dopo averlo decompresso, sotto Windows un modo semplice di usare Osmosis è quello di creare dei file .bat nella directory \bin di osmosis e scriverci il comando da eseguire.
E' importante che i files da trattare siano anch'essi nella directory \bin di osmosis.
Ad esempio, per estrarre un bounding box dal file italy.osm.bz2 scaricato da Geofabrik e scriverlo sul file myplanet.osm:
osmosis --rx italy.osm.bz2 --bounding-box top=44.90 left=11.00 bottom=44.00 right=12.00 --write-xml myplanet.osm
Per unire i due file uno.osm e due.osm in un unico chiamato tre.osm:
osmosis --rx uno.osm --rx due.osm --merge --wx tre.osm
Quest'ultimo comando consente,ad esempio, di unire le curve di livello ottenute con Srtm2Osm alla mappa osm.
Fare riferimento alla guida del programma per le possibili opzioni.
Ottenere le linee di livello con Srtm2Osm
Srtm2Osm (en) è una applicazione da riga di comando che permette di ottenere le linee altimetriche ricavate dai dati Shuttle Radar Topography Mission (SRTM) di una certa porzione di terreno, direttamente in formato OpenStreetMap. L'ultima versione dell' applicazione è scaricabile da qui.
Uso dell' applicazione
Salvare il file .zip e scompattarlo in una cartella dove potremo impostare il file .bat contenente il comando ed i parametri necessari.
E' necessario specificare l' area da coprire ad altri parametri accessorii.
L' area da coprire si può specificare in tre modi:
- Con l' opzione -bounds1 si possono specificare la minima e la massima latitudine/longitudine dell' area, per esempio:
-bounds1 46.51 15.57 46.5385 15.6356
- Con l' opzione -bounds2 si può specificare la latitudine la longitudine del centro dell' area da oltre il raggio (in kilometri) . ad esempio:
-bounds2 46.51 15.57 10
- Con l' opzione -bounds3 si può specificare l' URL della slippymap dell' area (l' URL deve essere racchiuso in parentesi). L' applicazione considererà il livello di zoom per determinare la grandezza dell' area da ottenere. Esempio:
-bounds3 "http://www.openstreetmap.org/?lat=47.63168944724306&lon=9.396385580645727&zoom=10&layers=0BF"
Attenzione: 46.51 sarà inyterpretato come 46.51 degrees, non come 46 gradi e 51 minuti.
Usando l' opzione -cat , l' applicazione aggiungerà un contour_ext tag addizionale per ogni linea di livello.
Il valore del tag rappresenterà la categoria della linea, (elevation_major, elevation_medium oppure elevation_minor).
Questo è molto utile per usare i dati con Mkgmap (en). Esempio:
-cat 400 100
marcherà le linee di livello che sono di altezza multipla di 400 mt come maggiori, quelle multiple di 100 mt come medie e le altre come minori.
Potremo quindi creare un file .bat nella stessa directory dove si trova il file Srtm2Osm.exe contenente il comando:
Srtm2Osm.exe -bounds1 46.51 15.57 46.5385 15.6356 -cat 200 50 -o miofile.osm
per ottenere i dati delle linee di livello nel file miofile.osm.
Per ottenere curve di livello di zone di grande dimensione si può procedere dividendo l' area in più parti da riunire poi con mapedit.
Indicativamente, una zona dell' estensione dell' Emilia Romagna può essere ottenuta dividendola in due parti.
Convertire le mappe da .OSM a .IMG
Mkgmap
Mkgmap (en) è un potente convertitore dal formato .OSM a .IMG, formato impiegato nei dispositivi Garmin e in programmi per PDA come Russa e gpsVP.
Personalizzando le definizioni di stile che il programma usa nella conversione, si possono modificare le corrispondenze tra i tag OSM ed i codici adottati dal formato .IMG adattandoli alle nostre necessità.
CreateIMG
CreateIMG è uno script batch che provvede a scaricare una mappa .OSM ed a tradurla nel formato .IMG di Garmin.
Per default scarica e converte la mappa dell' Italia, ma modificando alcuni parametri del file CreateIMG.bat è possibile ottenere altre mappe o tradurre un file .OSM qualunque ottenuto in precedenza.
CreateIMG impiega mkgmap per la conversione che può essere quindi completamente personalizzata.
Scaricate il file .zip e scompattatelo in una cartella.
Per convertire un file .OSM ottenuto tramite browser o Wget, sono necessarie le seguenti semplici operazioni:
- Modificare il comando
set country=italy
presente nel file CreateImg.bat inset country=
In questo modo lo script chiederà sempre il nome del file da tradurre e, se lo troverà nella cartella OSM-Data, lo convertirà.
- Trasferire il file .OSM da convertire nella cartella OSM-Data
- Eseguire il file CreateImg.bat immettendo il nome del file da convertire.
Lo script, eseguendo mkgmap, può utilizzare diversi fogli di stile presenti nelle sottodirectory Styles.
Come vedremo in seguito, utilizzando un foglio di stile personalizzato è possibile definire la corrispondenza tra i tag OSM ed i codici del formato .IMG Garmin.
Per fare questo, basta modificare nella riga di comando del file CreateImg.bat il comando
set style=drivemap
specificando la directory contenente il foglio di stile scelto.
Mkgmap GUI
Mkgmap GUI è una interfaccia grafica di Mkgmap che consente la conversione in .IMG e l' unione di più files .OSM. Salvare il file mkgmapgui.jar nella stessa directory dove risiede Mkgmap.
Personalizzare le mappe .IMG
Mentre il formato usato da OSM impiega una serie di "tag" come ad esempio "highway=residential" per definire le entità , il formato .IMG sviluppato per i navigatori Garmin prevede dei codici numerici esadecimali che definiscono la tipologia dei punti, delle linee e delle aree.
I codici usati per le entità di tipo linea, ad esempio, sono i seguenti (tabella ricavata da GPS MapEdit):
Codice | Categoria | Descrizione |
---|---|---|
0x0000 | Roads | Road |
0x0001 | Roads | Mayor highway |
0x0002 | Roads | Principal highway |
0x0003 | Roads | Other highway road |
0x0004 | Roads | Arterial roads |
0x0005 | Roads | Collector roads |
0x0006 | Roads | Residential streets |
0x0007 | Roads | Alleyway/private driveway |
0x0008 | Roads | Highway ramp, low-speed |
0x0009 | Roads | Highway ramp, high-speed |
0x000a | Roads | Unpaved road |
0x000b | Roads | Major highway connector |
0x0006 | Roads | Residential streets |
0x0007 | Roads | Alleyway/private driveway |
0x0008 | Roads | Highway ramp, low-speed |
0x0009 | Roads | Highway ramp, high-speed |
0x000a | Roads | Unpaved road |
0x000b | Roads | Major highway connector |
0x0014 | Roads | Railroad |
0x0015 | Water | Shoreline of water body |
0x0016 | Roads | Walkway/trail |
0x0018 | Water | Stream |
0x0019 | Boundaries | Time-zone |
0x001a | Water | Water or rail ferry |
0x001b | Water | Water or rail ferry |
0x001b | Water | Water or rail ferry |
0x001c | Boundaries | State/province boundary |
0x001d | Boundaries | County/parish boundary |
0x001e | Boundaries | International boundary |
0x001f | Water | River |
0x0020 | Elevation | Minor land contour |
0x0021 | Elevation | Interm. land contour |
0x0022 | Elevation | Major land contour |
0x0023 | Elevation | Minor depth contour |
0x0024 | Elevation | Interm. depth contour |
0x0025 | Elevation | Major depth contour |
0x0026 | Water | Intermittent stream/ditch |
0x0027 | Man made | Airport runway centerline |
0x0028 | Man made | Oil or water pipeline |
0x0029 | Man made | Power line |
0x002a | Water | Marine boundary (no line) |
0x002b | Water | Marine hazard (no line) |
La conversione dei tag di attributo dei file .OSM in codici usati nel formato .IMG avviene tramite i fogli di stile presenti nelle sottocartelle "resources\styles\..." sia in Mkgmap che in CreateIMG che lo usa.
Aprendo i files "lines", "points" e "poligons" con un editore di sorgente, potremo vedere che questi files stabiliscono la corrispondenza tra i tag assegnati da OSM per definire linee, punti e poligoni ed i codici usati del formato .IMG.
Il foglio di stile assegna all' entità anche il nome alla way ed il livello di zoom a cui viene visualizzata oltre ad informazioni utili per il routing.
Ad esempio, la riga seguente:
highway=motorway [0x01 road_class=4 road_speed=6 resolution 14]
assegnerà alle way con tag=motorway il codice 0x01 e le renderà visualizzabili dal livello di zoom 14 mentre la seguente:
highway=tertiary {name '${name} (${ref})' | '${ref}' | '${name}' }
comporrà il nome visualizzato delle highway=tertiary usando l' attributo "name" e l' attributo "ref".
In questo modo, ad esempio, si può visualizzare una highway=track mostrandone non solo il nome ma anche il grado (tracktype), il riferimento CAI, l' attributo btb:scale etc, riportando sulla mappa le informazioni contenute nel database OSM.
La seguente istruzione:
highway=unclassified & access=private & (area!=yes & area!=true & area!=1) [0x37 road_class=1 road_speed=1 resolution 22]
assegna il codice 0x37 alle highway=unclassified con access=private e non definite come area.
Questo sistema permette di creare categorie di way configurate a piacere ed alle quali assegnare un codice.
Codici personalizzati per Russa GPS
E' possibile definire ulteriori codici ed assegnarli a determinati tipi di linee per ottenere mappe personalizzate.
Il nuovo codice, una volta assegnato da Mkgmap tramite il foglio di stile "lines", deve poi essere supportato da Mapedit e quindi da Russa per la corretta visualizzazione dell' entità corrispondente.
La tabella seguente, frutto di prove empiriche, comprende una possibile serie di codici assegnabili alle way che rispondono a questi requisiti, completi della corrispondenza con i tag OSM che ho scelto di assegnargli e del livello di zoom a cui viene visualizzato.
Codice | Tag | Livello |
---|---|---|
0x0000 | higway=trunk_link | 16 |
0x0001 | higway=motorways, higway=motorways_link & lanes>1 | 14 |
0x0002 | higway=trunks | 16 |
0x0003 | higway=primary | 18 |
0x0004 | higway=secondary - secondary_link | 20 |
0x0005 | higway=tertiary - tertiary_link | 22 |
0x0006 | higway=unclassified, higway=residentials, higway=service, higway=living_street, highway=service, highway=living_street | 22 |
0x0007 | non usato | |
0x0008 | higway=primary_link | 18 |
0x0009 | higway=motorways_link | 14 |
0x000a | higway=track, surface=unpaved, highway=unsurfaced, highway=unpaved | 22 |
0x000b | non usato | |
0x000c | higway=footway | 22 |
0x000d | higway=pedestrian | 22 |
0x000e | higway=track grade=1 | 22 |
0x000f | higway=track grade=2 | 22 |
0x0010 | higway=track grade=3 | 22 |
0x0011 | higway=track grade=4 | 22 |
0x0012 | higway=track grade=5 | 22 |
0x0013 | higway=steps | 24 |
0x0014 | railway=rail | 18 |
0x0015 | natural=coastline | 14 |
0x0016 | higway=cycleway | 24 |
0x0017 | higway=bridleway, higway=byway | 24 |
0x0018 | waterway=stream | 24 |
0x0019 | non usato | |
0x001a | Route=ferry | 18 |
0x001b | non usato | |
0x001c | boundary=administrative, boundary=political | 22 |
0x001d | boundary=administrative + admin_level<7 | 16 |
0x001e | boundary=national, boundary=administrative+admin_level<3 | 14 |
0x001f | waterway=river, waterway=canal, waterway=drain | 22 |
0x0020 | contour=elevation + contour_ext=elevation_minor | 23 |
0x0021 | contour=elevation + contour_ext=elevation_medium | 21 |
0x0022 | contour=elevation + contour_ext=elevation_major | 20 |
0x0023 | non usato, riservato a contiur_ext=depth_minor | |
0x0024 | non usato, riservato a contiur_ext=depth_medium | |
0x0025 | non usato, riservato a contiur_ext=depth_major | |
0x0026 | non usato | |
0x0027 | aeroway=runway | 20 |
0x0028 | man_made=pipeline | 24 |
0x0029 | power=line | 24 |
0x0030 | highway=all + tunnel=yes | 14-22 |
0x0031 | natural=cliff | 24 |
0x0032 | barrier=wall, barrier=retaining_wall, barrier=city_wall, barrier=fence, barrier=hedge | 24 |
0x0033 | non usato | |
0x0034 | non usato | |
0x0035 | higway=path | 22 |
0x0036 | (higway=unclassified, higway=residentials) + cycleway=lane, cycleway=opposite_lane | 22 |
0x0037 | (higway=unclassified, higway=residential, higway=pedestrian) + access=private, highway=raceway | 22 |
0x0038 | aerialway=chair_lift, aerialway=drag_lift, aerialway=cable_car | 24 |
0x0039 | (higway=unclassified, higway=residential, higway=pedestrian) + access=permissive | 22 |
0x003d | non usato | |
0x003e | non usato | |
0x003f | railway=light_rail, railway=subway, railway=tram | 20 |
Come si può notare, alcune definizioni ricalcano quelle standard ma altre sono finalizzate esclusivamente ad essere mostrate da Russa con una renderizzazione distinta.
Dalla stessa mappa OSM, modificando il foglio di stile caricato da mgkmap, è quindi possibile ottenere file .IMG differenti a seconda dell' impiego previsto.
Alcuni codici non usati sono disponibili per ulteriori definizioni o per essere assegnati a layer importati da shapefile od altri.
Comporre i files .IMG com MapEdit
MapEdit è il programma impiegato per unire diversi files .IMG, per importare files .SHP e per salvare il tutto in vari formati vettoriali tra i quali .IMG (previa installazione di cGPSmapper), .RUS (usato da Russa GPS), oltre ad diversi altri formati vettoriali.
Altre interessanti funzionalità del programma, come il supporto a files .ecw e la visualizzazione in background delle foto satellitari di Google, sono disponibili nella versione a pagamento; per il nostro scopo è sufficiente la versione free.
Scaricato il programma e scompattato il file .zip, si può procedere creare la nostra mappa personalizzata innanzi tutto caricando il file .IMG contenente i dati .OSM convertiti.
E' possibile a questo punto anche editare le entità caricate, eliminando ad esempio quelle indesiderate selezionandole per tipologia e cancellandole.
Si può quindi procedere aggiungendo il file .IMG con le curve di livello ed eventualmente ritagliando la zona di interesse da una mappa più grande.
Ad esempio, si possono ottenere i files .IMG contenenti le curve di livello di tutta la vostra regione in un unico file per poi ritagliarsi di volta in volta la zona di interesse.
L' importazione di shapefile e l' unione di questi nella mappa è una funzionalità molto importante in quanto si possono aggiungere dati non presenti nel database OSM ma provenienti da altre fonti.
Ad esempio, si possono inserire i grafi estremamente dettagliati relativi all' idrografia ottenibili tramite WFS dal Portale Cartografico Nazionale o i tracciati dei sentieri CAI scaricabili dal sito cartografico dell' Emilia Romagna.
A questi dati si potrà assegnare, al momento dell' importazione su MapEdit, sia un codice relativo ad entità esistenti, sia un nuovo codice scelto tra quelli disponibili, a cui assegnare uno stile di visualizzazione tale da evidenziarlo in modo particolare.
Altra possibilità interessante è l' inserimento di itinerari pianificati nella mappa, a questo scopo si potrà tracciarli su Google Earth, salvarli come files .kml o .kmz, tradurli in .shp ed importarli in MapEdit assegnandogli un codice tra quelli disponibili per poterli evidenziare in uno stile personalizzato sia in Mapedit che in Russa GPS come vedremo tra breve.
Configurazione stili di MapEdit
Si può modificare a piacere lo stile di visualizzazione dei punti, linee ed aree su Mapedit modificando il file .TXT (versione decodificata dei file di stile .TYP del formato .IMG Garmin) presente nella directory _BookmarkTypes di MapEdit.
Il modo più semplice per editarlo, o per di crearne uno completamente nuovo e con parametri personalizzati, è quello di utilizzare questo sito dove è disponibile un ottimo editore online di file .TYP, con la possibilità di decodificarlo e salvarlo in formato .TXT.
Tramite questo editore si può mettere a punto il tipo di visualizzazione ottimale, sia su MapEdit che sui dispositivi Garmin.
Configurazione stili di Russa GPS
I files "day.skin" e "night.skyn", presenti nella cartella del programma, contengono rispettivamente le definizioni dello stile di visualizzazione diurno e di quello notturno.
Possono essere modificati con un editore testuale per ottenere lo stile desiderato delle linee e delle aree oltre che il colore dello sfondo definibile nella prima riga del file.
La righe riguardanti lo stile delle linee hanno questa struttura:
4 0 solid 6 7 black solid 4 0 fdd6a4 medium black false
dove, nell' ordine, specifica:
- Codice della linea - non usato - tipo di linea (solid, dot) - larghezza linea di fondo - non usato - colore linea di fondo - tipo linea sovrapposta (solid, dot) - larghezza linea sovrapposta - non usato - colore linea sovrapposta - tipo di carattere dell' etichetta (medium, small) - colore del carattere dell' etichetta - etichetta sovrapposta o meno alla linea (true, false)
I colori usabili possono essere specificati sia con il nome (black, red etc.) sia con il codice esadecimale.
Il tipo di linea dot può avere larghezza solamente pari ad 1 e non è configurabile in lunghezza.
I campi definiti come "non usato" sembra non producano nessun cambiamento alla visualizzazione.