Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

OSM-Karten für Garmingeräte mit Linux estellen

Software von und für die Welt.
Benutzeravatar
wilde-maus
Geomaster
Beiträge: 711
Registriert: So 25. Nov 2007, 08:58
Wohnort: Bremen
Kontaktdaten:

Re: OSM-Karten für Garmingeräte mit Linux estellen

Beitrag von wilde-maus »

danke, splitter.jar fehlt mir noch in der Sammlung der Tools. Wird getestet.

Was ich bei mkgmap nicht versteh, wenn ich ein osm-file mit einer bereits vrohandenen img verbinde kann die neue img mein Garmin nicht mehr lesen. Was mach ich falsch?

Wahrscheinlich hat moenk schneller als ich eine Möglichkeit geschaffen, die komfortabel POIs mit allen bereits getaggten Infos runterläd... (schönen Gruß nach Berlin)!
Bild Pfülmbüchsentraddy suchen... :dagegen:
Benutzeravatar
espe2310
Geocacher
Beiträge: 36
Registriert: So 24. Jun 2007, 12:15
Wohnort: 53894 Mechernich-Antweiler

Re: OSM-Karten für Garmingeräte mit Linux estellen

Beitrag von espe2310 »

Ich habe mich diese Wochenende mal dran gegeben, ein Skript zur Erstellung von OSM Maps aus PocketQueries für mein Garmin Oregon zu schreiben. Vielleicht hilft das weiter.

Die Karte, die immer auf meinem Gerät ist, ist die Deutschlandkarte von Kleineisel, die ich in der Ansicht und mit den Höhenlinien ganz toll finde. http://www.kleineisel.de/blogs/index.php/osmmap/ Aber für den Urlaub und für den Wochenendtrip wird der Speicher knapp für weitere Länder.

Der Ansatz: Ich brauche eigentlich nur die Bereiche in denen ich auch Cachen will, und das sind die, die ich als PocketQuery herunterlade. Deshalb: Für jede PocketQuery wird ein OSM Ausschnitt generiert und in einer einzigen Image-Datei zusammengefasst. Höhenlinien wären zwar schön, sind aber aufwendig.

Benötigte Programme:
in einem Ordner, z.B. gctools brauchen wir die folgenden Files/Ordner
1. pbftoosm von http://wiki.openstreetmap.org/wiki/DE:Pbftoosm entweder die 32-bit oder 64-bit version (umbenennen in pbftoosm ohne die Zahl). Viel schneller als Osmosis und vollkommen ausreichend.
2. splitter.jar und den lib-Ordner aus http://www.mkgmap.org.uk/splitter/
3. mkgmap.jar aus http://www.mkgmap.org.uk/snapshots/
4. den Ordner mkgmap-style-toponew aus http://www.kleineisel.de/blogs/media/bl ... styles.zip von Kleineisel
5. das Typfile 1331.TYP von Kleineisel http://www.kleineisel.de/blogs/media/bl ... 6_1331.TYP entsprechend umbenannt

und natürlich mein Skript
#! /bin/bash

# MkGmap - aus PocketQueries
# 20.5.2012 espe2310
# Format: MkGmap pocketquery.gpx country.osm.pbf ODER MkGmap liste.lst

# voller Pfadname, nicht ~ für Homeverzeichnis
# wenn gpxpath und pbfpath leer bleiben, muss der volle Pfad

tmpdir=/home/espe/Opt/Geocaching/Garmin/Maps/tmp
progpath=/home/espe/Opt/Geocaching/gctools/
gpxpath=/home/espe/Opt/Geocaching/Garmin/GPX/
pbfpath=/home/espe/Opt/Geocaching/Garmin/Maps/

########################################################################


# temp Directiory anlegen / löschen

if [ ! -d "$tmpdir" ]
then
mkdir $tmpdir
fi
rm $tmpdir/*

# test auf input
if [ -z "$1$2" ]
then
echo Usage: MkGmap pocketquery.gpx country.osm.pbf OR MkGmap multible.lst
exit
fi

Infile=$1
Infile=${Infile%.*}
Infile=${Infile##*/}

if [ -z "$2" ]
then
if [ -e "$1" ] && [ "${1##*.}" = "lst" ]
then
cp $1 $tmpdir/input.lst
else
echo File $1 not found or not an .lst-file
exit
fi
else
echo $1 $2 > $tmpdir/input.lst
fi

