• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

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

wilde-maus

Geomaster
Hallihallo,

das hab ich schon mal versucht und schnell wieder aufgegeben, weil fast alles auf Windows basierend beschrieben ist. Nun stell ich mal meine Frage hier im Linuxforum.

Welche Tools brauch ich?
Reihenfolge der Tools?
Welche Arbeitsschritte sind erforderlich?

LG,
Karen
 

Aceacin

Geowizard
Mhh... Vielleicht online erstellen lassen..?

http://garmin.openstreetmap.nl/

Hier kannst Du Dir entweder vorgefertigte Regionen oder aber selbst zusammengestellte Kacheln als Map für's Garmin generieren lassen und bekommst dann, wenn's fertig ist 'nen Download-Link zugesendet.
 

Teleskopix

Geowizard
Aceacin schrieb:
Dann gibbet noch'n Tool, das auf Java basiert, also auch auf Linux läuft.

Mobile Atlas Creator (MOBAC)

Damit kann man wohl 'ne ganze Menge verschiedene Karten (man sagte mir, u.a. auch die tollen Topo-Karten von Outdooractive.com) zu Maps umwandeln.

Leider hatte ich noch keine Zeit, mich genauer damit zu befassen, aber sowas auf'm GPS wäre doch Top!

Vergiss es, Outdooractive läuft schon lange nicht mehr mit Mobac, Mobac macht Rasterkarten, damit hat der Oregon sehr wenig am Hut.

Es gibt Java-Tools um selbst Garmin Karten zu machen, muß mal suchen.
Offen gestanden es gibt das meiste was man braucht schon fertig, und die Tools konnten nie so toll Karte nach eigenen Wünschen, war meist was vorgegebenes was es schon fertig gibt.

Grüße
Teleskopix
 
OP
wilde-maus

wilde-maus

Geomaster
naja, ich tagge bei OSM gerne Pois. Diese bekommen möglichst viele Informationen von mir. Mein Ziel ist es Karten zu erstellen mit denen ich auf dem Gerät erkennen kann was schon da ist. Leider hab ich noch keine fertige Karte gefunden, die mir das bietet. Damit es mir jemals gelingt muss ich erstmal schnallen wie es geht.

Das einizige was ich kann ist eine .osm-Datei extportieren und mit mkgmap eine .img-Datei draus machen.
 

moenk

Administrator
Teammitglied
Aus der osm-Datei kann Du auch mit GPSbabel eine GPI-Datei mit POI machen, das wäre viel einfacher. Der POI-Loader würde auch ein GPX hochladen, das man faul mit QGIS erstellen kann.
http://www.moenk.de/archives/70-Navigation-im-Tierpark-Berlin-mit-OpenStreetMap-und-GPS.html
 
OP
wilde-maus

wilde-maus

Geomaster
moenk schrieb:
Aus der osm-Datei kann Du auch mit GPSbabel eine GPI-Datei mit POI machen, das wäre viel einfacher. Der POI-Loader würde auch ein GPX hochladen, das man faul mit QGIS erstellen kann.
http://www.moenk.de/archives/70-Navigation-im-Tierpark-Berlin-mit-OpenStreetMap-und-GPS.html

Interessant! Habe nur bedenken, dass bei POIs die verfügbaren Zeichen in der Bemerkung vereinzelt knapp werden könnten. Die Anzahl derer ist - im Gegensatz zu Geocaches - noch nicht unendlich. Aber erstmal testen ob überhaupt was drin steht.
 

Teleskopix

Geowizard
Habe noch etwas gefunden
http://www.linux-magazin.de/Heft-Abo/Ausgaben/2010/06/Alle-Wege-offen

Grüße
Teleskopix
 

thkukuk

Geocacher
Hallo,

die mkgmap wiki Seiten erklären doch eigentlich alles recht gut. Und mkgmap sowie splitter sind Java Tools, welche unter Linux einwandfrei laufen:

http://wiki.openstreetmap.org/wiki/Mkgmap/help/How_to_create_a_map
 
OP
wilde-maus

wilde-maus

Geomaster
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)!
 

espe2310

Geocacher
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/blogs/osmmap/mkgmap-styles.zip von Kleineisel
5. das Typfile 1331.TYP von Kleineisel http://www.kleineisel.de/blogs/media/blogs/osmmap/M36_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.php/osmmap/2009/09/17/how-to-make-a-topographic-map

Gruß
Ernst / espe2310
 
OP
wilde-maus

wilde-maus

Geomaster
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. ;)
 
Oben