Multilayer Garmin Karten mit mkgmap 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 ...
  • Was lange nicht moeglich erschien, oder zu kompliziert ist nun dank mkgmap moeglich. Multilayerkarten fuer Garmin GPS.


    Warum?


    Naja viele User wollen ja dass Straßen so wie bei den meisten Raster Vektorkartenumsetzungen (etwa Mapnik, oder Google Maps) beim heranzoomen dicker werden.


    Mkgmap unterstuetzt die Moeglichkeit per [resolution 22-18] zum Beispiel eine Linie/Straße/Objekt nur in bestimmte Levels einzutragen.


    Will man also zum Beispiel Fahrradrouten je nach Zoomlevel unterschiedlich darstellen so traegt man im Relations file ein


    route=bicycle {add route=bicycle; add bicycleroutelevel=1; add bicycleroutelevel=2; add bicycleroutelevel=3 ...}


    Und kann nun im "lines" File, einfach als Regeln aufstellen
    route=bicycle & bicycleroutelevel=1 [0x01 resolution 18-16 continue]
    route=bicycle & bicycleroutelevel=2 [0x02 resolution 20-19 continue]
    route=bicycle & bicycleroutelevel=3 [0x03 road_class=4 road_speed=7 resolution 21 continue]



    ---- oder einfach wieder einmal ein Grund, warum mkgmap einfach cgpsmapper ueberlegen ist....:D


    Nun braucht man nur noch den Typen per Typfile eine differenzierte Darstellung zu goennen.


    So kann man zum Beispiel Fahrradrouten im Level 24-21 neben der Straße anzeigen, und ab Level 20 auf der Straße - dies hat den Vorteil dass die Linie seltener unterbrochen dargestellt wird so dass man wenn weit herausgezoomt leichter den Ueberblick behaelt.

  • Hi, Felix,


    bislang verfüge ich ja immer noch über eher rudimentäre Kenntnisse des "Style-systems" von mkgmap.
    Ich habe daher mal versucht dein Beispiel nachzuvollziehen. Ich habe also eine Relation angelegt in meinen Testdaten und
    ihr eine paar Wege (member) zugeordnet).
    Soweit sogut. Dann habe ich die von dir vorgeschlagenen Einträge im Relations und Lines-File vorgenommen.


    Diese Einträge bringen bei mir aber nicht das gewünschte Ergebniss. Keine der Linien wird erstellt.


    Die Verwendung einer ADD-Action geht doch nur dann, wenn nicht schon ein entsprechendes Tag existiert.!?
    Wenn also "add bicycleroutelevel=1" ausgeführt wurde, wird "add bicycleroutelevel=2" übergangen.


    Also würde ich eher
    add bicycleroutelevel1=1; add bicycleroutelevel2=2; add bicycleroutelevel3=3 usw.
    erwarten.


    Desweiteren ist mir der Sinn des "add route=bicycle" nicht klar. Erst verlange ich Erfüllung der RULE route=bicycle und
    dann soll eine ADD-Aktion auf das abgefragte Tag ausgeführt werden, was per Definition eigentlich nicht ausgeführt werden kann?.
    Wenn dann müsste es doch eine SET-Aktion sein( wie im Beispiel des Default-Relation-File) obwohl mir auch da aus
    selbigen Grund der Sinn im Moment noch verborgen bleibt.


    Nach meinem bisherigen Verständniss muss doch APPLY verwendet werden um die gewünschten AKTIONEN IM RELATIONS-File
    auszuführen.!?


    Das gewünschte Ergebniss habe ich dann wie folgt hinbekommen:
    RELATIONS-FilE
    route=bicycle { apply { add bicycleroutelevel1=1; add bicycleroutelevel2=2; add bicycleroutelevel3=3; }}


    LINES-File
    route=bicycle & bicycleroutelevel1=1 {name}[0x01 resolution 18-16 continue]
    route=bicycle & bicycleroutelevel2=2 {name}[0x02 resolution 20-19 continue]
    route=bicycle & bicycleroutelevel3=3 {name}[0x03 road_class=4 road_speed=7 resolution 21 continue]


    Anmerkungen hierzu:
    RELATIONS
    Es geht auch mit add route=bicycle; oder set route=bicycle;
    Wobei ich dann gerne den Sinn erfahren + verstehen würde.
    LINES
    ich habe es nicht ohne das hinzufügen von irgendeiner AKTION wie z.B. {name..} vollständig hinbekommen.
    Ohne wird die jeweilige Zeile nicht ausgeführt.


    Gruss Gert

  • Ups sorry, mus natuerlich apply beim RELATIONS File rein. Hab das irgendwie vergessen beim schreiben


    Add funktioniert nur, wenn das Feld noch nicht existiert. Set ueberschreibt. Append gibt es leider nicht sondern muss manuell gemacht werden (daher elending lange Regeln mit "|" ).


    Einen Action Block braucht es aber nicht - warum es bei dir ohne { } nicht funktioniert, kapier ich nicht. Vor allem da "{name}" ja gar nichts ausfuehren wuerde. Name funktioniert normalerweise so: { name '${name} swing' | 'swing' }


    - Was leider nicht geht, sind verschiedene Namen fuer die Lines,


    Bei dir ist aber ein Fehler drinnen im Lines File, da due route=bicycle nicht gesetzt hast, kannst du es eigentlich auch nicht abfagen. du duerftest nur


    bicycleroutelevel1=1 [0x01 resolution... continue] als Regel im Lines File haben.


    Ich verwende haeufig add versus set, um Prioritaeten zu aendern. Etwa wenn man keine route=bicycle angezeigt haben moechte, wenn route=mtb existiert und per set route=mtb hinzugefuegt wurde.

  • 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!
    Alternativ sehr gerne auch per Paypal spenden.
    Vielen, vielen Dank ...

  • Add funktioniert nur, wenn das Feld noch nicht existiert. Set ueberschreibt.


    Habe ich auch so aus den wenigen vefügbaren Infos z.B.WIKI, verstanden



    Einen Action Block braucht es aber nicht - warum es bei dir ohne { } nicht funktioniert, kapier ich nicht.


    Ich habe es gestern wirklich den GANZEN Tag probiert und nur so hinbekommen. Werde es aber die Tage wenn ich Zeit habe nochmal probieren. Ich bin da auch nur drauf gestossen, weil ich zuerst dachte es läge evtl. an fehlenden "with_actions" Einträgen und dann dachte, probiere es doch einfach mal mit einer DUMMY-Aktion aus. Ich war dann auch sehr überrascht das es plötzlich funktionierte.


    Vor allem da "{name}" ja gar nichts ausfuehren wuerde. Name funktioniert normalerweise so: { name '${name} swing' | 'swing' }


    Das weiss ich seit ich mich vor geraumer Zeit mit den Highway shields herum geschlagen habe


    - Was leider nicht geht, sind verschiedene Namen fuer die Lines,


    Gerade das war aber auch ein Teil meines Antriebes um das auszuprobieren.
    Und was soll ich sagen, mit Einträgen der Art
    route=bicycle & bicycleroutelevel1=1 {name}[0x01 resolution 18-16 continue]
    route=bicycle & bicycleroutelevel2=2 {name '${ref|highway-symbol:box:6:4}'}[0x02 resolution 20-19 continue]
    route=bicycle & bicycleroutelevel3=3 {name ''}[0x03 road_class=4 road_speed=7 resolution 21 continue]


    behält Linie1 den vollen Namen
    erhält Linie2 das highway shield
    erhält Linie3 ein leeres Label


    Was aber natürlich nur Variationen des eigentlichen Namen sind.
    Du meintest wohl wirklich völlig unterschiedliche Namen wo der Datenursprung unterschiedich wäre.


    Bei dir ist aber ein Fehler drinnen im Lines File, da due route=bicycle nicht gesetzt hast, kannst du es eigentlich auch nicht abfagen. du duerftest nur


    bicycleroutelevel1=1 [0x01 resolution... continue] als Regel im Lines File haben.


    Wieso ist route=bicycle nicht gesetzt?
    Sind diese Linien nicht Kopien der Linien die Member der Relation sind?
    Und wenn diese Member als Tag route=bicycle haben, haben es doch auch die Kopien oder? Und wenn sie es nicht hätten würde doch auch die entsprechende Rule im Relations-File nicht erfüllt !?


    Gruss Gert


  • Highway Shield ist unabhaengig, das ist klar. Aber ist der Name auch unterschiedlich?


    mit name '' waere ich ganz ganz vorsichtig. Meist wird dann der Name naemlich wirklich '' gesetzt, und je nach GPS wird dann statt keinem Namen '' angezeigt. Namen loeschen ist AFAIK nicht moeglich.


    Seitdem continue und continue with actions existieren, ist das ganze ein bisserl anders geworden - evtl hab ich hier einfach auch Sachen uebersehen die vorher nicth moeglich waren.



    Wieso ist route=bicycle nicht gesetzt?
    Sind diese Linien nicht Kopien der Linien die Member der Relation sind?
    Und wenn diese Member als Tag route=bicycle haben, haben es doch auch die Kopien oder? Und wenn sie es nicht hätten würde doch auch die entsprechende Rule im Relations-File nicht erfüllt !?


    Gruss Gert


    Weil mkgmap ja keine Relationen im Lines File auswertet, genau deswegen ist ja das Relations File vorgeschaltet.
    Was von einer Relation uebernommen wird oder nicht, ist von apply... abhaengig. Route=bicycle steht ja nicht im Tag der Linie, sondern meist nur im Tag der Relation (okay, es gibt haeufig auch doppelt gemoppelt).

  • Etwas O.T.


    Gert, koenntest du eigentlich mal im maptk Typfileeditor aendern (wie per e-mail schon zweimal von mir angefragt), dass er nicht meckert wenn man komplett transparente Linien hat - zurzeit muss man dies per Texteditor aendern, und darf ab dann die Linie/Objekt nicht mehr oeffnen. Gerade im Zusammenhang mit Multilyerkarten - wo man eine unsichtbare Linie fuers Routing benutzt, waere dies weniger umstaendlich.


    Genauso waere es gut, wenn bei einfarbigen Polygonen, nicht transparent als zweite Farbe gewaehlt wird, sondern dieselbe Farbe noch einmal. Dies muss man zurzeit auch per Texteditor aendern.

  • 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!
    Alternativ sehr gerne auch per Paypal spenden.
    Vielen, vielen Dank ...
  • Aber ist der Name auch unterschiedlich?


    {Name 'Mein Strassenname'}
    zeigt mir im Label der Linie nach öffnen mit Gpsmapedit Mein Strassenname (Ohne Anführungszeichen).



    mit name '' waere ich ganz ganz vorsichtig. Meist wird dann der Name naemlich wirklich '' gesetzt, und je nach GPS wird dann statt keinem Namen '' angezeigt. Namen loeschen ist AFAIK nicht moeglich.


    Im erstellten img ist für diese Linie zumindest nur ein leeres Label zu sehen wenn ich es mit GpsMapedit öffne. Wie es auf dem GPS ausschaut habe ich nicht geprüft


    Route=bicycle steht ja nicht im Tag der Linie, sondern meist nur im Tag der Relation.


    Genau, in meinen Testdaten hatte ich in Unkenntnis der Zusammenhänge es auch in der Linie eingetragen.
    Sehr schön, damit weiss ich dann nun auch wozu der "add route=bicycle" Eintrag in diesem Fall eigentlich ist.


    Gruss und Dank


    Gert

  • Felix,


    ich bin ja fast geneigt mich geschmeichelt zu fühlen, und ich würde dich bei deiner hervorragenden Arbeit ja gerne unterstützen, aber ich habe nur rudimentäre Phyton-Kenntnisse die gerade mal zur Erweiterung von Skripten wie mp2osm reichen aber nicht zur Maintainance von komplexen Programmen wie MapTK. Außerdem habe ich nicht den Quellcode denn ich bin leider nicht der Author das ist der : JürgenD


    Gruss


    Gert

  • Felix,
    Außerdem habe ich nicht den Quellcode denn ich bin leider nicht der Author das ist der : JürgenD


    Gruss


    Gert


    Ups shit, eh klar. Irgendwie verprallt

  • 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!
    Alternativ sehr gerne auch per Paypal spenden.
    Vielen, vielen Dank ...
  • maptk Typfileeditor aendern (wie per e-mail schon zweimal von mir angefragt), dass er nicht meckert wenn man komplett transparente Linien hat - zurzeit muss man dies per Texteditor aendern, und darf ab dann die Linie/Objekt nicht mehr oeffnen. Gerade im Zusammenhang mit Multilyerkarten - wo man eine unsichtbare Linie fuers Routing benutzt, waere dies weniger umstaendlich.


    Setz doch übergangsweise 1 Pixel der Linie auf eine unscheinbare Farbe. Das sieht man an den kleinen Display so gut wie gar nicht.
    Mache ich jedenfalls so.


    Gruss Gert

  • Doch sieht schon recht stoerend aus. Ausserdem ist es ja nicht notwendig. Komplett unsichtbar geht in Mapsource wie auf allen GPS die ich probiert habe, zurzeit mit maptk halt etwas umstaendlich.