# test auf files
while read line
do
[ -z "$line" ] && continue
gpx=$gpxpath${line% *}
pbf=$pbfpath${line#* }
if [ -e "$gpx" ] && [ "${gpx##*.}" = "gpx" ]
then
echo File $gpx found
else
echo File $gpx not found or not an .gpx-file
exit 0
fi
if [ -e "$pbf" ] && [ "${pbf##*.}" = "pbf" ]
then
echo File $pbf found
else
echo File $pbf not found or not an .pbf-file
exit 0
fi
done < $tmpdir/input.lst

CurrDIR=$PWD
cd $tmpdir

#Verarbeitung files
ZZ=10000000
echo "" > $tmpdir/template.all

while read line
do
[ -z "$line" ] && continue
ZZ=`expr $ZZ + 10000000`
gpx=$gpxpath${line% *}
pbf=$pbfpath${line#* }

Description=$gpx
Description=${Description%.*}
Description=${Description##*/}
Country=$pbf
Country=${Country%.*}
Country=${Country##*/}
echo
echo Verarbeite $Description $Country

while read gline
do
if [ "${gline:0:7}" = "<bounds" ]
then
L=${gline#*\"};
minlat=${L%%\"*};
L=${L#*\"};
L=${L#*\"};
minlon=${L%%\"*};
L=${L#*\"};
L=${L#*\"};
maxlat=${L%%\"*}
L=${L#*\"};
L=${L#*\"};
maxlon=${L%%\"*}
echo Found boundaries $minlat $minlon $maxlat $maxlon
fi
done < $gpx


$progpath/pbftoosm -b=$minlon,$minlat,$maxlon,$maxlat -i=$pbf >$tmpdir/$Description.PQ.osm

java -Xmx2048M -jar $progpath/splitter.jar --mapid=$ZZ --max-nodes=800000 --output=xml ./$Description.PQ.osm

mv $tmpdir/areas.list $tmpdir/$ZZ.list
cat $tmpdir/template.args >> $tmpdir/template.all
mv $tmpdir/template.args $tmpdir/$ZZ.args

done < $tmpdir/input.lst

mv $tmpdir/template.all $tmpdir/template.args

#rm ./$Description.PQ.osm

java -Xmx2048M -jar $progpath/mkgmap.jar --description=OSM_$Infile --name-tag-list="name:de,name,int_name" --style-file=$progpath/mkgmap-style-toponew/ --family-id=1331 --product-id=1 --series-name=OSM_Map --family-name=OSM_Map --net --gmapsupp --tdbfile --route --road-name-pois=0x640a --draw-priority=25 --latin1 --make-opposite-cycleways --remove-short-arcs -c template.args $progpath/1331.TYP


rm ./*.gz
rm ./*.list
rm ./*.args
rm ./*.lst

cd $CurrDIR

mv $tmpdir/gmapsupp.img ./gmapsupp_$Infile.img

Für den Start sind die Verzeichnispfade anzupassen:
Ein tmp-Verzeichnis für die Zwischenberechnungen. (Inhalt wird beim Start gelöscht, ggf. wird es erstellt.) Nach dem Ende bleiben die Dateien zurück, die ggf. in QLandkarteGT verwendet werden können.
Der Pfad zu den Programmdateien. (Pfad im / am Ende)
Der Pfad zu den Pocketqueries.
Der Pfad zu den heruntergeladenen OSM-Karten im PBF-Format z.B. von der Geofabrik http://download.geofabrik.de/osm/
Die letzteren beiden ersparen eine Menge Tipparbeit :-) Wenn sie leer bleiben, muss immer der volle Pfad genannt werden.

Will man mehrere PocketQueries in einer Karte haben, so kann eine .lst-Datei angelegt werden. Jede Zeile enthält denn das Pärchen: pocketquery.gpx country.osm.pbf
Das man nur 2 img-Files auf dem Garmin hinterlegen kann, ist die Zusammenfassung sehr hilfreich.

Start des Skripts (nachdem es ausführbar gemacht wurde) aus dem Terminal z.B. mit
./MkGmap pocketquery.gpx country.osm.pbf
für eine einzelne PQ oder
./MkGmap ./urlaub.lst

Das Image File wird dann im gleichen Ordner als gmapsupp_urlaub.img abgelegt.

Was ist sonst noch zu sagen?? Ein paar grobe Überprüfungen macht das Skript, ob die Dateien zu finden sind, sonst nichts. Für die Java-Programme wechselt das Skript ins tmp-Verzeichnis. Das könnte man sicher noch besser lösen, aber momentan reicht es mir so. Es läuft! Bei mir mit Ubuntu 12.04.

Falls es jemand ausprobiert: Über Kommentare würde ich mich freuen.
Die Grundlagen für das Skript sind nachzulesen bei http://www.kleineisel.de/blogs/index.ph ... raphic-map

Gruß
Ernst / espe2310
Benutzeravatar
wilde-maus
Geomaster
Beiträge: 711
Registriert: So 25. Nov 2007, 08:58
Wohnort: Bremen
Kontaktdaten:

Re: OSM-Karten für Garmingeräte mit Linux estellen

Beitrag von wilde-maus »

das hört sich richtig interessant an. Leider habe ich vorm und während keine Zeit für einen Test, aber ich bin gespannt wie ein Flitzebogen. ;)
Bild Pfülmbüchsentraddy suchen... :dagegen:
Antworten