IT:Mappe OSM

From OpenStreetMap Wiki
Jump to navigation Jump to search
Pictogram voting info.svg
Vedi anche...



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.

Mappa OSM su RussaGPS con curve di livello e grafi orografia


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.

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 in
    set 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.

Mappa OSM su RussaGPS con in evidenza gli itinerari in programma

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.