Seit ein paar Jahren habe ich mein Hobby Rennrad & MTB Touren mit einem Garmin Oregon bereichert.
Das schlechte Display brachte mich dazu, zunächst Garmin City Navigator zu benutzen. Diese Karte ist gut ablesbar. Nur nicht wirklich tauglich, da man nicht erkennen kann, ob ein Sträßchen Asphalt hat oder nicht. MTB Wege sind Mangelware. Die Garmin-Topo war mir zu teuer. Dann entdeckte ich OSM und stellte schnell fest, dass diese Karten prinzipiell die besseren sind.
Nur die Ablesbarkeit war nicht so toll. Zunächst habe ich mir damit beholfen, das Typ-File zu malträtieren. Dann erfuhr ich von mkgmap und das man damit die OSM Daten nach eigenen Vorstellungen nach Garmin portieren kann. Damit ging die Bastelei dann los. Manchmal habe ich mehr an den Karten gefummelt, als Rad gefahren…
Mittlerweile bin ich recht weit gekommen. Top-Ablesbarkeit, detaillierte Wegedarstellung, brauchbares Rennrad-routing, Darstellung von Radstrecken, mtb_scale, Radverbote, Einbahnstraßen getrennt nach generell und für Rad freigegeben, Ampeln, Wege die irgendein OSM Tag haben, welches auf eine Radnutzung schließen lässt usw.
Ich habe die Karte nun Online gestellt, wer mag, kann sie gerne einmal testen. Über Hilfestellungen würde ich mich freuen. Vielleicht auch gegenseitig
Es sind noch ein paar Baustellen offen, wo ich noch keinen Plan habe, wie und ob das zu lösen ist:
Adresssuche
Hinter Ortsnamen in der Suche kein ABC
Ich hätte gerne einen Stadtnamen, wenn ich auf ein residential Polygon klicke. Bei anderen Polygonen funktioniert das.
verstehen, wie in mkgmap die Namen vergeben werden $name(fwfh) oder so ähnlich.
Es gibt ein boundary und ein Sea File. Ich verstehe nicht, wofür das ist und wie man es verwenden könnte
Bei Garmin heist es auf der Autobahn “Ausfahrt 27”. Das würde ich auch gerne hinbekommen, um neben der Radkarte eine Autokarte zu bauen
ABC wird dann gesetzt, wenn mkgmap keine Informationen über das Land und die Region hat.
Am einfachsten behebst Du dies durch Setzen der --bounds Option. In dieser Option gibst Du das bounds.zip File an.
Diese Datei ermöglicht mkgmap, OSM Elementen Adress-Informationen automatisch hinzuzufügen. So wird z.B. allen Element in Deutschland das Tag mkgmap:admin_level2=DEU hinzugefügt, allen Elementen aus Nürnberg das Tag mkgmap:admin_level6=Nürnberg für alle Elemente in Nürnberg.
Habe ich im Moment keine Idee, wie das funktionieren könnte. Evtl. durch Auswerten der oben erwähnten Bounds-Informationen.
Bitte in die Style-Dokumentation schauen.
Es gibt die Kommandos { name ‘${name}’ } oder { addlabel ‘${name}’ }.
Wie oben beschrieben enthalten die boundary Files komprimierte und aufbereitete Informationen, damit mkgmap Addressinformationen generieren kann.
Die Sea Files ermöglichen mkgmap Meeresflächen vernünftig zu zeichnen. Wie Du weist, verarbeitet mkgmap immer nur kleine Teile der Karte (Tiles), die nur unvollständige Meerespolygone enthalten. Damit ist es nicht fehlerfrei möglich, Meeresflächen in die Karte zu integrieren. Daher gibt es die separat erstellten Sea Files.
mgkmap Option --nsis
Additionally you need the Nullsoft Scriptable Install System tool. mkgmap creates a .nsi file which can be used with Nullsoft Scriptable Install System to build an installer.
Die eintragen.bat ist nicht so schön. Man muss die als Administrator starten, sonst wird nichts in die Registry geschrieben.
Welche Karte hast du ausprobiert?
Alternativ kann man die Karte mit dem MapSetToolKit eintragen.
index verwende ich. Leider verstehe ich nicht, was die Option macht und wo die Adressen hinterher sein sollen. Die Doku ist für mich irgendwie unverständlich, was aber auch daran liegt, dass Englisch nicht gerade meine Stärke ist (:
mkgmap:admin_level2=DEU
Diese Zeilen habe ich einfach aus dem default-style übernommen. Was die machen, verstehe ich nicht.
Deine Erklärung hilft mir aber weiter
Die Boundary-Datei, ist das die, die unter http://www.mkgmap.org.uk/download/mkgmap.htmlDownloads bei mkgmap angeboten wird?
Ich werde das mal ausprobieren mit der option.
Was macht { name ‘${name}’ } genau? Welcher Name und warum 2 mal?
Das gucke ich mir mal an. Die Seite ist zwar Deutsch, nur was ist da gemeint? Dass man sich selbst die Freizeitkarte bauen kann?
Das reine Kartenbauen läuft bei mir eigentlich recht simpel ab. Ich habe eine batch-Datei. Darin wird mit “wget” bei der Geofabrik eine osm.pbf runtergeladen.
Danach wird das gesplittet und mkgmap läuft 2 mal drüber. Der zweite Durchlauf enthält die POIs, Einbahnstraßen und alle anderen Linien, die immer oberhalb der Straßen angezeigt werden sollen. Mit den entstandenen Kacheln werden mit “gmt” und “cgpsmapper Free” die tdb und die overview Map gemacht.
mkgmap kann zwar auch tdb und overview, aber immer nur für den jeweiligen Durchlauf. Für alle Kacheln aus beiden durchläufen bekomme ich das nicht hin, daher gmt und cgps.
Am Ende der Batch stehen die Kommandor für die Registry.
Die Bedienung ist also so:
Batch-Datei starten - warten - Karte mit neuen OSM Daten neu gebrauchsfertig.
Für das Veröffentlichen würde ich gerne die gmapsupp+tdb und overview hochladen und gmt mitliefern. gmt kann die gmapsupp splitten. Gehe ich richtig in der Annahme, dass dieser Prozess in einem Installer zusammengefasst werden kann?
Noch mal zu den bounds.
Ich habe mir diese Datei bei mkgmap runtergeladen:
bounds_20140128.zip
In die options von mkgmap schreibe ich jetzt:
bounds=C:\Kartenwerke\SpeicheNRW|bounds_20140128.zip
SEVERE (LocationHook): C:\Kartenwerke\SpeicheNRW\Splitter\45000009.osm.pbf: Disa
ble LocationHook because bounds directory is unusable. Dir: C:\Kartenwerke\Speic
heNRW|bounds_20140128.zip
Ein Beispiel für die Namensgebung, damit ich das verstehe:
Ich will einer Treppe einen Namen geben. Dahinter will ich die Anzahl der Stufen lesen können.
In OSM sieht das so aus:
highway=steps
step_count=30
name=“Hamburger Treppe”
Also muss ich mkgmap sagen:
highway=steps {name ‘${name}(${step_count})’} [0x08 road_class=0 road_speed=0 resolution 24 continue]
Das erste name ist das Kommando, das ausgeführt wird - also “benenne”.
Das zweite name ist die Variable für den Namen, so wie er in den Rohdaten steht. Es könnte also auch zu ${ref} benannt werden (Autobahn) oder eine Kombination Name/Ref (z.B. primary, secondary, tertiary in Ortschaften) oder gar ein Name direkt vergeben werden (mache ich bei Doppelbelegungen um die Standardbezeichnung zu korrigieren).
Wenn in OSM name und step_count vergeben ist, klappt es. Wenn der Name fehlt und nur die Anzahl der Stufen da ist, steht da nur “steps”.
Also muss ich jede Kobination abfangen? Nur name, nur step count und Beides?
So?:
highway=steps {name ‘${name} (${step_count})’ | ‘${step_count}’ | ‘${name}’} [0x08 road_class=0 road_speed=0 resolution 24 continue]
Suche ich nach Orten, steht hinter Remscheid ein Deu. Bei den kleinen Ortschaften in Remscheid aber immer noch ABC.
So richtig, verstehe ich den Zusammenhang nicht. Die Syntax ist mir unklar admin_level2… admin Welcher Admin? Was bedeutet die Zahl?
Sorry für die vielen Fragen, aber manchmal brauche ich einfach den Zaunpfahl. Ihr habt mir hier heute schon richtig gut weitergeholfen!
Ich muss gestehen, dass ich abgewunken hatte, als ich mir in OSM den Artikel zu Grenzen angeschaut hatte. Ich fange die Grenzen in meiner Karte lapidar mit
Noch mal zu den Adressen (und dem Zaunpfahl)
Das Oregon zeigt die Adressen jetzt.
Der PC findet diesbezüglich gar nichts. Die Adresssuche in BaseCamp ist mir suspekt, zum Testen nehme ich das alte Mapsouce. Da ist die Adresssuche ausgegraut.
Was muss ich tun?
Egtl. musst du dich mit den Grenzen nicht weiter beschäftigen. Schau dir den default-style von mkgmap an. Aus diesem kannst du diewesentlichen Dinge für die Adresssuche übernehmen. Noch eine weitere anmerkung dazu: Diese Tags eignen sich auch dazu, Tags innerhalb von bestimmten Grenzen anders zu behandeln, als in innerhalb Anderer.
Ansonsten würde ich mir den “catch-all” bei den Grenzen gut überlegen. Auf den Handgeräten bekommt man mangels Überblick keine Vorstellung darüber, welche Grenze man nun passiert.