Gelöst: Wie kann ich ein eigenes "gmapsupp.img" aus GPX Track erstellen ?

Garmin fenix 7X und epix Gen 2 im Test

Der Schwerpunkt dieses Tests und Vergleichs der Garmin Fenix 7X Solar und Garmin Epix Gen 2 liegt auf den Sensoren wie Höhenmesser, Positionsbestimmung und Herzfrequenz. Was unterscheidet die beiden GPS-Outdoor-Smartwatches? Und wie gut ist die Taschenlampe der Fenix 7X für den Outdoorbereich? Hier geht es zum Test der Outdoor-Smartwatches ...
  • Hi,

    mir ist es gelungen ein existierendes "gmapsupp.img" in Qmapshack zu laden und einen GPX-Track darauf abzubilden.


    Ich möchte nun diesen GPX-Track in das "gmapsupp.img" integrieren (so, als ob es eine Strasse oder ein Fluss wäre) und als ein neues "gmapsupp.img" abspeichern.

    Ziel ist es, dass diese neue "gmapsupp.img" auf meinem alten Etrex Vista HCX als Hintergrundkarte angezeigt wird und der Track dort deutlich (z.B. in hellgrün) sichtbar ist.

    Das würde mit erlauben einen großen GPX-Track mit mehr als den limitierten 10k-Punkten auf meinem Etrex Vista HCX darzustellen.


    Kann ich solch ein neues "gmapsupp.img" mit Qmapshack erstellen ?


    Bisher habe ich keine Option gefunden, die mir erlaubt Karten-Images (*.img, *.kmz) abzuspeichern.

  • ConiKost

    Hat das Thema freigeschaltet.
  • Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
    Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank...
  • Danke für eure Antworten.

    Also, die Links zu den Tools die in der verlinkten Anleitung von WST gegeben sind, funktionieren nicht mehr. Ausserdem hab ich nur Linux und Suche daher Linuxtools um eine "*.img" Karte zu erstellen.

    ich hatte den Eindruck dass das QmapTool von Qmapshack sowas kann - schade, dass es nicht so ist.


    Habt Ihr Vorschläge für andere Linuxtools in denen man "*.img" Karten erstellen kann ?

  • HI

    direkt in die Karte integrieren wird wohl schwierig werden. Wie wäre es eine Garmin Karte nur mit dem GPX Track zu bauen und dann beide Karten ins garmin laden und übereinander legen. Habe das selbst noch nicht gemacht und ich würde auch eher den Track aufteilen und ins Garmin laden.

    Um das irgendwie hinzubekommen wird man um das Programm "mkgmap" nicht herum kommen. https://www.mkgmap.org.uk/download/mkgmap.html


    Google sagt folgendes zum Problem

    Um eine GPX-Datei mit mkgmap zu einer Karte zu importieren, müssen Sie die GPX-Daten in ein geeignetes Format umwandeln und dann mkgmap verwenden, um die Karte zu erstellen. Es gibt keine direkte Importfunktion von GPX in mkgmap, aber Sie können Tools wie gpsbabel verwenden, um die Daten zu konvertieren.

    Hier ist eine allgemeine Anleitung:

    1. GPX-Datei konvertieren: Verwenden Sie gpsbabel oder ein ähnliches Tool, um die GPX-Datei in ein von mkgmap unterstütztes Format zu konvertieren, z.B. ein Shapefile (.shp).

    Code

    Code
       gpsbabel -i gpx -f meine_route.gpx -o shape -F meine_route.shp
    1. mkgmap verwenden: Verwenden Sie mkgmap, um die konvertierten Daten zu verarbeiten und eine Karte zu erstellen. Dies beinhaltet normalerweise das Definieren von Stilregeln und das Erstellen einer Karten-Mapset-Datei.

    Code

    Code
       java -jar mkgmap.jar meine_route.shp --style-file=mein_stil --output-dir=karten_ausgabe
    1. Karten-Datei erstellen: mkgmap erstellt dann eine oder mehrere Karten-Dateien, die Sie auf Ihr GPS-Gerät oder in eine Kartenanwendung laden können.

    Es ist wichtig zu beachten, dass mkgmap keine Routen im eigentlichen Sinne verarbeitet, sondern eher Karten basierend auf den bereitgestellten Daten erstellt. Wenn Sie Routen auf einem GPS-Gerät anzeigen möchten, müssen Sie möglicherweise zusätzliche Schritte unternehmen, um die Routen als solche zu verarbeiten.


    Google Suchanfrage war "mkgmap karte aus gpx importieren"

    Montana 700, Oregon700, Dakota20, Android App OruxMaps, QMS (QMapShack), Linux Arch KDE Plasma6, eigene Garmin Karte mittels mkgmap

  • Super !

    Ich bestätige, das funktioniert (Ubuntu 24) und ich sehen den Track als Karte in Qmapshack.


    Ich weiss jetzt nur nicht ob ich 2 Karten gleichzeitig auf meinem Garmin etrex Vista HCx darstellen kann.


    Eine Idee wie man 2 Karten zusammen "mergen" kann ?

  • Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
    Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank...
  • Eine Idee wie man 2 Karten zusammen "mergen" kann ?

    ebenfalls mit mkgmap. Du must nur in der Befehlzeile entsprechendes eingeben. Und die option --gmapsupp nicht vergessen. Es gibt für mkgmap mehrere Varianten, wie man die Befehlszeile konfigurien kann. Mit .txt und oder .cfg Datein oder direkt in der cmd .Also "viele Wege führen nach Rom". Lies die manpage bzw. Hilfeseiten für mkgmap...

  • Ok, das mit dem "mergen" krieg ich dann irgendwie hin.


    Meine vom GPX Track erstellte "osmmap.img" (hat nur 5kB) kann ich in Qmapshack sehen - das geht.


    Dann hab ich die Datei in "gmapsupp.img" umbenannt und auf meine Garmin-SD-Card unter ./Garmin kopiert. Dort wird die Karte auch "erkannt" und ich kann diese anzeigen lassen (einzeln oder mit der Basemap) - nur sehe ich den Track nicht - es gibt keine Linie oder Pfeile oder so, die den Track erkennen

    lassen könnten.


    Wenn ich die Karte mit der "--gmapsupp" Option erstelle, wird diese im etrex vista garnicht erkannt.

    Verschiedene Versuche mit "--level" oder "--styles" hat nicht geholfen.



    Habt Ihr eine Idee woran das liegt ?

    Kann man mit den "mkgmap" Styles was machen ?


    Mir wäre eine breite rote Linie recht ... aber das man gar nicht sehen kann ist schon komisch.


    Mein Ziel ist es den GPX Track vom NordSüdTrail als "gmapsupp.img" auf dem etrex vista angezeigt zu bekommen: https://www.nordsüdtrail.de/der-trail/downloads/



    Edit: Mit den folgenden Kommandos sehe ich zumindest die "Kachel" von meiner selbstgebauten Karte - aber nicht den Track:

    1. Den GPX Track in ein "osm" Format übersetzen

    gpsbabel -i gpx -f NST_Hauptroute_Komplett_2025.02.gpx -o osm -F NST.osm


    2. Ein "gmapsupp.img" erzeugen:

    mkgmap NST.osm --gmapsupp --output-dir=out_osm_gmapsupp

    5 Mal editiert, zuletzt von HWe ()

  • welche Linie (0x1234 irgendewas) hast Du dem Track zugewiesen ? Welche Drawpriority hast Du für Deine Karte eingestellt ? Welche DrawPriority habe die anderen Karten ? Nur die Karte mit der höchsten DP wird angezeigt. Falls Du die eigene Karte sehen willst, muß deren DP den höchsten Wert haben und ausserden als Transparent erzeugt werden. Anderenfalls werden die drunten liegenden Karte (=Layer) verdeckt. Falls du Erfolg haben willst, must Du Dir Wissen aneigenen zum Dateiformat .mp. Das ist die Vorstufe, aus der die Garmin-img erzeugt werden, ein reines human lesbares txt-Format. mkgmap macht daraus dann die img. shp ist als binärformat nicht so intuitiv. Und wissen bzw. editieren den Eintrag TYP= 0x12345 oder so. Der Typ legt fest, welche Linie es wird. Ist alles erklärt in der Hilfe der Freeware cgpsmapper. Die in der Hilfe von cgpsmapper zum .mp -Format benutzten Begriffe sind weitgehend identisch mit den von mkgmap im STYLE verwendeten. Der Unterschied vom .mp-Format zum osm-Format liegt darin, dass man für die Konvertierung von osm noch den STYLE benötigt. Bei .mp steht alles das, was sonst im STYLE steht, schon in der mp-Datei selbst. Falls Du Zugriff auf Windows hast, würde ich das folgendermasen machen: Dein bereits erzeugtes gpx.img mit der Freeware GpsMapedit öffen--> dort als .mp. speichern und die mp händisch editieren betreffs Layer, DP ,Transparenz, TYP. Entweder in GpsMapedit selbst oder extern mit Editor (UTF8 !!). Nach dem Abspeichern als .mp dann wie gehabt mit mkgmap als img neu erzeugen. Du must immer im Auge behalten, dass alle Kacheln eines Sets untereinander betreffs Transparenz und DP zusammenpassen müssen bzw. abgestimmt sein müssen. Und dann gibt es noch die FID..das würde hier zuweit führen..

    Die ganze Sache kann man auch noch proffessioneller machen, indem man die ursprüngliche auf dem Navi vorhandene gmapsupp mit deiner gpx-img fusioniert. Dazu müßte man die gmapsupp zuerst mit der Feeware Gmaptool in die einzelnen 12345678.img zerlegen und danach diese plus deine gpx.img gemeinsam an mkgmap geben. Es ist egal, ob man die im .mp-Format oder .img-Format an mkgmap gibt. Gemixtes Format habe ich noch nicht selbst getestet, ev. funktioniert sogar das..Das macht daraus eine neue gmapsupp, die eben zusätzlich Deinen Track enthält. Da brauchst Du Dich nicht noch um die FID kümmern..

  • Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
    Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank...
  • Jetzt hat es funktioniert - war gar nicht so schwer:


    1. Aus dem GPX Tarck eine OSM-Karte erstellen

    Code
    gpsbabel -i gpx -f NST_Hauptroute_Komplett_2025.02.gpx -o osm -F NST.osm


    Diese "NST.osm" Datei hat als Elemente nur "Nodes" (die Koordinaten der GPX Punkte) und einen "Way" (der die Punkte als Linie verbindet). Das Problem ist nun aber, dass "mgkgmap" nicht weiss als was für eine Karten-Struktur es diesen "Way" darstellen soll.


    2. Tag/Key im OSM-File hinzufügen

    Deshalb muss man diesem "Way" einen "Key"-Tag hinzufügen - in diesem Fall "highway/motorway" dann wird der Way als dicke rote Linie dargestellt (andere Keys wie "highway/track" oder andere wären auch möglich. Dazu muss die Datei "NST.osm" editiert werden und am Ende der Datei der Tag hinzugefügt werden:

    ...

    <tag k='name' v='NST Hauptroute Komplett 2025.02'/>

    <tag k='highway' v='motorway' />

    </way>

    ...


    3. gmapsupp.img erstellen mit

    Code
    mkgmap NST.osm --gmapsupp  --output-dir=out_map --transparent --draw-priority=100000 

    Das erzeugt die Datei "./out_map/gmapsupp.img" die dann auf die SD-Karte unter ./Garmin kopiert wird.


    Dann wird der GPX Track als Strasse auf der Hintergrundkarte dargestellt.

    Das erste Ziel ist damit erreicht.


    Als nächstes möchte ich 2 Karten zusammenfügen ....

    3 Mal editiert, zuletzt von HWe ()

  • Zwei "gmapsupp.img" zusammenführen ist dann einfach.


    1. Die bestehenden "gmapsupp.img" umbenennen:

    Die existierende Deutschlandkarte: gmapsupp.img --> germany.img

    Die neue GPX-generierte Karte: gmapsupp.img --> nst.img


    2. Dann eine neue "gmapsupp.img" erzeugen:

    Code
    mkgmap --gmapsupp nst.img germany.img  --output-dir=out_map

    Dadurch dass bei der Erstellung der "nst.img" die Optionen "--transparent --draw-priority=100000" gesetzt wurden, wird der GPX-Tack über allen anderen Strukturen dargestellt.

    Einmal editiert, zuletzt von HWe ()

  • Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
    Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank...
  • HWe

    Hat den Titel des Themas von „Wie kann ich ein eigenes "gmapsupp.img" erstellen ?“ zu „Gelöst: Wie kann ich ein eigenes "gmapsupp.img" aus GPX Track erstellen ?“ geändert.
  • Meine Hochachtung, :tup: und Danke , dass Du den Workflow veröffentlichst. Das hilft anderen.


    Optimierungspotenzial bestände noch : dadurch, dass Du die gewünschte Linie zum Highway erklärt hast, wird dieser 'Highway' auch beim Routing mit einbezogen, was ev. Problem geben könnte, falls der Track ursprünglich offroad war. Mein Vorschlag wäre, den Track zu einer nicht-routbaren Linie zu deklarieren und dieser Linie mit einem Typfile die gewünschte Farbe und Strichstärke zuzuweisen. Die Liste aller zulässigen Garmin-Linien habe ich angefügt. In Frage kommt zum Beispiel 0x010601...oder customlines...

    Bei mkgmap im STYLES edidierst Du dann die Datei 'lines', etwa wie folgt cartographic line=* [0x010601 resolution 14] . Allerdings zusätzlich brauchst dann ein Typfile, mit dem der Linie 0x010601 die gewünsche optische Eigenschaft zuordnet wird. Mein bevorzugten Typfileeditor ist hier : https://sites.google.com/site/sherco40/ Typviewerv4.6.5 .

    Betreffs DrawPriority brauchst nicht gleich so in die vollen gehen. CityNavigator hat z.B die DB =30. Alles darüber reicht schon. Dein Wert ist aber kein Fehler, nur ungewöhnlich hoch. Die meisten über OSM bereitgestellten Karten haben als default DB=25

  • Also ich würde gerne eine grüne dicke Linie haben, die den Track darstellt, den rote Linien gibt es bei niedrigen Zoom-Levels zu viele - aber das Konzept dieser Style-Files verstehe ich noch nicht ganz. In der mkgmap Docu vermisse ich die Beispiele-Files.


    Ich habe jetzt einen ./style Ordner angelegt und version, info und lines files angelegt.

    Das "line" File sieht so aus:


    Code
    highway:motorway [0x01 level 0-4]

    Aber der Test mit "mkgmap" bringt einen Fehler:

    Code
    mkgmap --style-file=./style --list-styles --check-styles
    Using /bin/java to execute mkgmap.
    The following styles are available:
    SEVERE (global): Error in style: Error: (lines:1): Incomplete expression, just a single symbol: 'highway:motorway'
    Found one style in ./style
    SEVERE (global): Error in style: Error: (lines:1): Incomplete expression, just a single symbol: 'highway:motorway'
    could not open style style
    finished check-styles


    1. Was ist denn falsch ?

    2. Wie kann ich diesem Element highway:motorway denn eine grüne Farbe und dicke Linie zuordnen - dazu hab ich in der Docu gar nix gefunden ?

    Einmal editiert, zuletzt von HWe ()

  • Fehler gefunden - der ":" muss durch ein "=" ersetzt werden:


    Code
    highway=motorway [0x01 level 0-4]

    Frage 2 bleibt: Wie mach ich das Element hellgrün und dick ? Gibt es da eine Überischttabelle für Styles ?


    Ich habe nun in lines einen custom Style typ definiert:

    Code
    highway=track [0x010e00 level 0-4 default_name 'NST']

    und dazu ein Typfile gemacht "nst.typ":


    aber dann bekomm ich einen Fehler:

    Code
    mkgmap NST.osm --style-file=./style --check-styles --list-styles -c nst.typ
    Using /bin/java to execute mkgmap.
    SEVERE (global): Failed to read option file.
    uk.me.parabola.imgfmt.ExitException: Invalid option: '['
    Number of ExitExceptions: 1
    Time finished: Sun Jul 27 12:44:08 CEST 2025
    Total time taken: 48 ms


    Anscheinend kompiliert das Typ-File nicht. Irgendeine Idee was faslch läuft ?


    Edit: Das "-c" muss weg, dann kommt zumindest kein Fehler mehr:

    Code
    mkgmap NST.osm --gmapsupp --output-dir=out_map --transparent --draw-priority=100000 --style-file=./style --style=NST --check-styles


    Also mein TYPE in nst.typ hat keinen Effekt auf das aussehen der Linie ... ich bräuchte noch ein paar Tips.

    5 Mal editiert, zuletzt von HWe ()

  • Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
    Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank...
  • Eigenlich brauchst Du den STYLE nicht selbst neu zu schreiben. MKGMAP bringt (zumindest unter Windows) ja einen kompletten Ordner STYLE als default mit. Ich verfahre so, dass ich ausgehend von diesem default -STYLE nur die darin enthaltenen Zeilen meinen Wünschen/Vorstellungen entsprechend anpasse und als eigenen STYLE woanders speichere. Bei Dir ist das

    die Zeile in der Datei 'lines' :

    Code
    highway=track [0x010e00 level 0-4 default_name 'NST']


    Auch hat sich bewährt, die vielen Optionen nicht direkt in der cmd einzutippen, sondern in eine eine .conf zu schreiben. Jede Zeile 1 Option..Damit sieht die cmd dann ungefähr so aus :

    Code
    java -Xmx40000m -XX:-UseGCOverheadLimit -jar D:\MyMkgmap\mkgmap-r4921\dist\mkgmap.jar --read-config=L:\OSMKarten\NordAmerica\Street\NA-Test--template.conf -c L:\OSMKarten\NordAmerica\template.args D:\mkgmap\OSMStra.Typ

    Die Reihenfolge ist wichtig : zuerst alle Optionen (die stehenbei mir in der .conf) und nach den Optionen die Datein, die stehen als Liste in der template.args . Vermutlich ist in Deiner cmd die falsche Reihenfolge die Ursache. Falls Du direkt als Quelle irgendein Land benutzt (von Download.openstreetmap) dann wird das template .args automatisch vom splitter erzeugt, aber das trifft auf Deinen Spezialfall ja nicht zu. Also schreibst Du alle Datein, mit Leerzeichen getrennt, nach den Optionen hintereinander..

    Im Typfile werden unter dem Header [_DrawOrder] nur Polygone eingetragen. Für lines gibt es keine DrawOrder. Dein spezielles nst.img hat ja gar keine Polygone, nur lines. Ich habe im angehängten Beispiel was reingeschrieben, aber es hat keine nachteiligen Auswirkungen, nur damit der Compiler nicht meckert.... Du kannst es als funktionsfähige Vorlage benutzen und selbst variieren ...

    Meine Codeschnipsel sind nicht extra für Dich erzeugt, sondern bei mir vorhandene sonstige Kopien..

  • Also, die Links zu den Tools die in der verlinkten Anleitung von WST gegeben sind, funktionieren nicht mehr.

    Ja, das stimmt. Aber wenn man nur 1 Minute selbst sucht, findet man die richtigen Links, auf der gen. Website.



    Ausserdem hab ich nur Linux und Suche daher Linuxtools um eine "*.img" Karte zu erstellen.

    OK, das ist natürlich ein wichtiger Hinweis der gleich im ersten Posting stehen sollte.


    Danke für das Posten der Lösung. :)

  • morgen1 Vielen Dank für die Tipps - jetzt ist es mir gelungen mit einem "nsttyp.txt" File eine grüne Linie vom GPX Track in der Karte zu erzeugen.


    Der wichtige Schritt war wohl, dass ich das "template.arg" mit "mkgmap-splitter" erzeuge und im "nsttyp.txt" die richtige Linienstärke und den richtigen Color-Hex-Code für hellgrün setze.

    Das mit dem Config-File hat auch geklappt, lass ich aber in der u.g. Beschreibung der Einfachhheit halber weg.


    So hat es bei mir geklappt (der ./style-Ordner und das nsttyp.txt sind im Anhang):


    # 1. Generate OSM map from GPX track. Generates NST.osm file

    Code
    gpsbabel -i gpx -f NST_Hauptroute_Komplett_2025.02.gpx -o osm -F NST.osm


    # 2. Edit NST.osm and add the "highway motorway" tag to identify the way as a road:

    Code
    <tag k='name' v='NST Hauptroute Komplett 2025.02'/>
    <tag k='highway' v='motorway' />
    </way>


    # 3. Run Splitter to generate "template.args" from NST.osm

    Code
    mkgmap-splitter NST.osm


    # 4. Generate Map with custom types.

    # Input is template.args

    # Output is defined as ./out_map

    Code
    mkgmap --gmapsupp --output-dir=out_map --transparent --draw-priority=100000 --family-id=1299 --style-file=./style -c template.args nsttyp.txt



    # 5. Merge existing germany "gmapsupp.img" with NST "gmapsupp.img"

    # Rename maps

    # Germany: gmapsupp.img --> germany.img

    # NST: gmapsupp.img --> nst.img

    # The new ./out_merged/gmapsupp.img needs to be copied to the Garmin SD-card

    Code
    mkgmap --gmapsupp ./out_map/gmapsupp.img germany.img  --output-dir=out_merged


    Vielen Dank für den hilfreichen Support !

  • Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
    Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank...