Jetzt hätte ich noch eine Frage zu den Profilen.
Ich fahre eine Liegedreirad und bevorzuge geteerte Rad- bzw. geteerte Feldwege nutze aber auch Feldwege mit tracktype 2 und smoothness=intermediate. Land- und Bundesstraße möchte ich - ausserorts - soweit möglich meiden. Kreisstraßen sind noch akzeptabel, wenn kein geeigneter Rad- bzw. Feldweg in der Nähe ist.
Ich habe gerade - mit den neuen Daten - verschiedene Profile auf den von mir vor dem 13.06. mit smoothness ergänzten Wegen getestet.
Mein aktuelles Profil:
assign consider_elevation = true # set to false to ignore elevation in routing
assign allow_steps = false # set to false to disallow steps
assign allow_ferries = true # set to false to disallow ferries
assign ignore_cycleroutes = true # set to true for better elevation results
assign stick_to_cycleroutes = false # set to true to just follow cycleroutes
assign avoid_unsafe = true # set to true to avoid standard highways
assign turnInstructionMode = 1 # 0=none, 1=auto-choose, 2=locus-style, 3=osmand-style
Ich würde gerne avoid_unsafe = false verwenden, aber die Kosten für Land- und Bundesstraßen ausserorts höher setzen. Ist das möglich und in welcher Zeile des Profiles trekking müßte ich dazu ein entspr. Änderung vornehmen ?
Grüße aus Oberschwaben
Peter
Edit 25.06.2016:
Nachdem ich mir das Profil mal von hinten her angesehen habe, ist mir die Logik jetzt einigermaßen klar. Ich habe auch die Zeile mit den entspr. Kostenfaktoren gefunden und - nach mehreren Tests - die Kostenfaktoren entsprechend angepaßt.
Dieses Wegstück ist unbefestigt und weist viele große Schlaglöcher auf und ist für ein Liegedreirad nicht empfehlenswert. Ich habe das Wegstück entspr. mit surface=gravel und smoothness=bad eingetragen. Da aber auch lcn=yes (Teil des Donau-Bodensee-Radweges) vorhanden ist, wird das Wegstück von brouter als gut eingestuft.
Ich möchte jetzt nicht den Kostenfaktor für gute unclassified entspr. erhöhen und habe deshalb versucht in der Zeile
assign isbike = or bicycle=yes or or bicycle=permissive bicycle=designated lcn=yes
den Teil lcn=yes zu löschen. Dann erhalte ich aber von Brouter-Webclient die Fehlermeldung
Profile error: ParseException at line 56: assign operator within expression
Mit dem neuen Code-Stück und einer Anpassung des Kostenfaktors für “schlechte” unclassified auf 1.7 kommt genau die Route heraus, die ich früher immer gefahren bin und die ich für mein Liegedreirad als ideal empfinde.
jetzt hätte ich doch noch eine weitere Bitte. Könntest Du mir noch diese Passagen in if-then-else übersetzen:
assign ispaved = surface=paved|asphalt|concrete|paving_stones
assign isunpaved = not or surface= or ispaved surface=fine_gravel|cobblestone
assign probablyGood = or ispaved and isbike not isunpaved
Ich würde gerne noch die Unterscheidung nach ispaved und isunpaved etwas anpassen.
Ich habe es trotz vielfacher Versuche bisher nicht geschafft, BRouter unter Android mit OSMAND zum laufen zu bekommen. Wird es in absehbarer Zeit eine Version geben, die die aktuelle Android API unterstützt und einfach so funktioniert?
Ich kann nur auf die Probleme reagieren, die ich kenne, und hab’ kein Testfeld aus 50 Geräten zuhause. Welche Android Version, welcher SD-Karten Modus, und woran hängt es?
Leider habe ich auf meine Bitte im Forum bisher keine Hilfe erhalten. Auch ein Bekannter der im IT-Bereich tätig ist, kommt bisher nicht klar.
Kann mir jemand sagen, in welcher Programmiersprache die Profile geschrieben sind ?
Das mit der polnischen Notation habe ich schon gelesen und auch schon im Wikipedia nachgeschlagen. Das Prinzip habe ich verstanden, den Codeteil im Detail verstehen bzw. in eine If-then-else-Anweisung übersetzen kann ich aber trotzdem nicht.
Mein Bekannter (Datenbank-Programmierer) kann sich zur Zeit wegen eines aktuellen Augenleidens nicht intensiv mit meinem Problem beschäftigen. Er war aber über die Kombination von Or und | verwundert und will - nach Besserung seines Augenleidens - zuerst mal schauen, in welcher Programmiersprache der Ursprungscode geschrieben ist, um die Default-Werte korrekt zu verwenden. Daher meine Anfrage nach der Programmiersprache für die Profile.
Ich werde Deinen Link weitergeben.
Ich selbst kann damit leider nichts anfangen.
Ohne Polnische Notation sind die Profile fast/gar nicht möglich, einfach mal anschauen, die ist gar nicht so kompliziert.
Ich habe die einzelnen Zeilen mal übersetzt, finde aber die neuen Versionen viel unübersichtlicher. Getestet habe ich sie bisher aber noch nicht.
assign ispaved = if surface=paved|asphalt|concrete|paving_stones then true
else false
…alternativ…
assign ispaved = if surface=paved then true
else if surface=asphalt then true
else if surface=concrete then true
else if surface=paving_stones then true
else false
assign isunpaved = if surface= then false
else if ispaved then false
else if surface=fine_gravel|cobblestone then false
else true
…alternativ…
assign isunpaved = if surface= then false
else if ispaved then false
else if surface=fine_gravel then false
else if surface=cobblestone then false
else true
assign probablyGood = if ispaved then true
else if and isbike not isunpaved then true
else false
else if and isbike not isunpaved then true
…bedeutet so viel wie…
else if isbike and not isunpaved then true
…alternativ…
assign probablyGood = if ispaved then true
else if not isunpaved then isbike
else false
Das | ist die Kurzschreibweise, um mehrere mögliche Values eines Keys mit ODER zu verknüpfen. Das OR wird verwendet um zwei boolsche Ausdrücke mit ODER zu verknüpfen.
Müsste aber eigentlich so stimmen, habe mir die entsprechende Stelle nochmal angeschaut. Denn das NOT setzt das Ergebnis auf false/Nein, sobald einer der Werte true/Ja ist. Das Ganze kann auch umgedreht überlegt werden und so geschrieben werden.
cobblestone und fine_gravel lassen sich nach dieser Logik dann weder zu ispaved noch zu isunpaved zuordnen (also ispaved=false & isunpaved=false) - alle anderen Values für surface ergeben entweder ispaved = true oder isunpaved = true.
Nach dem ich mir noch mal angeschaut habe, wo sich unpaved auf die Kosten auswirkt, habe ich - glaube ich zumindest - die Logik dieses Code-Abschnittes verstanden.
Dann werde ich jetzt mal versuchen smoothness mit einzubauen.
Ich habe mein Profil jetzt so umgeschrieben / ergänzt:
assign isbike = if bicycle=yes then true
else if bicycle=permissive then true
else if bicycle=designated then true
else if lcn=yes then true
else if maxspeed=50|40|30|20 then true
else false
assign ispaved = if smoothness=excellent|good then true
else if surface=paved then true
else if surface=asphalt then true
else if surface=concrete then true
else if surface=paving_stones then true
else false
assign isunpaved = if smoothness=bad|very_bad then true
else if surface= then false
else if ispaved then false
else if surface=fine_gravel|cobblestone then false
else true
assign probablyGood = or ispaved and isbike not isunpaved
Leider sind die Routing-Vorschläge nicht so wie gewünscht. Ich habe deshalb nochmals Routen mit meinem “alten Profil” berechnen lassen, mit dem ich bisher meine “Wunsch-Routen” bekommen habe. Auch hier kommen nicht mehr die gewünschten Routen heraus. Ist vielleicht etwas mit den neuen Routing-Dateien vom 16.07. nicht in Ordnung ?
Der letzte Ausdruck mit dem AND-Operator ist tatsächlich schwieriger, geht aber auch umzuschreiben:
assign probablyGood = or ispaved and isbike not isunpaved
– ist analog →
assign probablyGood = if ispaved then true
else if not isbike then false
else if isunpaved then false
else true
Ich hatte mir für den Test, ob 2 Profile wirklich funktional identisch sind, damals einen statistischen Test gebaut, und der ist auch Teil des “brouter.jar” aus dem Distribution-zip. Der Aufruf geht so: