Anfänger möchte eigene Karte erstellen

In JOSM kann man bestenfalls (?) eine große Stadt wie Frankfurt laden. Dann wird’s aber schon sehr zäh mit der Bediehnung. Meine Erfahrung: eine *.osm.pbf Datei mit 10 MB ist gerade noch erträglich, um mal eben zu schauen, was da so drin ist. Man kann sogar damit arbeiten, wenn man auf einen kleinen Bereich zoomt, aber Spaß macht das nicht.

Splitter teilt die Daten zwar in einzelne Kacheln auf, aber danach gibt es keine Auswahlmöglichkeit wie Du sie kennst. Mkgmap erzeugt aus allen diese Kacheln in eine einzige Garminkarte.

Deshalb muß man vorher mit osmosis oder osmconvert nur die benötigten Daten ausschneiden oder Einzelkarten für jedes Land aus den Länderpaketen der Geofabrik bauen.

Am Besten folgst Du der Beschreibung von GerdP, da steht eigentlich schon alles drin.

OK, so langsam geht es voran. Vielen Dank an Alle die mich unterstützen.
Ich habe mich für den Weg von GerdP entschlossen.

Ich habe in JOSM ein Polygon erstellt, welches die BeNeLux und ungefähr NRW beinhaltet. Abgespeichert habe ich es als “benelux.poly”.

Danach habe ich “osmconvert” bemüht mit:

osmconvert europe-latest.osm.pbf -B=benelux.poly -o=work.osm

Nachdem ich nun meine “work.osm” hatte, kam der “splitter” zum Zuge mit:

java -Xmx4G -jar splitter\splitter.jar --write-kml=splitter.kml --mapid=47110001 --polygon-file=benelux.poly work.osm

Zum splitter noch eine Frage:
Da ist die “resolution=13” eingestellt. Macht es Sinn einen höheren Wert zu nehmen? Macht das die Anzeige im Garmin detailreicher?

