[Talk-it] Script per creare mappe obf (OsmAnd) senza problemi di OutOfMemory

Stefano Droghetti stefano.droghetti a gmail.com
Mar 5 Lug 2016 17:38:47 UTC


Errata corrige per lo script chiamato auto.sh :

#!/bin/bash

# Questo script utilizza Splitter e OsmAndCreator per suddividere
# un file .osm.pbf o un file .osm.bz2 in molte sottomappe,
# per ognuna 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=Italia            # 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/$FILEPAESE.osm.pbf
mv ./$FILEPAESE.osm.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/$PAESE.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 "\nSi aprirà ora una finestra\ncontenente il file da 
copiare\nnella cartella di OsmAnd sullo smartphone"

xdg-open osmand-obf

echo -e "\n\n\n\nMappa creata in $TEMPO"
echo -e "\n\nBye bye!"

exit




Maggiori informazioni sulla lista Talk-it