DE:Mkgmap/help/How to create a map

From OpenStreetMap Wiki
Jump to: navigation, search

DE:Mkgmap/help/How_to_create_a_map


Verfügbare Sprachen — Mkgmap/help/How to create a map
Afrikaans Alemannisch aragonés asturianu azərbaycanca Bahasa Indonesia Bahasa Melayu Bân-lâm-gú Basa Jawa Baso Minangkabau bosanski brezhoneg català čeština dansk Deutsch eesti English español Esperanto estremeñu euskara français Frysk Gaeilge Gàidhlig galego Hausa hrvatski Igbo interlingua Interlingue isiXhosa isiZulu íslenska italiano Kiswahili Kreyòl ayisyen kréyòl gwadloupéyen kurdî latviešu Lëtzebuergesch lietuvių magyar Malagasy Malti Nederlands Nedersaksies norsk norsk nynorsk occitan Oromoo oʻzbekcha/ўзбекча Plattdüütsch polski português română shqip slovenčina slovenščina Soomaaliga suomi svenska Tiếng Việt Türkçe Vahcuengh vèneto Wolof Yorùbá Zazaki српски / srpski беларуская български қазақша македонски монгол русский тоҷикӣ українська Ελληνικά Հայերեն ქართული नेपाली मराठी हिन्दी অসমীয়া বাংলা ਪੰਜਾਬੀ ગુજરાતી ଓଡ଼ିଆ தமிழ் తెలుగు ಕನ್ನಡ മലയാളം සිංහල ไทย မြန်မာဘာသာ ລາວ ភាសាខ្មែរ ⵜⴰⵎⴰⵣⵉⵖⵜ አማርኛ 한국어 日本語 中文(简体)‎ 吴语 粵語 中文(繁體)‎ ייִדיש עברית اردو العربية پښتو سنڌي فارسی ދިވެހިބަސް
Mkgmap ±

Help

Routing

Known issues

Development

Download maps

Einführung

Wenn Sie OSM-Daten auf ein Garmin-GPS-Gerät laden wollen, können Sie entweder vorkompilierte Karten herunterladen, oder Sie können Sie selbst kompilieren. Diese Seite beschreibt die letztgenannte Option. Die produzierten Karten bieten Untestützung beim Routing (für Autos) und die Suche nach Adressen.

Vorbedingungen

Sie müssen folgende Software/Tools herunterladen:

Installiere Java Runtime Environment 1.8. Beide mkgmap und splitter sind abhängig davon.


Anleitung

Download OSM Daten (.osm, .osm.pbf or .osm.gz) für eine bestimmte Region. Spiegelserver mit Extrakten sind hier aufgelistet. Geofabrik ist ein guter Ausgangspunkt.

Verwenden Sie Splitter, um die RAW-Kartendaten in kleinere Stücke (tiles) aufzuteilen. Dies ist notwendig, weil die meisten der heruntergeladenen Region-Extrakte zu groß sind, um von mkgmap verarbeitet zu werden. Als Beispiel:

$ java -Xmx2000m -jar splitter.jar dach-latest.osm.pbf


Die daraus resultierenden tiles heißen 6324xxxx.osm.pbf, wobei xxxx die fortlaufende Nummerierung 0001, 0002, 0003... ist.

Diese Kacheln können in eine Karte als-is kompiliert werden, aber die resultierende Karte würde keine Adressierung von Daten (z.b. Stadt oder Postleitzahl). Die Adressierung der Daten stammt aus vorgefertigten Grenzkacheln, und Sie können diese entweder herunterladen von mkgmap.org oder erstellen Sie Sie selbst, wie es in Mkgmap/help/options#Using_preprocessed_bounds_for_the_address_index beschrieben ist. Platzieren Sie die resultierenden Dateien in ein Unterverzeichnis mit dem Namen bounds.

Anschließend können Sie mit mkgmap die Kacheln und Begrenzungs Informationen für ein Garmin GPS verständlich kompilieren.

$ java -jar mkgmap.jar \
    --route \
    --add-pois-to-areas \
    --bounds=bounds \
    --index \
    --gmapsupp \
    6324*.osm.pbf


Dadurch entstehen mehrere Dateien, darunter die begehrte gmapsupp.img Datei. Kopieren Sie diese Datei auf die SD-Karte, die vom GPS verwendet wird. Die Details sind hier aufgelistet, aber hier ist eine schnelle Auffrischung:

  • The SD card should be formatted as FAT32.
  • There should be a folder called "Garmin" at the root of the SD card.
  • The gmapsupp.img goes into the "Garmin" folder.


Die Karte anpassen

Sie können mehrere Optionen und die Style-Dateien von mkgmap verwenden, um Ihre Karte auf Ihre Bedürfnisse zu anpassen. Lesen Sie hier die folgenden Details:


Detaillierte individuelle Kartenerstellung und Integration in BaseCamp

Dies ist ein detaillierteres Tutorial für die Erstellung des französischen Straßennetzes, das für Autos zugänglich ist (um ein nüvi 250 GPS-Gerät zu aktualisieren) und die Erstellung eines Installers, um die Verwendung der Karte mit dem Garmin Basecamp Programm in Windows zu ermöglichen.

Voraussetzungen

Wir testeten die folgendes auf Ubuntu 14,04 und den Installer auf Windows 10.

