mkgmap: maxspeed setzen

In meinen Garmin-Karten möchte ich die Höchstgeschwindigkeit auf den niedrigsten Wert von maxspeed, maxspeed:forward und maxspeed:backward setzen. In der lines Datei habe ich eingetragen:

maxspeed:forward=* & maxspeed!=* { set maxspeed='${maxspeed:forward}' }
maxspeed:forward=* & (maxspeed:forward<maxspeed) { set maxspeed='${maxspeed:forward}' }
maxspeed:backward=* & maxspeed!=* { set maxspeed='${maxspeed:backward}' }
maxspeed:backward=* & (maxspeed:backward<maxspeed) { set maxspeed='${maxspeed:backward}' }

Den Wert füge ich schließlich dem Namen hinzu, um gleich mit QLandkarte das Ergebnis prüfen zu können.

Es funktioniert leider nur teilweise.
Ist nur maxspeed:backward gesetzt, paßt’s.
Sind forward und backward gesetzt, erhalte ich forward, obwohl backward kleiner ist. Als Beispiel herifür kann die B22 westlich von Bayreuth dienen (http://www.openstreetmap.org/browse/way/70594951) mit backward 40 und forward 60.

Wie muß ich obige Vergleiche schreiben, daß sie stets korrekt funktionieren, egal ob nun forward oder backward kleiner ist?

Gab es da nicht so etwas wie “continue” (weiter prüfen) in den Regeln für mkgmap?
Ansonsten hört mkgmap wohl beim ersten Treffer auf.

Hinweis: Mein ‘Wissen’ stammt nur aus dem Forum, nicht aus eigener Praxis.

Edbert (EvanE)

Bei den action rules {…} ist das unnötig.

Ich weiss nicht ob das schon geht. AFAIK kann auf der rechten Seite nur mit Konstanten verglichen werden.

So würde ich es probieren:


maxspeed=* { set xy:maxspeed='${maxspeed}' }
maxspeed:forward < maxspeed { set xy:mxspeed='${maxspeed:forward}' }
maxspeed:backward < maxspeed) & (maxspeed:backward < maxspeed:forward) { set xy:mxspeed='${maxspeed:backward}' }

Danke für eure Ideen. Aber so geht’s leider nicht. Steve hat inzwischen einen Patch erstellt, siehe:
http://gis.19327.n5.nabble.com/Numerical-comparison-of-two-tags-td5783600.html