So weit, so gut.
Jetzt müsste der finale Schritt von “mkgmap” kommen. Allerdings verstehe ich da die config noch nicht so ganz. In den Wikis habe ich gelesen das ich eine Boundaries-Datei für die Grenzen benötige und eine Küstenlinie-Datei (siehe auch: https://wiki.openstreetmap.org/wiki/User:Ajoessen/Garminkarten_selber_bauen ). Dann ist da noch die Rede von einer Höhenlinien-Datei (brauche ich nicht) und einer City-Liste. Des weiteren muss der Zeichensatz und die Style-Datei angegeben werden. Echt viele Infos auf einmal für einen Dummie wie mich, da stehe ich echt auf’m Schlauch.

Was muss in der config stehen, damit ich z.B. von Köln aus zu einer Adresse (Straße & Hausnummer) nach Amsterdam komme (Grenzüberschreitend)? Die Karte sollte im Display gut leserlich aussehen, sowas liegt natürlich im Auge des Betrachters. Ich habe da irgendwo was vom deutschen Landkartenstil gelesen. Extra Sachen wie Höhenlinien, Gebäude, Wanderwege, Radwege etc. pp. brauche ich alles nicht. POIs bräuchte ich erstmal auch nicht oder wenn überhaupt dann nur Tankstellen und wo man was essen kann.

Ich fasse nochmal meine wichtigsten Fragen zusammen:

  1. Resolution 13 für den splitter ok, oder einen anderen Wert nehmen?
  2. Brauche ich die bounderies-Datei?
  3. Brauche ich die coastlines_europe.osm.pbf?
  4. Wie sieht die config dann für mkgmap aus?

Viele werden jetzt die Arme über den Kopf zusammen schlagen und mich verfluchen. Aber ich möchte das echt erlernen, weil ich das ganze Thema hochinteressant finde. Leider ist mein englisch so lala und die deutschen Anleitungen die ich gefunden habe, sind meistens für Leute gedacht die sich damit schon ein wenig auskennen.

Ich danke euch schon mal im voraus.
Christian

Kleiner Nachtrag:
Der splitter hat mir 110 Dateien erzeugt, von 47110001.osm.pbf bis 47110110.osm.pbf

mkgmap macht aus OSM Daten Garmin Daten. Wie steht in den style Dateien.
Beispiel:
highway=motorway [0x01 road_class=4 road_speed=7 resolution 15]

So wird die Linienart “Autobahn” auf den Garminschlüssel 0x01 geschrieben. 0x01 ist routingfähig, deshalb steht da noch road_class und road_speed. resolution gibt an, bis zu welcher Zoomstufe die Linie sichtbar sein soll.

Darüber hinaus gibt es noch eine TYP Datei. Darin wird festgelegt, wie die Linie Autobahn aussehen soll. Man kann das auch weglassen. Einige Garmin-Schlüssel werden von den Garmin Geräten auch ohne die Typdatei angezeigt. Es ist ein Standaardaussehen im Gerät gespeichert.

Das musst du nun für jede Linienart machen. Und für jede Fläche und für jeden POI.

mkgmap hat aber einen Beispiel-Style. mkgmap-r4608\examples\styles\default
Eine Beispiel Typdatei ist auch dabei.

Eine fertige Garmin-Europakarte mit diesem default-style kannst du dir hier herunterladen:

https://speichenkarte.de/

bounds und sea findest du auf der mkgmap downloadseite. Oder direkt an der Quelle: http://osm.thkukuk.de/

  1. solltest Du so lassen, hat nichts mit dem Inhalt der Karte zu tun
  2. Nein
  3. Nur für schöne blaue Meeresflächen - für die ersten Versuch einer eigenen Straßenkarte an Land nicht wichtig
  4. Für den Anfang nimm einfach den mitgelieferten Standardstil unter \examples\styles\default bzw. \examples\sample.cfg

Hallo,
vielen Dank für eure Mühen.

Was ich noch nicht verstehe ist: Ich habe jetzt mit dem splitter 110 Dateien erzeugt, von 47110001.osm.pbf bis 47110110.osm.pbf, woher weiß mkgmap das er diese Dateien zu einer Karte zusammenkleben soll?
Muss ich mkgmap und die splitter-dateien in ein Verzeichnis kopieren?

Nein und Nein
Die Option ist nur für den Fall da, dass man entweder sehr kleine Dateien splitten will (debugging) oder den ganzen Planeten. Im ersten Fall würde man den Wert etwas erhöhen (vielleicht 15), im zweiten vielleicht verringern. (12).
Der Wert gibt die Größe der splitter-internen Kacheln an, aus denen dann die Aufteilung der Kacheln für mkgmap berechnet wird. Je kleiner die interne Kachel, desto größer der Speicherbedarf und desto länger die Rechenzeit. Besser wird die Karte dadurch nicht, die Ränder ändern sich geringfügig.

splitter schreibt die Datei template.args, da steht drin, welche Kacheln zusammengeklebt werden sollen. Die Datei kann man zu Testzwecken auch editieren, z.B. nur mit 4 Kacheln arbeiten, bis man einen brauchbaren Style gefunden hat.
Der mkgmap Aufruf sieht dann etwa so aus

java -Xmx4G -jar d:\mkgmap-r4608\mkgmap.jar  -c d:\mkgmap-r4608\examples\sample.cfg  --output-dir=myMap -c splitter_output_dir\template.args d:\mkgmap-r4608\examples\typ-files\mapnik.txt

Splitter und mkgmap sollten in eigenen Verzeichnissen sein, die Daten in einem anderen. Ich halte auch die Ausgabe von splitter getrennt von der Ausgabe von mkgmap.
Der Konfigurationsdatei mkgmap-r4608\examples\sample.cfg solltest Du Dir vorher gut anschauen, Doku dazu ist hier:
http://www.mkgmap.org.uk/doc/options
Edit: Nachtrag: Eine Grundregel noch: Um sich Probleme zu ersparen, sollte man immer das Ausgabeverzeichnis von mkgmap komplett löschen bzw. leeren, bevor man mkgmap startet.

Super. Das hat geklappt. Ich habe tatsächlich eine eigene Karte erstellt bekommen. :smiley:
Möchten mich nochmals bei allen bedanken die mir geholfen haben.

Jetzt kann ich anfangen mich mit den Feinheiten auseinander zu setzen.

OK, eine Frage habe ich (natürlich) noch:
Wie kann ich die Karte jetzt testen ohne diese auf die CF-Karte zu kopieren und in das Garmin zu stecken?
Ich dachte zuerst an Basecamp, aber da kann ich die gmapsupp.img nicht einladen. Gibt es da ein anderes Programm für?

Der “natürliche” Weg ist Basecamp und die Verwendung der Option --gmapi. Basecamp kann aber auch eine gmapsupp.img laden, die auf einem USB liegt. Dauert allerdings recht lange.
Ich verwende unter Windows eine kleine *.cmd Datei, in der ich sowohl --gmapsupp als auch --gmapi benutze, und in einem letzten Schritt einen Link auf das neu erzeugte *.gmap Verzeichnis erstelle. Etwa so:


...
java ... mkgmap.jar ... --output-dir=map --gmapsupp --gmapi ... 
:mklink
set gmapi=OSM map.gmap
if exist "c:\ProgramData\Garmin\maps\%gmapi%"  rmdir "c:\ProgramData\Garmin\maps\%gmapi%"
mklink /J "c:\ProgramData\Garmin\maps\%gmapi%" "map\%gmapi%"

Damit erspare ich mir das nervige Kopieren von x Dateien, aber ein xcopy tuts auch.

Und wie?
Ich finde im Basecamp nirgendwo die Möglichkeit eine Karte nachzuladen. Weder von USB-Stick noch von sonst wo… :confused:

Auf dem USB Stick muss die gmapsupp.img in einem Verzeichnis mit dem Namen Garmin liegen, also z.B. x:\Garmin\gmapsupp.img. Wenn Basecamp so einen Stick findet, dann lädt Basecamp die Karte automatisch.
Stolperfalle: Man kann in der gmapsupp.img ein Bit setzen, damit Basecamp das eben nicht macht, siehe Option --hide-gmapsupp-on-pc

Super, vielen Dank für die Info.
Ich frage mich immer woher ihr das alles so wisst, denn ich habe darüber noch nirgendwo was gelesen.

Ich arbeite seit fast 10 Jahren an dem mkgmap code mit, da bleibt das ein oder andere hängen :wink:
Ansonsten siehe
Siehe z.B. http://gis.19327.n8.nabble.com/Split-gmapsupp-img-tp5976583p5976849.html
und in Garmin Forum findet man das bestimmt auch immer wideder mal, wenn man nach USB sucht:
https://forum.openstreetmap.org/viewforum.php?id=26

Nachdem ich schon einige “custom made” Karten hergestellt habe, bin ich sehr glücklich damit. Danke an euch allen, ohne euch hätte ich das nicht geschafft.

Gibt es eigentlich auch eine Möglichkeit (oder ein Tool) um zwei oder mehrere bestehende .img-Files zu einer Karte zu erstellen?. Also z.B. holland.img, belgien.img und luxemburg.img zu benelux.img. Geht sowas?

Ja, geht. Auch mit mkgmap. Der wichtigste Stolperstein dabei sind die ids (mapname) der einzelnen Kacheln. Man muss also für jedes Land einen eigenen Bereich verwenden.
Beispiel (nicht getestet und nur für zwei Länder)


java -jar splitter.jar ...  --mapid=2222 --output-dir=belgium belgium.o5m
java -jar splitter.jar ...  --mapid=2223 --output-dir=holland holland.o5m

java -jar mkgmap.jar ... --output-dir=belgium-map -c belgium\template.args
java -jar mkgmap.jar ... --output-dir=holland-map -c holland\template.args

java -jar mkgmap.jar ... --index --gmapsupp --output-dir=benelux-map belgium-map\*.img holland-map\*.img 

Macht aber nur bedingt Sinn, weil sich Kacheln aus den einzelnen Ländern überlappen. Wenn man von vorherein weiss, dass man eine Benelux Karte und die Länderkarten braucht, dann macht man es besser anders rum, also zuerst alle Daten mergen, dann splitter
laufen lassen. Dann alle Kacheln berechnen (für benelux) und noch mal nur die gmapsupp für die einzelnen Länder.
Problem bei letzterem: Wie bekomme ich die Liste der Kacheln, die zu einem Land gehören?
Da kann die splitter Option --polygon-desc-file= helfen. Kann ich bei Bedarf noch mal genauer erklären.

OK, danke für die Info.
Ich glaube das bringt dann keinen wirklichen Vorteil (für mich). Ich werde dann weiterhin im JOSM ein Polygon zeichnen (für BeNeLux) und dann alles wie bisher machen. Ich dachte ich könnte mir das mit dem “splitter” und “mkgmap” sparen, indem ich schon vorhandene .img-Dateien verbinde.

Tja, kann ich jetzt schlecht beurteilen, weil ich nicht genau weiss, was Du bisher machst und was raus kommen soll.
Generell ist es keine schlechte Idee, das Generieren der einzelnen *.img für die Kacheln und das Generieren der gmapsupp.img zu trennen.
Man sollte allerdings verstehen, wo welche mkgmap Optionen einen Effekt haben.

Vielleicht sollte ich mal schauen, ob man in mkgmap eine neue Option einbaut nach dem Motto: Lies ein Polygon und suche aus allen vorhandenen Kachel.img diejenigen raus, die zumindest teilweise im Polygon drin sind, und mache daraus eine gmapsupp.img mit dem Namen xyz. Ich denke, sowas in der Art muss Lambertus damals für http://garmin.openstreetmap.nl/ als Skript gebastelt haben. Also einmal den ganzen Planeten spltten, dann alle (1) Kacheln berechnen und anschliessend aus irgendwelchen Länder-Polygonen und dem Output von splitter (also insbesodere die template.args) die Listen der Kacheln ermitteln, die für ein bestimmtes Land benötigt werden.

(1) ob man die alle vorher berechnet oder “on demand”, lasse ich mal dahin gestellt, jedenfalls könnte man vermeiden, die gleichen Kacheldaten mit den gleichen Parametern mehrmals zu berechnen.

Das macht ja auch Sinn, so eine Kachel nur 1x zu berechnen und dann abzulegen.
Ich habe http://garmin.openstreetmap.nl/ früher häufiger benutzt. Man musste schon ein paar Stunden warten bis man seine Karte bekommen hat. Insofern behaupte ich mal (ohne Details wie Servertime, Auslastung etc. pp. zu kennen) das die Kacheln jedes mal neu berechnet wurden.