BRouter: offline Fahrrad-Routing für Android

Das ist ein schwieriges Thema, weil es bei diesem Router ja kein oberes Limit für die Bearbeitungszeit gibt. Und es passiert mit dem neuen, besseren Location-Matching zwar nicht mehr häufig, aber immer noch, dass wegen einer “Zielinsel” keine Route gefunden wird, es aber auch kein Abbruch-Kriterium gibt, und das muss man irgendwann beenden. Ich hatte es zuerst mit Warteschlange und Timeout gemacht, aber das ist unglücklich, weil man mit so einem Timeout ein künstliches Limit schafft für die geroutete Distanz, daher das jetzige Verfahren mit dem Process-Kill. Ich denke, man kann das noch bisschen klüger machen mit z.B. einem Pool von 5 parallelen Berechnungen (und erst die 6. schiesst die älteste ab) und einer Rechenzeit-Priorität für die Kurzläufer.

Bei Via-Punkten macht auch BRouter das Routing für jedes Teilstück einzeln, es gibt da ein bisschen Re-Use beim Location-Matching und kleineren Caches, aber das sollte glaubich die Design-Entscheidung nicht beinflussen, ob über vias im Web-Client oder im BRouter iteriert wird.

Ich hab’ Dir die vollständigen Sourcen jetzt geschickt (an Deine gmx-adresse), ohne ists ein bisschen schwierig, weil die API doch arg verbastelt ist. Zu Sperrgebieten ist in RouteServer.java die Anbindung im Prinzip drin (“nogoList”), aber nicht der Konstruktor dieser Objekte:

  List<OsmNodeNamed> nogoList= new ArrayList<OsmNodeNamed>();
  OsmNodeNamed n = new OsmNodeNamed();
  n.name = "nogo2000";
  n.isNogo = true;
  n.ilon = (int)( ( lon + 180. )*1000000. + 0.5);
  n.ilat = (int)( ( lat + 90. )*1000000. + 0.5);
  nogoList.add( n );

Der Radius steckt also im Namen, und das Koordinatensystem ist das BRouter-Interne. Die Erweiterung um via-Punkte in dem RouteServer.java Beispiel ist trivial, da wird einfach nur die Wegpunktliste länger, also statt from-to dann from-via1-via2-to. Die Beschränkung auf 9 Vias gibts nur in der Android-App (wegen der Namenskonvention), an dieser Stelle in der API ist die Zahl nicht beschränkt und auch die Namen der Wegpunkte sind beliebig.

Hallo

ich habe mal im Routeconverterforum nachgefragt ob eine Integration von BRouter von Interesse wäre. Routconverter hat alles für eine komfortable Routenerstellung /Editiermodus etc. standardmäßig schon drin. RC könnte doch auf dem PC die Rolle von Osmand, Oruxmaps sinngemäß übernehmen. Routeconverter ist auch in Java geschrieben.

Würde das die Zustimung und eventuelle Unterstützung vom BRouterAutor bekommen?

MfG
Achim

Hi Achim,

wenn ich es richtig verstehe, kann Routeconverter (noch?) keine Offline-Karten. Richtig Sinn machen würde das ja dann, wenn man so eine echte offline-Lösung für den Desktop schaffen würde, und da hätte ich auch grosses Interesse dran. Wenn man aber ohnehin den online-Zugang braucht für den Tileserver, dann wird man es den Benutzern nicht vermitteln können, sich mit dem Download der Routing-Datafiles rumzuschlagen.

Alternativ könnte man da aber auch den Router als Online-Dienst einbinden (sie haben wohl schon andere Dienste drin?), das wäre ja mit wenig Aufwand zu machen, und da wären wir ja wieder bei Norberts Vorschlag, zunächst mal eine dokumentierte http-schnittstelle zu schaffen mit der vollen Funktionalität in der API.

Ja, ich würde beides (die offline und die online-Integration) unterstützen, mit Arbeit zurzeit nur begrenzt (muss bisschen kürzer treten bei dem Thema), mit der Lizenz kann man das vielleicht irgendeine Lösung finden, den Router dort zu integrieren ohne BRouter gleich selbst unter GPL-Lizenz stellen zu müssen.

