Stilvoll

Ein Satz an Regeln definiert bei Mkgmap analog zu Maperitive, wie ein Gerät Punkt- und Linienobjekte anzeigt. Diese Regeln beschreiben bestimmte Details zeilenweise, so wie die Software sie abarbeitet. Hat das Tool eine Regel angewendet, erfolgt das Bearbeiten des nächsten Objekts. Als Style bezeichnet man normalerweise die Gesamtheit der Regeln, aufgeteilt in mehrere Dateien.

Die von Mkgmap verwendeten Stile fallen recht speziell aus und unterscheiden sich von denen bei Maperitive. Sie bestehen aus mindestens vier, oft aber mehr Dateien in einem Verzeichnis, in denen jeweils spezielle Informationen liegen. Den Verzeichnisnamen dürfen Sie frei wählen. Alternativ akzeptiert Mkgmap gepackte Verzeichnisse oder alle Informationen in einer einzelnen Datei.

Unbedingt notwendig ist eine Datei mit dem Namen version. Sie beschreibt die Version der Beschreibungssprache des Styles, nicht die Version des Styles. Bisher gibt es die Versionen 0 und 1. Nach der Zeile mit der Versionsnummer sollte eine Leerzeile folgen.

Die optionale Datei info enthält Informationen zum Style in der Form Schlüssel=Wert. Zwischen geschweiften Klammern dürfen Sie mehrzeilige Werte angeben. Als Schlüsselwörter stehen version (Style-Version), summary (kurze Beschreibung des Styles) sowie description (ausführliche Beschreibung des Styles) zur Wahl. In der Dokumentation zu Mkgmap finden Sie ein Beispiel.

In der Datei options übergeben Sie Optionen, analog zu denen in der Befehlszeile (siehe Tabelle "Mkgmap im Griff"). Allerdings berücksichtigt die Software hier nur Optionen, die sich auf den Stil beziehen, wie levels, overview-levels und extra-used-tags. Die letzte Angabe dient dazu, zusätzliche Tags anzugeben, die Sie im Stil anwenden möchten; meist ist das nicht erforderlich.

Die Datei points enthält Regeln, nach denen die Software Punkt-Objekte anzeigt. Normalerweise handelt es sich dabei um POIs. Ohne diese Datei erscheinen solche Punkte nicht in der Karte. Die entsprechenden Objekte geben Sie in der folgenden Form an:

Schlüssel=Wert [Zeichennummer resolution Auflösung]

Die Kombination aus Schlüssel und Wert bezeichnet den darzustellenden POI. Mit Zeichennummer geben Sie die interne Nummer des Zeichens an, das Sie verwenden möchten, und Resolution bezeichnet die Auflösung, ab der es erscheint. Ein Beispiel:

amenity=hospital [0x3002 resolution 14]

Normalerweise endet die Datei points mit einer Klausel, die dafür sorgt, dass die Software jedes anzuzeigende Objekt mit einem Icon beziehungsweise Text versieht (Listing 1). Dabei enthält die geladene Datei inc/address Klauseln in der in Listing 2 angegebenen Form. Diese sorgen dafür, dass alle benannten Elemente mit deren Namen versehen erscheinen. Allerdings führt dies in manchen Gebieten zu sehr vielen zusätzlichen Einträgen.

Listing 1

[...]
<finalize>
# The finalizer section is executed for each element when a rule with an element type matches
name=* { name '${name}' }
include 'inc/address';

Listing 2

[...]
mkgmap:phone!=* & phone=* { set mkgmap:phone='${phone}' }
mkgmap:phone!=* & contact:phone=* { add
mkgmap:phone='${contact:phone}' }
mkgmap:is_in!=* & is_in=* { set mkgmap:is_in='${is_in}' }

Analog definiert lines die Anzeige von Linien ("Ways"), polygones die von Flächen. Für Relationen – Grenzen, Routen oder Ähnliches – gibt es entsprechend die Datei relations. In den Quellen von Mkgmap [7] sowie in der Dokumentation [8] und im Style-Handbuch [9] finden sich Beispiele für diese Dateien. Andere Beispiele für Stil-Dateien mit teils interessanten Eigenschaften finden Sie auf Github unter dem Stichwort "mkgmap". Eine recht interessante Version einer OSM-Karte finden Sie online [10], wobei der Begleittext die Prozedur zum Erzeugen der Karte erläutert [11].

