nel file ~/opt/navit/navit/navit.xml aggiungiamo il seguente blocco di testo:
<mapset enabled="yes"> <map type="binfile" enabled="yes" data="/home/utente/opt/navit/navit/maps/italy.bin" /> </mapset>
avendo cura di sostituire a /home/utente il path della nostra home directory e di cambiare il valore "mapset enabled" a "no" in tutti gli altri blocchi per abilitare soltanto la mappa italiana.
OpenStreetMap (http://www.openstreetmap.org/) aggiorna le proprie mappe continuamente, quindi sarebbe il caso di pensare ad un sistema per poter avere disponibili sempre quelle più aggiornate.
Si potrebbe ogni volta scaricare la mappa aggiornata e rimuovere quella esistente, ma perchè sprecare banda?
Sicuramente più "economico" è, invece, tenere traccia dell'header della mappa utilizzata, confrontarlo con quello della mappa presente sul sito di OpenStreetMap, fare la sostituzione solo nel caso in cui essi differiscano.
Il tutto, poi, assegnarlo ad anacron perchè l'aggiornamento avvenga in automatico.
Creiamo lo script ~/bin/mapupdate:
#!/bin/bash # mapupdate # script to update navit maps # author: pmate # email: pmatehome@gmail.com # set the variables NAVPATH=$HOME/opt/navit/navit NAVMAPPATH=$HOME/opt/navit/navit/maps MAPLOG=$HOME/opt/navit/navit/maps/mapupdate.log MAP=italy.osm.bz2 MAPBIN=italy.bin # if mapudate.log doesn't exist, creates it if [ ! -e $MAPLOG ] ; then touch $MAPLOG fi # retrieve ETag information from the map file header and put it in a temp file curl -I http://download.geofabrik.de/osm/europe/$MAP \ | grep ETag > $NAVMAPPATH/mapupdate.log.temp # check if files are the same if diff $MAPLOG $NAVMAPPATH/mapupdate.log.temp > /dev/null ; then wget http://download.geofabrik.de/osm/europe/$MAP rm $NAVMAPPATH/$MAPBIN #cd $HOME/opt/navit/navit bzcat $MAP | $NAVPATH/osm2navit $NAVMAPPATH/$MAPBIN rm $MAPLOG mv $NAVMAPPATH/mapupdate.log.temp $NAVMAPPATH/mapupdate.log # this is useful in the case that anacron updates the maps chown $USER:$USER $NAVMAPPATH/mapupdate.log chown $USER:$USER $NAVMAPPATH/$MAPBIN # echoes a message echo "Map updated!" else echo "No updated map." echo "Skipping..." fi