Gruss, Arndt

Hallo Arndt,

vielen Dank für die freundliche Antwort.
Eine andere Idee für eine “offline” Version wäre eventuell noch MOBAC als Oberfläche zu benutzen. Ich habe vor langer Zeit mal angeregt, dass man externe Programme mit Parameter aufrufen kann. Damit hat man zum Beispiel Maperitive mit einer Batchdatei steuern können. Dieses Feature hatte ich zusammen mit dem Autor ausgetestet. Sinngemäß könnte man das mal mit BRouter versuchen.

Mir ist aber noch nicht klar wie bekomme ich unter Windows eine Standolone-Version vom BRouter (Kein Server) zum Laufen und wie ist die Parameterübergabe?
Idee wäre man übergibt eine gpx Datei mit mindestends zwei Punkten und bekommnt eine geroutete GPX Datei mit dem Track zurück bzw. mehrere GPX Dateien mit den alternativen Routen. MOBAC,Maperitive und BRouter könnte auch in Betracht gezogen werden, wobei Maperitive ja mit Scripten programmierbar ist.

Viele Grüsse
Achim

Mal ganz was anderes, ich habe gestern auf dem Rad mal über deine Frickeleien nachgedacht, wie Du die Verbindung zu verschiedenen Apps herstellst. Wäre es auf Dauer nicht einfacher, wenn Du deinem Brouter einen eigenen Kartenviewer und Sprachausgabe spendieren würdest. Letztendlich eine eigenständige Navigationsapp. Die Hauptaufgabe sinnvolle Navigation hast Du ja schon gelöst. Der Rest wäre doch eher leicht zu programmierendes Beiwerk?

Aus purem Zufall bin ich letzten Freitag bei Android-Hilfe über einen Beitrag zu Brouter gestolpert und habe es sofort online ausprobiert: Sehr beeindruckendes Resultat für das von mir gewählte Profil (fastbike o.ä., Rennradfahrer).
Als allerersten möchte ich mich aufs herzlichste dafür bedanken!
Heute habe ich mir dann den ganzen offline-Kram heruntergeladen, in einer virtuellen Box installiert und ein wenig damit herum gespielt, als Offroad Proggies fungierten Locus und Oruxmaps.
Ein paar Punkte, die mir dabei aufgefallen sind, möchte ich nachfolgend aufführen.

  1. Ich habe hauptsächlich das Rennrad? Profil gewählt, es hat für mich! erstklassige Vorschläge gelistet, teilw. wirklich excellent.
    Gut asphaltierte Nebenstraßen mit ordentlichen Steigungen (> 10%) waren genauso mit von der Partie wie die stark befahrene Bundesstraßen. Leider sind letztere nicht immer die erste Wahl bei meinen Gesinnungsgenossen aus diversen Radsportvereinen, die meisten versuchen diese zu meiden, insbesondere dann, wenn es weniger verkehrbelastete Alternativen gibt. In diesem Zusammenhang ist mir aufgefallen, dass manchmal auch dann eine mehrfach ampelverstellte Hauptverkehrsstraße gewählt wird obwohl eine lupenreine und sogar kürzere Radwegalternative vorhanden ist.
    Im Extremfall meidet Brouter sogar “Radwege” wie der Teufel das Weihwasser.
    Beispiel ist eine Route von Dormagen/Zons über den Rhein Richtung Wuppertal. Nur mit Start- und Zielkoordinaten versorg wird ohne Zögern die Fähre bei Zons genommen. Für Jugendliche duraus romantisch nehmen die meisten RRler doch wohl eher eine Rheinbrücke. Nachdem die Fähre gesperrt wird findet der Router nur zwei große Umwege, entweder über die A1 bei Köln/Leverkusen oder die Düsseldorfer Südbrücke, beides befahrbare Radwege. die naheliegende Strecke über die Fleher Brücke (A46) mit ihren erstklassigen Radwegen bleibt außen vor. Werden Wegpunkte direkt auf die Brücke gesetzt passiert folgendes: die der linksrheinischen Brückenauffahrt am nächsten liegenden werden zunächst angefahren, dann heißt es wenden und im großen Bogen an der Neusser Galopprennbahn vorbei über die Südbrücke hin zur Fleher, dann die rechstrheinische Auffahrt hoch und die dieser Auffahrt näher gelegenen Punkte einsammeln, wenden, die Auffahrt wieder runter und den Weg fortsetzten.
    Im Modus “tracking” wird die Brücke benutzt, dann aber die holprigere Nordseite, wahrscheinlich wegen der flacheren Auffahrt, die von RRlern bevorzugte “knackigere” und babypoasphaltierte Südseite kommt erst beim Profil “shortest” zum Zug.

  2. Das Profil “shortest” routet ohne Rücksicht auf Verluste, d.h. auch über wenig genutzte weil verwinkelte Brücken, d.h. enge und steile Treppen bzw. Drahtkäfige, wo man sein Rad aus Platzmangel kaum hochtragen kann bzw. senkrecht vor sich her bugsieren muss.

