Il 05/07/2016 13:02, Max1234Ita ha scritto:
Ho provato a scaricare lo "script": 419 mega mi sembrano un po' tantini per
un po' di codice... o-O
Il "mero" script è questo:
=======================
#!/bin/bash
# Questo script utilizza Splitter e OsmAndCreator per suddividere
# un file .osm.pbf o un file .osm.bz2 in molte sottomappe,
# per ignuna di esse crea una mappa .obf navigabile con OsmAnd
# e un file unico per la ricerca degli indirizzi.
# Autore: Stefano Droghetti
# Licenza: GPL
# Schermata di presentazione
zenity --info --title="Osmux" --text="Questo script converte una
mappa\nOSM dal formato .osm.bz2 o .osm.pbf\nnel formato obf per OsmAnd."
# Chiedo quanta memoria minima deve avere (richiesto per Java)
MINIMO=`zenity --entry --height=300 --width=240 --title="Osmux"
--text="Memoria minima da utilizzare in MB (default=128MB)"`
# Se non viene scritto nulla, si prende il default
if [ "$MINIMO" = "" ]; then
MINIMO=128
fi
# Se non è un nmero, esce
if ! [ "$MINIMO" -eq "$MINIMO" ] 2> /dev/null
then
zenity --info --title="Osmux" --text="Solo numeri interi!\nBye bye!"
exit
fi
echo $MINIMO
# Stessa cosa di prima, per la memoria massima
MASSIMO=`zenity --entry --height=300 --width=240 --title="Osmux"
--text="Memoria massima da utilizzare in MB (default=3000MB)"`
if [ "$MASSIMO" = "" ]; then
MASSIMO=3000
fi
if ! [ "$MASSIMO" -eq "$MASSIMO" ] 2> /dev/null
then
zenity --info --title="Osmux" --text="Solo numeri interi!\nBye bye!"
exit
fi
echo $MASSIMO
# Chiede dov'è il file OSM da convertire
DIRFILE=`zenity --file-selection --title="Seleziona il file .osm.bz2 o
osm.pbf da convertire"`
if [ "$DIRFILE" = "" ]; then
zenity --info --title="Osmux" --text="Bye bye!"
exit
fi
# Controlla che il file sia di tipo consenstito e mette
# nome file, cartella, estensione eccetera in varie variabili
ESTENSIONE=".osm.bz2"
ESTENSION2=".osm.pbf"
NOMEFILE=`basename $DIRFILE`
BASEFILE=${NOMEFILE%%$ESTENSIONE}
if [ $BASEFILE = $NOMEFILE ]; then
BASEFILE=${NOMEFILE%%$ESTENSION2}
fi
ESTENS=${NOMEFILE##$BASEFILE}
echo "DIRFILE = $DIRFILE"
echo "NOMEFILE = $NOMEFILE"
echo "BASEFILE = $BASEFILE"
echo "ESTENS = $ESTENS"
if [ "$ESTENS" != "$ESTENSIONE" -a "$ESTENS" != "$ESTENSION2" ]; then
zenity --error --title="Errore" --text="Sono ammessi soltanto file
di tipo $ESTENSIONE o $ESTENSION2"
exit
fi
# Cancella file inutili
cd osmand-gen
rm *.*
cd ..
cd osmand-pbf
rm *.*
cd ..
cd tmp
rm *.*
cd ..
cd osmand-obf
rm *.*
cd ..
rm *.log
# Fa partire il cronometro
START=$(date +%s.%N)
# Usa splitter per suddividere le mappe
cd tmp
echo -e "\n\n\n\nDivisione della mappa in piccole sottomappe...\n\n\n\n\n"
java -Xms${MINIMO}M -Xmx${MASSIMO}M -jar ../splitter/splitter.jar $DIRFILE
mv *.osm.pbf ../osmand-pbf
cd ..
# Converte ognuna della mappe in .obf
echo -e "\n\n\n\nCreazione delle mappe .obf...\n\n\n\n\n"
cd OsmAndMapCreator-main
java -Djava.util.logging.config.file=logging.properties -Xms${MINIMO}M
-Xmx${MASSIMO}M -cp
"./OsmAndMapCreator.jar:lib/OsmAnd-core.jar:./lib/*.jar"
net.osmand.data.index.IndexBatchCreator ../batch-normale.xml
# Usa le mappe .obf create per creare un unico file di indirizzi
echo -e "\n\n\n\nUnione delle mappe in un unico file...\n\n\n\n\n"
java -Djava.util.logging.config.file=logging.properties -Xms${MINIMO}M
-Xmx${MASSIMO}M -cp
"./OsmAndMapCreator.jar:lib/OsmAnd-core.jar:./lib/*.jar"
net.osmand.MainUtilities merge-index ../osmand-obf/${BASEFILE}.obf
--address ../osmand-obf/${1}*.obf
cd ..
# Cancella i file inutili e rinomina le mappe.
cd osmand-obf
rm *.log
rm 6324*.*
cd ..
cd osmand-gen
rm *.*
cd ..
cd osmand-pbf
rm *.*
cd ..
cd tmp
rm *.*
cd ..
# Ferma il cronometro e calcola quanto ci ha messo
END=$(date +%s.%N)
DIFF=$(echo "$END - $START" | bc)
TEMPO=`date -d@$DIFF -u +%H:%M:%S`
# Schermata finale con apertura cartella con i file creati
zenity --info --title="Osmux" --text="Si aprira' ora una
finestra\ncontenente il file da copiare\nnella cartella di OsmAnd sullo
smartphone.\n\nMappa creata in $TEMPO"
xdg-open osmand-obf
echo "Bye bye!"
exit
=============================
A cui bisogna aggiungere il file chiamato batch-normale.html
<?xml version="1.0" encoding="utf-8"?>
<batch_process>
<process_attributes mapZooms="" renderingTypesFile=""
zoomWaySmoothness="" osmDbDialect="sqlite"
mapDbDialect="sqlite" />
<process directory_for_osm_files="../osmand-pbf"
directory_for_index_files="../osmand-obf"
directory_for_generation="../osmand-gen"
skipExistingIndexesAt="../osmand"
indexPOI="true" indexRouting="true" indexMap="true"
indexTransport="true" indexAddress="true"/>
</batch_process>
===============================
Lo script auto.sh l'ho modificato ulteriormente e adesso mette la data
nel nome del file:
#!/bin/bash
# Questo script utilizza Splitter e OsmAndCreator per suddividere
# un file .osm.pbf o un file .osm.bz2 in molte sottomappe,
# per ignuna di esse crea una mappa .obf navigabile con OsmAnd
# e un file unico per la ricerca degli indirizzi.
# Versione automatizzata per l'Italia: scarica e compila tutto da solo
# Autore: Stefano Droghetti
# Licenza: GPL
echo -e "\n\nQuesto script converte una mappa\nOSM dal formato .osm.bz2
o .osm.pbf\nnel formato obf per OsmAnd.\n\n\n"
# Parametri da cambiare all'uopo
MINIMO=128
MASSIMO=2000
FILEPAESE=italy-latest # Nome del file .osm.pbf corrispondente al paese
da scaricare (controllare su http://download.geofabrik.de/europe.html)
PAESE=Italy # Nome del paese da scaricare
# Scarica l'ultima mappa
echo -e "Scarico l'ultima mappa disponibile per la seguente nazione:
$PAESE\n\n\n"
# Trova la data della mappa e la aggiunge al nome del file
VERSIONE=`curl -s "http://download.geofabrik.de/europe.html" | egrep -o
"contains all OSM data up to .{10}" | egrep -o ".{10}$"`
rm *.pbf
aria2c http://download.geofabrik.de/europe/italy-latest.osm.pbf
mv ./$FILEPAESE.pbf ./$PAESE.osm.pbf
# Cancella file inutili
echo -e "Rimozione file obsoleti\n\n\n"
cd osmand-gen
rm *.*
cd ..
cd osmand-pbf
rm *.*
cd ..
cd tmp
rm *.*
cd ..
cd osmand-obf
rm *.*
cd ..
rm *.log
# Fa partire il cronometro
START=$(date +%s.%N)
# Usa splitter per suddividere le mappe
cd tmp
echo -e "\n\n\n\nDivisione della mappa in piccole sottomappe...\n\n\n\n\n"
java -Xms${MINIMO}M -Xmx${MASSIMO}M -jar ../splitter/splitter.jar
../$PAESE.osm.pbf
mv *.osm.pbf ../osmand-pbf
cd ..
# Converte ognuna della mappe in .obf
echo -e "\n\n\n\nCreazione delle mappe .obf...\n\n\n\n\n"
cd OsmAndMapCreator-main
java -Djava.util.logging.config.file=logging.properties -Xms${MINIMO}M
-Xmx${MASSIMO}M -cp
"./OsmAndMapCreator.jar:lib/OsmAnd-core.jar:./lib/*.jar"
net.osmand.data.index.IndexBatchCreator ../batch-normale.xml
# Usa le mappe .obf create per creare un unico file di indirizzi
echo -e "\n\n\n\nUnione delle mappe in un unico file...\n\n\n\n\n"
java -Djava.util.logging.config.file=logging.properties -Xms${MINIMO}M
-Xmx${MASSIMO}M -cp
"./OsmAndMapCreator.jar:lib/OsmAnd-core.jar:./lib/*.jar"
net.osmand.MainUtilities merge-index ../osmand-obf/Italy.obf --address
../osmand-obf/${1}*.obf
cd ..
# Cancella i file inutili e rinomina le mappe.
cd osmand-obf
rm *.log
rm 6324*.*
cd ..
cd osmand-gen
rm *.*
cd ..
cd osmand-pbf
rm *.*
cd ..
cd tmp
rm *.*
cd ..
# Ferma il cronometro e calcola quanto ci ha messo
END=$(date +%s.%N)
DIFF=$(echo "$END - $START" | bc)
TEMPO=`date -d@$DIFF -u +%H:%M:%S`
# Rinomina il file aggiungendo la data di download dei dati originali
cd osmand-obf
mv ./$PAESE.obf ./$PAESE.$VERSIONE.obf
cd ..
# apertura cartella con i file creati
echo -e "Mappa creata in $TEMPO"
echo -e "\nSi aprirà ora una finestra\ncontenente il file da
copiare\nnella cartella di OsmAnd sullo smartphone"
xdg-open osmand-obf
echo -e "\n\nBye bye!"
exit
===============================
Dentro la cartella in cui metti auto.sh, go.sh e batch-normale.html devi
mettere anche queste cartelle:
osmand-gen (vuota)
osmand-pbf (vuota)
osmand-obf (vuota)
tmp (vuota)
splitter (con dentro l'ultima versione di Splitter)
OsmAndMapCreator-main (con dentro l'ultima versione di OsmAndMapCreator)
--
Stefano Droghetti
www.stefanodroghetti.it
stefano.droghe...@gmail.com
_______________________________________________
Talk-it mailing list
Talk-it@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-it