TMap
Da MontelLUG WIKI.
TMap
TMap nasce come strumento per creare delle mappe statiche utilizzando come sorgente i dati resi disponibili dal progetto OpenStreetMap. L'idea è nata dalla richiesta di un visitatore presente al Linux Day 2014 : come possiamo creare delle mappe personalizzate? TMap consente di visualizzare solo quello di cui si ha bisogno e ci assiste in tutte le fasi della creazione.
Requisiti
TMap per funzionare richiede la presenza di Osmosis. Questo programma è scaricabile all'indirizzo http://wiki.openstreetmap.org/wiki/Osmosis Il percorso di installazione di Osmosis deve essere inserito nella variabile di ambiente PATH.
Sulla mia LinuxMint ho aggiunto al file '/home/utente/.profile' la riga PATH="$PATH:/opt/osmosis/bin"
Download delle mappe
Innanzitutto bisogna scaricare le mappe del territorio che si vuole rappresentare. TMap scarica le mappe dal sito download.geofabrik.de per quelle internazionali oppure da geodati.fmach.it per i soli estratti regionali italiani.
tmap.exe --download asia
tmap.exe --download europe
tmap.exe --download europe/italy
tmap.exe --download valle-aosta
tmap.exe --download veneto
Conversione di una mappa
Le mappe sono scaricate normalmente in formato Protocol Buffer (PBF) perché i file sono più piccoli e più veloci da elaborare. Con Osmosis è possibile convertire le mappe anche in formato XML e viceversa.
osmosis --read-xml file=mappa.osm --write-pbf file=mappa.pbf
osmosis --read-pbf file=mappa.pbf --write-xml file=mappa.xml
Creare un estratto
Se si intende lavorare molto con uno specifico tipo di dati (ad esempio, i confini amministrativi), conviene creare un estratto dei dati. Il dato tra parentesi quadre indica semplicemente che il comando --tf (tag filter) può essere ripetuto più volte con parametri differenti per affinare la ricerca.
osmosis --read-pbf file=mappa.pbf --tf accept-relations boundary=administrative [ --tf accept-relations admin_level=4 ] --uw --un --write-pbf file=estratto.pbf
Estrarre un confine amministrativo
Possiamo estrarre un confine amministrativo, ad esempio quello della nostra città, con il comando --extract-poly. I significato di admin_level è ben documentato in http://wiki.openstreetmap.org/wiki/Key:admin_level
tmap.exe --extract-poly mappa.pbf boundary=administrative,admin_level=4,name=Veneto veneto.poly
tmap.exe --extract-poly mappa.pbf boundary=administrative,admin_level=6,name=Treviso treviso.poly
tmap.exe --extract-poly mappa.pbf boundary=administrative,admin_level=8,name=Montebelluna montebelluna.poly
tmap.exe --extract-poly mappa.pbf boundary=administrative,admin_level=8,name=Castelfranco\ Veneto castelfranco.poly
In alternativa è possibile utilizzare una sintassi abbreviata:
tmap.exe --extract-poly mappa.pbf regione,name=Veneto veneto.poly
tmap.exe --extract-poly mappa.pbf provincia,name=Treviso treviso.poly
tmap.exe --extract-poly mappa.pbf città,name=Montebelluna montebelluna.poly
Iniziamo a vedere i primi risultati
Per disegnare il nostro confine su una immagine usiamo il comando --draw-poly. L'esempio seguente disegna l'area del Veneto di colore rosso e con un contorno nero di spessore 5 pixel. L'opzione --xml-info ci permetterà, in un secondo momento, di introdurre ulteriori contenuti nella mappa.
tmap.exe --draw-poly veneto.poly veneto.png --scale 2000 --xml-info --drawStyle mixed --drawFillColor FF0000 --drawOutlineColor 000000 --drawOutlineWidth 5
Ma se volessimo vedere le singole province?
tmap.exe --draw-poly veneto.poly veneto.png --scale 2000 --xml-info --drawStyle outline --drawOutlineColor 000000 --drawOutlineWidth 5
tmap.exe --draw-poly treviso.poly veneto.png --xml-info --drawStyle mixed --drawFillColor FFFF00 --drawOutlineColor 000000 --drawOutlineWidth 2
tmap.exe --draw-poly belluno.poly veneto.png --xml-info --drawStyle mixed --drawFillColor 00FFFF --drawOutlineColor 000000 --drawOutlineWidth 2
...
Disegnare dei punti di interesse
Per disegnare dei punti di interesse (o nodi in generale) utilizziamo il comando --draw-nodes. L'esempio seguente inserisce la posizione degli ottici presenti nel territorio:
tmap.exe --draw-nodes mappa.pbf shop=optician veneto.png --scale 2000 --xml-info --ds outline --dfc FF0000 --doc 000000 --dw 10 --dow 2 --dsym circle
E se volessimo anche il nome di questi negozi? Aggiungiamo al comando precendente queste opzioni:
--draw-name --fn Arial --fs 12 --fp topMiddle
E se volessimo dare una preferenza per il nome in una variante linguistica specifica? Aggiungiamo al comando queste opzioni:
--language en
E se volessimo velocizzare il comando usando più core? Aggiungiamo al comando queste opzioni (N = numero di core da utilizzare):
--core N
Disegnare strade ed edifici
Per disegnare le strade o gli edifici utilizziamo il comando --draw-ways. L'esempio seguente inserisce le strade più importanti:
tmap.exe --draw-ways mappa.pbf highway=primary veneto.png --scale 2000 --xml-info --ds fill --dfc 000000 --dw 10
Per disegnare gli edifici o un'area un generale aggiungiamo l'opzione --area :
tmap.exe --draw-ways mappa.pbf building=* montebelluna.png --scale 20000 --xml-info --ds mixed --dfc FF0000 --doc 000000 --ds 1 --area
Opzioni
--scale <int> | la dimensione finale dell'immagine sarà width=<larghezza_chilometri>*scale, height=<altezza_chilometri>*scale |
--debug | abilita la visualizzazione delle informazioni di debug |
--xml-info | memorizza alcune informazioni relativa alla mappa su un file xml in modo da poter aggiungere ulteriori dettagli in un secondo momento |
--drawStyle <string> (--ds) |
consente di specificare la modalità di visualizzazione di un oggetto. I valori possibili sono:
|
--drawFillColor <RRGGBB> (--dfc) |
consente di specificare il colore da utilizzare per il riempimento in formato ARGB. Il canale alpha (trasparenza) è supportato solo da alcuni formati immagine. I valori possibili sono:
|
--drawFillColor2 <RRGGBB> (--dfc2) |
consente di specificare il colore da utilizzare per il riempimento in formato ARGB delle inner ways (--draw-poly). Il canale alpha (trasparenza) è supportato solo da alcuni formati immagine. I valori possibili sono:
|
--drawOutlineColor <RRGGBB> (--doc) |
consente di specificare il colore da utilizzare per il contorno in formato ARGB. Il canale alpha (trasparenza) è supportato solo da alcuni formati immagine. I valori possibili sono:
|
--drawOutlineColor2 <RRGGBB> (--doc2) |
consente di specificare il colore da utilizzare per il contorno in formato ARGB delle inner ways (--draw-poly). Il canale alpha (trasparenza) è supportato solo da alcuni formati immagine. I valori possibili sono:
|
--drawWidth <int> (--dw) |
consente di specificare lo spessore della linea di riempimento (--draw-ways) |
--drawOutlineWidth <int> (--dow) |
consente di specificare lo spessore della linea di contorno |
--drawSymbol <string> |
Consente di specificare come deve essere visualizzato il nodo. I valori possibili sono:
|
--pos <int o string> |
indica in quale posizione deve essere messo il testo descrittivo di un nodo o il relativo marker. I valori possibili sono:
|
--drawName |
indica che devono essere visualizzati i nomi dei nodi (tag name) |
--fontName <string> --fn |
consente di specificare il tipo di carattere da utilizzare per scrivere i testi (es. Arial) |
--fontSize <int> --fs |
consente di specificare la dimensione del carattere da utilizzare per scrivere i testi |
--fontColor <RRGGBB> (--fc) |
consente di specificare il colore da utilizzare per scrivere i testi. Il canale alpha (trasparenza) è supportato solo da alcuni formati immagine. I valori possibili sono:
|
--language <string> |
consente di specificare, se presente, una preferenza linguistica per i nomi visualizzati (es, it) |
--area |
indica che le way sono aree (edifici, piazze, ...) |
Licenza
Il programma è un software libero rilasciato in licenza GPL.
Download
Potete scaricare i sorgenti oppure l'eseguibile
Contatti
Per qualsiasi richiesta e commento potete scrivere a stefano.fraccaro chiocciola gmail punto com