Beim gestrigen Querlesen habe ich irgendwo etwas von einem “Kostenfaktor” gelesen, eine Eingabemöglichkeit dafür habe ich nicht gefunden.
Weiterhin habe ich ebenfalls gelesen, dass Brouter wohl urspünglich für die Cooperation mit OSMAND ausgelegt wurde. Ich konnte aber heute feststellen, dass es, wenn auch “etwas umständlich”, “Routinganforderungen” sowohl von Locus als auch von Oruxmaps erkennt und die Ergebnisse in deren Verzeichnisstruktur bereitstellt. Da nun diese beiden Programme Vektormaps Marke “mapsforge” sollte es doch spätestens mit der nächsten Version 0.4. möglich sein, diese fürs Routen zu nutzen.

…ist diese Aussage Ernst gemeint?

Hast du mal die entsprechenden Kartenprogramme zeitlich verfolgt wie lange das gebraucht hat bis diese in ihrer jetzigen Form stabil waren (OruxMaps, OsmAnd,Mapsforge, Locus etc.). Es ist ja nicht “nur” die Kartenanzeige sondern auch die Track/Routen Verwaltung/Anzeige und das navigieren auf einer vorgegebenen Route. Das ist glaube ich schon ein wenig Zeitaufwändig, oder?
Es geht doch auch um eine Lösung die auf dem PC (großer Bilschirm läuft). Da gilt für die entsprechenden Kartenprogramme das Gleiche (GpsPrune, Routeconverter, etc.)

In diesem Sinne
Achim

Naja, bisschen mehr Respekt vor der Leistung dieser Kartenprogramme hab ich schon, und mein Router ist ein 1-Mann Hobbyprojekt…

Ich verfolge ja eine andere Strategie um die “Frickeleien” zu überwinden, über eine standartisierte Router/Maptool Schnittstelle. So ein bisschen funktioniert das ja schon mit OsmAnd mit dem Hack mit dem Android-Lokalen HTTP-Server, der einen Yournavigation-Server simuliert, und wenn’s irgenwann mal wieder schlechteres Wetter gibt, komm ich da hoffentlich auch weiter.

In “meiner” Höhenpräferenz werden zwar flache Abfahrten bevorzugt, bei den Anstiegen gibt es keine Präferenz, so dass da gerne auch mal steile Anstiege gewählt werden. Viele Leute mögen das nicht und kann man aber ändern.

Ja das fastbike-Profil ist bisschen ein “stiefkind”, weil es nicht so viel benutzt wird und da steckt auch nicht so viel Tuning drin. Ich selbst mache aber zur Zeit viele “schnelle Ebike Touren”, was bisschen vergleichbar ist zum Rennrad, und bastel an einem Profil ähnlich fastbike, was aber auch Radwege un Ampeln kennt.

Das ist ganz klar ein Fehler, und Du kannst Dir aussuchen, ob der Fehler im OSM-Tagging steckt oder im fastbike-Profil. Die A46-Brücke hat “highway=path, bicycle=designated” und das hat im fastbike-Profil Kostenfaktor 10, also so gut wie verboten. Das trekking-Profil hingegen erkennt das “bicycle=designated” und bewertet den Weg besser. Da fehlt einfach ein tracktype=grade1 oder surface=paved, oder highway=cycleway, irgendwas halt, was den Weg aufwertet.