Software / Tools:

  • Java Runtime Environment from http://www.java.com
  • mkgmap (r3676)
  • splitter (r437)
  • osmconvert (0.7T) (kann über das Debian/Ubuntu-Paket osmctools installiert werden, durch) $ sudo apt-get install osmctools
  • makensis (kann über das Debian/Ubuntu-Paket osmctools installiert werden, durch) $ sudo apt-get install nsis

    wir arbeiten in einem Ordner "map" von wo aus wir "splitter.jar" und "mkgmap.jar" ausführen. Dies können wir duch Download von "mkgmap-r3676.zip" und "splitter-r437.zip" Dateien von http://www.mkgmap.org.uk/download/ in unser aktuelles Verzeichnis "map", entpacke die Archive dort und erstelle einen symbolischen Link zu den .jar Dateien in unserem aktuellen Verzeichnis $ ln -s ./mkgmap-r3676/mkgmap.jar mkgmap.jar.

    OpenStreetMap Daten:

    Wir holen die aktuellen OSM-Daten vom Geofabrik Server (France data) : france-latest.osm.pbf. Das .pbf Format welches hier benutzt wird ist ein stark komprimiertes Binärformat weit mehr komprimiert als das Original xml für uns lesbare .osm Format. Für unser Projekt möchten wir ein Mittelding verwenden, indem wir .o5m benutzen, welches schneller zu schreiben ist als .pbf durch das osmconvert Tool: osmconvert france-latest.osm.pbf france-latest.o5m.

    Vorverarbeitete OpenStreetMap-Daten:

    We will ask Mkgmaps to encode post adresses of places in order to find them on our gps. Also we will ask it to define blue patches for seas. Those elements are not defined directly as openstreetmap objects, but by indicating their boundaries. In order to define which elements are inside the bondaries or not, those former have to be processed first. This process generates files useful to generate adresses and sea area. Up-to-date Sea and administrative preprocessed boundaries can be downloaded from the mkgmap web site (files Sea.zip and bounds.zip).

    Reference places data:

    The list of cities populated with more than 1500 persons is kept by the geonames project. Download cities15000.zip(leider dead Link) in order to automatically label splitted map tiles from splitter

    Walkthrough

    First we will use splitter to split our large france-latest.o5m file in smaller processable files in the same format:

    ~.../map$java -jar splitter.jar france-latest.o5m --output=o5m --output-dir=francesplittertempfile --max-areas=4096 --max-nodes=3000000 --wanted-admin-level=8 --geonames-file=cities15000.txt > francesplitter.log
    

    Please note that I adapted the maximum size and number of nodes allowed in the output files in order to limit the number of tiles in the final Garmin .img map, on the other hand it augment the risk of running out of memory in the next steps... I asked to keep element linked together up to the level of the cities because it seemed that obtained better address search results this way.

    This step produces a new folder ./francesplittertempfile and a log file francesplitterlog in our current directory. The new folder contains among others a mkgmap option file template.arg with name and description field of all the 6324xxxx.o5m files of the subregions generated by the operation.

    Second, we will generate our custom mkgmap style rule files that contains all the rules about how to process the osm objects/include them in the .img files. We will start modifying the default style file that can be found in ~/map$./mkgmap-r3676/examples/styles/ and make a copy the default folder in our map folder to edit the rules with name road_only.

    We let the options file as it is. New style description can be updated in the info file. In relations, lines, and points we comment all the line corresponding to elements that we do not want to show in the map (OSM object that are not covered by a rule are disregarded by default). Hence in the points file, we comment all the lines but those that correspond to car necessities, routing and addressing:

    • place=...
    • amenity=fuel ...
    • amenity=parking ...
    • highway=...
    • <finalize> name=* { name '${name}' } include 'inc/address';

    an include line is used for readability and refer to another file that is incorporated as it is. Thoses files such as road_only/inc/address must be checked also...

    Third, we will use mkgmap program to generate the garmin .img maps note that options order matters a lot:

    ~.../map$java -jar mkgmap.jar --max-jobs --gmapsupp --tdbfile --nsis --output-dir=OSMFRANCE_light --mapname=OSM_FRANCE_light --country-name="FRANCE" --family-id=6324 --family-name="OSM_light france 2016" --series-name="OSM france map" --area-name="France" --country-abbr="FRA" --style-file=./road_only --precomp-sea=sea.zip --generate-sea --route --drive-on=detect,right --process-destination --process-exits --index --bounds=bounds.zip --location-autofill=is_in,nearest --x-split-name-index --housenumbers --remove-ovm-work-files --verbose -c ./francesplittertempfile/template.args
    


    Fourth we will build the windows installer for Basecamp map usage running the script osmmap.nsi automatically generated by mkgmap to makensis:

    ~.../map$ makensis ./OSMFRANCE_light/osmmap.nsi
    

    Note that the .img files are compressed in the installer. By default, mkgmap generates a building script asking for a lzma compression that has excellent compression ration and extraction time properties but can takes a very long time to complete. You might be interested to build a bigger file in less time using the simpler zlib compression algorithm by changing the corresponding option value line in the .nsi script file befor you build the installer (using sed -i 's_SetCompressor /SOLID lzma_SetCompressor /SOLID zlib_g' ./OSMFRANCE_light/osmmap.nsi)

    (Once the installer is build, all 6324xxxx.img files can be deleted using for i in "./$DIR/6324*.img"; do rm $i; done)