Einige Optionen wie name-tag-list="name:mkgmap,name:de,int_name,name:en,name" funktionieren in der aktuellen Mkgmap-Version nicht mehr in der Options-Datei, sondern nur noch auf der Befehlszeile. Das geänderte Verhalten von (voreingestellten) Optionen kommentiert Mkgmap beim Aufruf. Für eine Reihe von Optionen finden Sie online eine recht gute, aber nicht mehr ganz aktuelle Information [12].

Die Regeln in Mkgmap-Styles folgen einem festgelegten Muster. Sie bestehen aus zwei bis drei Teilen, die Sie durch Leerzeichen oder Zeilenumbrüche aufteilen. Die Tests bestehen im einfachsten Fall aus einem Gleichheits- oder Relationszeichen. Es gibt nur eine kleine Anzahl von Operatoren, die Sie in den Tests einsetzen dürfen (siehe Tabelle "Operatoren für Test").

Operatoren für Test

Kürzel Bedeutung
Tag=Wert gleich
Tag=* wahr, wenn Tag existiert, unabhängig vom Wert
Tag!=Wert ungleich
Tag!=* wahr, wenn Tag nicht existiert
Tag<Wert kleiner
Tag<=Wert kleiner-gleich
Tag~Regexp Wert entspricht regulärem Ausdruck
!(Regexp) negiert den Ausdruck in Klammern

Mehrere Tests verbinden Sie durch ein Kaufmannsund (&); eine Pipe (|) dient als logisches Oder. Tags, die Leerzeichen enthalten, fassen Sie in einfachen oder doppelten Hochkommata ein. Zwischen geschweiften Klammern eingeschlossen stehen Funktionen, mit denen Sie das Aussehen von Objekten beeinflussen. Dabei trennen Sie die Statements durch Semikola (;). Es gibt nur eine begrenzte Anzahl von Statements – die gleichnamige Tabelle zeigt die wichtigsten.

Statements

Statement Funktion Beispiel
name setzt den Namen (voreingestellt: Tag-Namen) name=* { name '${name}' }
add fügt ein Tag hinzu highway=path {add access = no; add bicycle = yes; add foot = yes}
addlabel setzt ein Label highway=* & ref=* { addlabel '${ref}' }
set überschreibt bestehende Tags {set highway=bridleway; set horse=yes}
delete entfernt Tags highway=no | highway=none {delete highway}
deletealltags entfernt alle Tags (highway=razed | highway=dismantled) {deletealltags}
apply für Relationen, setzt Tags type=route & ( route=hiking | route=foot ) { apply { set route=hiking; }}

Garmin-Geräte verfügen über einen eingebauten Satz an Icons zum Markieren von POIs und für Linien. Eine spezielle Variante von OSM-Karten – erzeugt durch den User Computerteddy [13] – versucht möglichst viele Features von OSM für ältere Navis bereitzustellen. Bei neueren Geräten definieren Sie zusätzliche Icons über ein sogenanntes TYP-File [14]. Mkgmap ist seit einiger Zeit in der Lage, diese Files vollautomatisch aus speziellen Quelltexten zu erzeugen. Sobald Sie beim Aufruf des Programms zum Erzeugen einer Image-Datei eine entsprechende TXT-Datei mit angeben, übersetzt Mkgmap auch diese:

$ mkgmap [...] map.osm TYP-File.TXT [...]

Der Aufruf erzeugt automatisch die Datei TYP-File.TYP. Kopieren Sie diese zusammen mit den Image-Dateien auf das Navi in den Ordner Garmin/, verwenden die Geräte die neuen Icons.

Mkgmap ist in der Lage, einige Eigenschaften von Stilen schnell zu testen (--check-styles). Zuvor sollten Sie sich aber mittels --list-styles vergewissern, welche Styles die Applikation findet. Durch --style-file=Stil wählen Sie den gewünschten Stil aus. Ohne diese Angabe testet das Programm alle gefundenen Stile. Beide Kommandos melden idealerweise Number of MapFailedExceptions: 0 und Number of ExitExceptions: 0.

Nach dem Umsetzen einer OSM-Datei durch Mkgmap testen Sie (wenn auch nur sehr begrenzt) die so erzeugte Datei mittels QLandkarte. Das Programm lädt die Image-Dateien zwar nicht direkt, aber über den Umweg einer TDB-Datei. Diese erzeugt Mkgmap ebenfalls auf Anfrage, bei der oben gezeigten Datei options aktiviert das beispielsweise tdbfile=yes. Ansonsten nutzen Sie folgenden Befehl:

$ mkgmap --tdbfile gmapsupp.img

Zwei Optionen unterstützen die korrekte Darstellung von Grenzen und Küstenlinien. Mit --bounds=bounds.zip erhalten Sie genaue Angaben zu Grenzen [15], durch --precom-sea=sea.zip präzise Küstenlinien [16]. Beide Optionen hängen Sie beim Erzeugen der Image-Dateien einfach an die Befehlszeile.