shortest ist auch nicht zum Radfahren gedacht, es ist einfach der Kürzeste Weg, den man zu Fuss passieren kann.

Die Profile enthalten die Kostenfaktoren, wenn Du da mal reinschaust siehst Du ganz viele Zahlen und die meisten davon sind Kostenfaktoren. Und die Fähre wurde auch nicht einfach so genommen, sondern mit 10000m Zusatzkosten, also die nimmt er nur, weil die Brücke so weit weg ist. Und diese Zahlen kann man alle ändern. In der Online-Version gibts dafür einen “Upload” Button, auf dem Handy muss man das mit einem Texteditor machen.

Den Gedanken hatte ich auch schon, statt meiner eigenen “routing-data-files” einfach die open-andro-maps zu nehmen, aber ich habe mir das Format bisher nicht näher angeschaut, meine eigenen Dateien sind halt von der Daten-Vorverarbeitung und der Index-Struktur schon ziemlich spezifisch für schnellen Zugriff fürs Routing gemacht.

Hallo Arndt,

Ich könnte mir schon vorstellen die Tags die Du brauchst in die OpenAndroMaps einzubauen, oder auch deine Routingfiles so wie sie jetzt sind passend zu meinen Karten zu generieren.
Ich könnte ja mal eine Testkarte generieren, was ich bräuchte sind informationen über die erforderlichen Tags und was Du sonst noch benötigst und einen Permalink für den gewünschten Ausschnitt.

Wobei, vom Standpunkt der allgemeinen Verwendbarkeit ist Deine Lösung mit den eigenen Routingfiles sicher besser da es damit egal ist ob jemand die Freizeitkarte oder die Openandromaps oder die internen Locus-Karten verwendet. Ausserdem ist der User (und auch Du) damit unabhängig von Versionswechseln und Bugs in Mapsforge (da gibt es ganz Fiese) ausserdem nimmt Mapsforge immer das gesammte Objekt (Way/Poi) mit in die Karte auf wenn auch nur ein Tag gematched wird was bedeutet, das wenn ein way eine Routinginformation enthält, der ganze way mit allen Tags schon bei sehr niedrigen Zoom_leveln (die Du sicher fürs Routing ab Zoom Level 1 brauchst) komplett in die Karte aufgenommen wird - was sicher Probleme verursacht. … Müsste man ausprobieren.

Beste Grüsse
Christian
www.openandromaps.org

Ui, das ging ja schnell…

Danke, habe ich heute entdeckt, ebenfalls auch so was wie ne Doku
(developers guide), muss ich mir mal reinziehn.
Ebenso habe ich entdeckt, dass Du wohl mit menion in Kontakt steht, sehr schön.
Das mit dem Server ist ne prima Sache, die auch weitere Einsatzmöglichkeiten eröffnet.

OT: Jetzt muss man Orux nur noch gescheite Sprachansagen beibringen :wink:

Das steht völlig außer Frage und ist bei Verwendung von Pixelbildchen auch unerlässlich, es ging nur um den speziellen Fall des Vorhandenseins von mapsforge-Daten. Wenn ich richtig gelesen habe, sollen die in der Version 0.4 routingfähig werden. Ob das dann tatsächlich klappt, steht auf einem anderen Blatt.
Abgesehen davon ist auch auf Sd-Karten der Plattz nicht unendlich und bei echten Fernradlern kanns da auch schon mal knapp werden.

Etwas anderes, was ich gestern vergessen hatte, und mir beim Testen diverser Brücken aufgefallen ist:
Bei sehr kurzen Routen, so ca. 1 - 2 km LL wurden viapoints ignoriert, das Ergebnis kam dann auch ziemlich schnell ohne sichtbare Animation.

Hi Christian,

naja, was ich bräuchte und was ich in den jetzigen rd5-Dateien drin habe ist leider nicht dasselbe… Ein voll-konfigurierbarer Router braucht per Definition alle Tags mit abzählbaren Wertebereich (d.h. Freitextfelder oder auch Strassennamen brauche ich nicht) In der lookup-Datei (http://brensche.de/brouter/profiles2/lookups.dat ) sind die 26 way-tags aufgeführt, die tatsächlich drin sind, wobei einige auch synthetisch sind (reversedirection, highway=ferry, …). Die Beschränkung auf diese 26 ist eine rein technische, weil ich die in ein 64-bit Wort kodiere, und das ist eine ziemlich schmerzhafte Einschränkung, weil das viele Spezialanwendungen verhindert (Wheelchair-Routing zum Beispiel). Bei den Relationen ist es noch dünner, ich packe nur ein syntethisches Tag an den way: longdistancecycleway=yes heisst, es gibt mindestens eine Relation mit route=bicycle. Das heisst das Network-Tag an der Relation geht mir verloren, und das tut auch weh (“route=bicycle network=radweit” ist was ganz anderes als network=ncn), und Fernwanderwege sind auch nicht drin und Abbiegebeschränkungen auch nicht.

Also sollte ich irgendwann nochmal das Format refactoren, dann natürlich mit dem Ziel, diese Beschränkungen zu überwinden. Aber aktuell ist das kein Thema für mich. Speziell ist natürlich in den rd5-Dateien noch, dass an jedem Node die Höhe dransteht (linear aus SRTM interpoliert), glaube in den Vektor-Karten steht die nur indirekt als Höhenlinie?

Gruss, Arndt

Ich vermute einfach mal, dass Orux die Android-Sprachausgabe nutzt. Also müsste man nicht Orux gescheite Sprachansagen beibringen sondern dem Android eine bessere TTS-Engine verpassen (in FroYo: com.android.settings → “Voice input & output settings” (das vorletzte)). (Ausser du meintest den verwendeten Text und nicht die Stimme, ich kenne Orux nicht)

So, ich oute mich mal, als wenig englisch sprechender/verstehender. :slight_smile:
Kann mir bitte einmal jemand die Namen der Profile übersetzen/erklären?

car-Test = scheint für Autos zu sein, also für mich nix. :slight_smile:
trecking-ignore-cr= ???
trecking-nosteps= ???
trecking=Normales Radfahren?
safety=Sicherheit? Was wird da sicherer?
shortest=Kürzester Weg auch über Landstraßen?
trekking-steep= ???
trekking-noferries= ???
fastbike= Rennrad?
moped= Roller/Moped, also keine Radwege, also für mich nix. :slight_smile:

Meine Frage ist, welches der Profile soll ich verwenden, wenn mir folgendes wichtig ist.
Radwege=OK
Fußgängerwege=OK
Feldwege=Ok, wenn sie befestigt sind. (ich bin kein Matschfahrer)
Normale Straßen, also Ausserorts nur wenn es sein muss.

Ich dachte, damit wäre ich der normale Radfahrer.

Gruß, Rudi

car-Test = Auto, aber ohne Abbiegebeschränkungen, also in Städten mit Vorsicht zu geniessen
trekking-ignore-cr= Radrouten ohne Berücksichtigung von Fernradwegen
trekking-nosteps= Radrouten, die keine Treppen enthalten dürfen
trekking= “Normale Radrouten”
safety=Radrouten mit Vermeidung von Hauptstrassen ohne Radweg
shortest=kürzester Weg, der zu Fuss passierbar ist
trekking-steep= Radrouten ohne Berücksichtung des Höhenprofils
trekking-noferries= Radrouten, die keine Fähren enthalten dürfen
fastbike= Radrouten im wesentlichen auf Strassen oder erstklassigen Wirtschaftswegen/Radwegen
moped= Radrouten da, wo auch Autos fahren dürfen (auch für S-Pedelec)

Dann ist trekking schon o.k., wobei das im Dunkeln oder bei Regen
schon grenzwertig sein kann. Dann besser auf fastbike ausweichen.

Kurz und schmerzlos: ausprobieren!
steep heißt steil, noferries vermeidet Fähren, nosteps wahrscheinlich Treppen, ignore-cr und safety… k.A., bislang habe ich keines dieser Profile getestet.
Tracking ist zumindest nicht übel.

Wenn eine Landstraße auf dem kürzesten Weg vorkommt, ja.
Ansonsten werden Steiltreppen und Drahtkäfige genauso bevorzugt wie SIngletrails, also nicht matschig sondern mitunter auch extrem holprig.

Ausgehend von der Prämisse “BRouter: offline Fahrrad-Routing für Android” sollte man da vielleicht einen Warnhinweis ausgeben :wink:

Ich wollte es kaum glauben, aber Orux war fast schneller als der Schall:P, heute morgen war eine neue Beta fettich!

  1. Brouter starten und als Server schlafen legen.
  2. Oruxmaps starten, die Routenschalfläche betätigen, Route suchen selektieren, Startposition klicken, Ziel klicken, Broute (offline) als Dienst selektieren und ab die Lucy…nach kurzer Wartezeit wird die fertige Route eingeblendet. Wow!

Es handelt sich um eine erste Beta ohne viel Schnickschnack, da geht es ums Zusammenspiel, um Serverstabilität, einfach um die generelle Funktionsweise.
Brouter wird aufgerufen so wie er ist, bzw. in dem Zustand, in dem er als Server zum Schlafen bzw. watchdoggen, lauschen oder was auch immer geschickt wurde, d.h. ohne weitere Wegpunkte, ohne Profile, es wird das zuletzt verwendete herangezogen.
Wer das Profil wechseln möchte muss Brouter aufwecken und das gewünschte Profil selektieren.
Wer mit Wegpunkten und Sperrzonen arbeiten möchte kann das selbstverständlich auch, einfach wie gehabt definieren, Brouter starten, Animation betrachten und im Anschluss die erstellte Route selektieren und laden.
Möchte man im Anschluss wieder das interne Serverrouting strapazieren, no problem. Wenn man dafür aber das Profil wechselt und die erstellten Wegpunkte in der DB nicht entfernt hat gibt es eine schöne Animation und eine weitere Route:P

Und sonst? Einmal habe ich mich vertan und beim Initialisieren des Servers wahrscheinlich das Autoprofil gewählt, meine in die Pampas gelegten Eckpunkte wurden ungefragt auf in der Nähe befindlichen Kreuzungspunkten von Autustraßen gelegt:D

Ein paar Bildchen…


Definition in Oruxmaps


erneute Definition in Oruxmaps mit gleichen Koordinaten nach vorheriger Profiländerung fast → track


Beide Ergebnisse in einem Bild


Selbe Gegend, andere Eckpunkte, diverse Ergebnisse intern/extern bzw. mit ohne Wegpunkte, aber mit selbststänger Verlagerung der Eckpunkte durch den Router


Und noch mal ne Übersicht mit Kurzprofil


OSMAND
Davon hatte ich nur eine Uraltversion auf meiner Speicherkarte, gestern habe ich mal das neueste gesaugt. Das mochte die alten Karte nicht mehr, also weitere 500 MB! für ein paar qkm. Erst heute wurden sie dann nach gefühlten 100 Startversuchen im Emulator erkannt.
Positiv: Von der Orientierung her eine der besten OSM-Karten, in vielen Zoomstufen werden Städte- und Gemeindenamen gelistet, auch wenn sich hier ebenfalls der ein oder andere Hinterhof hineinschummelt.
Negativ: entfällt - das gleiche wie früher, ich kapier das System nicht, für meinen Horizont ist das Proggie nicht geschaffen, mit Intuition komme ich nicht weiter, zum Einlesen habe ich keinen Bock.

Edit:
Und noch etwas: Orux hat sich an anderer Stelle zur Problematik des wohl auch bei ihm manchmal abrauchenden Servers geäußert.
Bei mir ist er bislang nicht weggetaucht, weder in der virtuellen Box noch auf’m Defy (Quarx’sche Spezialversion :wink: )

Hi und Danke fuer den Hinweis,

Du hast es zwar verlinkt, aber hier nochmal der Link auf das APK: http://www.oruxmaps.com/OruxMaps5.5.2beta10.apk

Hab’s auch mal probiert und funktionert schon nicht schlecht.

Aber die Issues sind ja bekannt:

  • einmal das Konfigurations-Thema, dass in diesem Setup auch die car/bike/foot,fast/short Auswahl aus dem Maptool einen Sinn machen sollte (wie couchmapper auch schon geschrieben hat: http://forum.openstreetmap.org/viewtopic.php?pid=340861#p340861 )

  • und das Problem der Server-Stops durch Android, von dem Du auch schreibst.

Aber da kommt langsam Dynamik in das Thema, sollte doch möglich sein, bald ein unabhängiges Maptool ↔ Router Interface zu etablieren, was nicht nur für BRouter funktioniert, sondern für jeden offline-Router, der das Interface implementiert.

Die Sperrzonen behält auch der Servermode! Die Wegpunkte aber nicht, das geht konzeptionell nicht.

Das er die Position auf den nächstgelegenen Weg matched, über den das gewählte Profil auch routen kann, ist ein Feature und kein Fehler… Für automatische Neuberechnungen, wenn die Position vom GPS kommt und nicht von einer Benutzereingabe, ist das wichtig.

Hallo Arndt,

Die Höhendaten gibt es in Mapsforge tatsächlich nur als Kontourlinie ohne jede interne Beziehung zu den OSM-Nodes.

Es gibt noch eine kleine Gemeinheit in Mapsforge:
Wenn in einem Objekt mehrere Attribute drinstehen die die gleichen Values habe können (oneway=yes/no tunnel=yes/no etc) ist es dem Zufall überlassen was nun für welches Tag gerendert wird, dh. wenn ein tunnel (=yes) ein oneway=no enthält so wird der Tunnel oft mit dem Attribut des oneways gerendert (also NO).
Wo der Fehler liegt weis ich nicht, ich würde mich beim Routing jedenfalls nicht auf Mapsforge verlassen - für die Kartendarstellung selbst ist egal, ich Filtere einfach die unnötigen Tags raus oder weise ihnen eindeutige values zu - fürs Routing ist das sicher weniger lustig mit solch “gekürzten/modifizierten” Datensätzen zu arbeiten.

Viele Grüsse
Christian
PS: Ich habe mir den BRouter mal angesehen - WELL DONE, alle Achtung, das das überhaupt geht hätte vor ein paar Monaten noch keiner geglaubt!!

Also zuerst nochmal:
Ein ganz dickes DANKE an den brouter Autor!

Ich versuche den in Zusammenarbeit mit OSMAND. (Hatte ich ja schon erwähnt)
Um Ihm nun ab zu gewöhnen, mich immer wieder über Wege zu routen, die ich nicht mag,
Versuche ich mich in den Config Files.
Da ich des Englischen aber nicht so 100% mächtig bin versuche ich mal, mir das eine
und andere hier erklären zu lassen. Ich hoffe ich gehe euch nicht zu sehr auf den Keks.

Zuerst mal zu der Zeile:
“assign probablyGood or ispaved and isbike not isunpaved”
Da wird der Variablen “probablyGood” etwas zugewiesen.
Was ich dabei nicht verstehe: wie ist das oder das und und das not zu sehen.
Kann mir das mal einer in der Form hinschreiben:
probablyGood = (( ispaved || != isunpaved ) && (isbike) )
Also etwas C Like. :slight_smile:
Stimmt das was ich da geschrieben habe?

Nächster Fall, der mir etwas Kopfzerbrechen bereitet:

switch or highway=track or highway=road or highway=path highway=footway
    switch tracktype=grade1 switch probablyGood 1.0 1.3
    switch tracktype=grade2 switch probablyGood 1.1 2.0
    switch tracktype=grade3 switch probablyGood 1.5 3.0
    switch tracktype=grade4 switch probablyGood 2.0 5.0
    switch tracktype=grade5 switch probablyGood 3.0 5.0
                            switch probablyGood 1.0 5.0

Warum stehen da immer 2 Zahlen dahinter.
Es scheint mir so, das ich das ganze SWITCH Konstrukt nicht verstehe.
Schon die Eingangszeile mit dem “switch or …” versteh ich nicht.
Wann ist ein switch fertig?

Ich bin wie immer für alle Antworten Dankbar.

Gruß, Rudi