Karte erstellen

Wie Sie die Rohdaten am besten besorgen, hängt von Ihren Ansprüchen und Möglichkeiten ab. In vielen Fällen genügen die vorbereiteten Rohdaten der Geofabrik [17]. Sie laden diese entweder als XML-Datei mit der Extension .osm oder als komprimierte Variante, dann normalerweise im Protocolbuffer Binary Format PBF [18].

Je nach Region weisen diese Dateien eine Größe von einigen Hundert MByte bis einigen GByte auf. Sie spalten die Dateien daher so auf, dass möglichst entlang von zusammengehörenden Strukturen Teile entstehen (Listing 3, Zeile 1). Dabei entsteht eine Datei mit dem Namen template.args, in der Sie unter anderem eine family-id und den Kartennamen festlegen (Listing 4). Diese Datei sollten Sie später beim Aufruf von Mkgmap verwenden, um wichtige Voreinstellungen zu setzen.

Listing 3

$ java -Xmx1024m -jar splitter.jar --output=pbf --output-dir=splitter --max-nodes=1400000 --mapid=10010001  --poly-file=germany.poly  europe.osm.pbf
$ java -Xmx2048M -jar mkgmap  --name-tag-list="name:de,name,int_name" --tdbfile --style-file=Style-Datei --remove-short-arcs --route --net  -c template.args *.pbf *.osm *.TYP

Listing 4

# This file can be given to mkgmap using the -c option
# Please edit it first to add a description of each map.
#
# You can set the family id for the map
family-id: 7777
product-id: 1
# Following is a list of map tiles.  Add a suitable description
# for each one.
mapname: 63240001
# description: OSM Map
input-file: 63240001.osm.pbf
[...]

Anschließend kompilieren Sie die aufgeteilten PBF- respektive OSM-Files mittels Mkgmap, wie oben gezeigt. Liegen Ihnen Quelltexte für ein Typ-File (*.TXT) vor, dann hängen Sie diese an die Liste der Eingabedateien an. Damit das Garmin-Gerät die TYP-Datei als zur Karte gehörig erkennt, müssen die IDs – hier die Family- und die Product-ID – zusammenpassen. Das erfordert, beim Übersetzen der Quelltexte von TYP-Files und Karte die Option --family-ID=Nummer mit anzugeben.

Bei Erzeugen von Karten aus gesplitteten OSM-Daten liegt die Datei template.args schon vor, die Sie mit -c template.args in der Befehlszeile einbinden (Listing 3, Zeile 2).

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Aktuelle Software
  • Wegweiser durch die Einsamkeit, Teil 3: Karten
    Für die Offroad-Tour benötigen Sie auch Offline-Karten, denn im Outback gibt es schließlich kein Internet. Die Wegpunkte, Routen und Tracks planen Sie auf freien Karten aus dem OpenStreetMap-Fundus. Steht kein passendes Material bereit, erzeugen Sie es mit Mkgmap und Splitter einfach selbst.
  • Software für ein Offroad-Navi im Eigenbau
    Wer mit dem Offroad-Navi unterwegs ist, braucht spezielles Kartenmaterial. Das erstellen Sie mit den passenden Tools im Handumdrehen.
  • Unterwegs auf neuen Pfaden
    Schöne Touren, spannendes Geocaching oder Tagging der Fotosammlung – mit einem Tracker, einem Linux-System und der passenden Software sind Sie für jedes Unterfangen gut gerüstet.
  • Meine Welt
    Sie wollen für ihre Homepage eine Anfahrtsskizze erstellen,doch Ihr Wohngebiet fehlt seit Jahren in Google Maps? Dank Openstreetmaps erstellen Sie kurzerhand Ihr eigenes Kartenmaterial.
Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Broadcom Adapter 802.11n nachinstallieren
Thomas Mengel, 31.10.2017 20:06, 2 Antworten
Hallo, kann man nachträglich auf einer Liveversion, MX Linux auf einem USB-Stick, nachträglich...
RUN fsck Manually / Stromausfall
Arno Krug, 29.10.2017 12:51, 1 Antworten
Hallo, nach Absturz des Rechners aufgrund fehlendem Stroms startet Linux nicht mehr wie gewohn...
source.list öffnet sich nicht
sebastian reimann, 27.10.2017 09:32, 2 Antworten
hallo Zusammen Ich habe das problem Das ich meine source.list nicht öffnen kann weiß vlt jemman...
Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 6 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...