osm2po

Hallo,

ich versuche gerade osm2po auf ein Fußgängerprofil umzustellen. Leider finde ich den betreffenden Eintrag in der osm2po.config Datei (sofern das hier gemacht wird) nicht. Kann mir jemand erklären, wie und wo das geht?

Danke Nico

da solltest du dich wohl an den Autor wenden. Mir war das Teil übrigens völlig unbekannt. Es macht aber einen guten Eindruck.

Gruss
walter

Runterladen:

wget http://osm2po.de/dld/osm2po-5.1.0.zip
unzip osm2po-5.1.0.zip
wget http://download.geofabrik.de/europe/germany/bayern/oberbayern-latest.osm.pbf

Starten:

java -Xmx1g -jar osm2po-core-5.1.0-signed.jar prefix=hh tileSize=x oberbayern-latest.osm.pbf

Bisschen warten und du hast auf localhost:8888 einen Router für Autos. Wenn das läuft, stellst Du den in osm2po.config auf foot um:

wtr.finalMask = foot

Jetzt hast Du einen Router, der zwar angeblich für Füsse ist, aber viele geeignete Wege ignoriert. Das liegt daran, dass noch ganz viele Strassen gar nicht geladen werden, weil sie auskommentiert wurden:

#wtr.tag.highway.pedestrian =     1,  62, 5,   bike|foot
#wtr.tag.highway.track =          1,  71, 10,  bike|foot
#wtr.tag.highway.path =           1,  72, 10,  bike|foot
#wtr.tag.highway.cycleway =       1,  81, 15,  bike
#wtr.tag.highway.footway =        2,  91, 5,   foot
#wtr.tag.highway.steps =          2,  92, 5,   foot

Da machst Du die # weg und hast einen Router, der alle Strassen erfasst. Hinter die angeblich nur für Autos gedachten Wegeklassen schreibst Du auch noch “foot”, schliesslich kann man ja auf einer primary auch laufen:

wtr.tag.highway.primary =        1,  15, 70,  car|foot
wtr.tag.highway.primary_link =   1,  16, 30,  car|foot
wtr.tag.highway.secondary =      1,  21, 60,  car|foot
wtr.tag.highway.secondary_link = 1,  22, 30,  car|foot

Nach dem nächsten Start des Routers

java -Xmx1g -jar osm2po-core-5.1.0-signed.jar prefix=hh tileSize=x oberbayern-latest.osm.pbf

hast Du einen Router, der zwar auf allen Wegen und Pfaden routet, aber nach “autoregeln”. Er bevorzugt also highway=primary, wo er angeblich mit Tempo 70 vorankommt. Immerhin findet er jetzt auch zum Zielpunkt auf einem Waldweg.

… Der Rest ist rumprobieren mit priority und speed und immer wieder neu starten. Deshalb würde ich mir erst mal ein ganz kleines Gebiet runterladen, “oberbayern-latest.osm.pbf” oder irgendwas wo du dich auch im echten Leben auskennst.

Hier ht sich anscheinend schon jemand über die Regeln Gedanken gemacht: https://github.com/scheibler/WalkersGuide-Server/blob/master/misc/osm2po_5.0.18.config

Grüße, Max

PS: Ich hab die Aufrufe aus der mitgelieferten Beispieldatei. prefix=hh kommt daher, dass das Beispiel für Hamburg gedacht ist, und vielleicht kann man irgendwie die Demo-Webseite des Routers auch dazu bringen, verschiedene Profile zur Auswahl anzubieten. Rätselhafte Knöpfe und Einstellungen hat diese Seite ja genug :wink:

Vielen Dank für Deine Hilfe. Ich habe das Ganze soweit zum Laufen bekommen. Vielleicht kannst Du (oder auch jemand anderes) noch zwei weitere Fragen beantworten:

java -Xmx1g -jar osm2po-core-5.1.0-signed.jar prefix=hh tileSize=x oberbayern-latest.osm.pbf

Wofür steht das “-Xm1g” im Code?

Im Tool osm2po kann man zu nutzenden Wege nach dem folgenden Muster auswählen:

wtr.tag.highway.footway =        1,  91, 50,   foot

Ich möchte nicht alle “footway” nutzen, sondern nur solche, die auch Licht “lit” und Rollstuhlgeeignet sind.
Das wäre dann ein Aufruf, der wie folgt zusammengesetzt wäre:

wtr.tag.highway.footway AND lit=yes AND wheelchair=yes = 2,  91, 5, foot

Ist sowas mit osm2po möglich?

Gruß Nico

“-Xmx1g”: Der maximale Arbeitsspeicher, der von Java angefordert wird. Hier 1GB.

OK, danke.

Die umgekehrte Formulierung wäre einfach. “Ich möchte alle Wege ausschliessen, die mit wheelchair=no oder lit=no getaggt sind”. Das würde ich einfach analog zu Verboten eintragen:

wtr.deny.wheelchair.no = foot
wtr.deny.lit.no = foot

oder auch nur für einzelne Profile, falls deine Fussgänger zwar mobiler sind als Rollstuhlfahrer aber beide Gruppen die Dunkelheit scheuen:

wtr.deny.wheelchair.no = wheelchair
wtr.deny.lit.no = wheelchair|foot

Deine Formulierung könnte ich nicht umsetzen, aber das ist auch der Punkt, wo ich aufgehört habe und mich lieber mit der Manipulation der Daten in der DB beschäftigt habe. Vermutlich würde ich diese Wege so wie hier für tracktype=grade4+5 empfohlen einfach nur sehr teuer machen. In der Praxis ausserhalb meines Testgebietes sowieso, zu leicht vergisst man mal für eine Strassenüberquerung von 3m ein lit=yes einzutragen und macht damit ganze Strassenzüge fürs Routen unter Laternen unbrauchbar…

Grüße, Max

PS: Beim Testen bin ich über wtr.maxSpeedOverrides gestolpert…

wtr.maxSpeedOverrides=false

ist wichtig, weil sonst überschreibt ein maxspeed-Wert Deine Einstellungen. Und OSM meint mit maxspeed die Autos.

Wo hast Du denn

wtr.maxSpeedOverrides=false

gefunden? Bzw. wo steht denn ein maxspeed?
Gruß Nico

Das steht nicht drin, ich habs selbst eingetragen, vermutlich motiviert durch irgendeinen Hinweis (da z.B. oder wo anders).

Maxspeed steht an ganz vielen Strassen in den Tags, oft bei den “richtigen” Strassen (z.B. diesem highway=residential), manchmal aber sogar bei Fusswegen (dieser highway=path z.B., warum auch immer, vermutlich ist es einfach falsch, aber trotzdem isses halt da).

“maxSpeedOverrides” ersetzt die grob geschätzte Durchschnittsgeschwindigkeit in der osm2po.config, der für alle Strassen gilt, durch den individuellen Wert dieser Strasse. Für dich ist es unpraktisch, weil du mit Geschwindigkeiten für Fussgänger arbeitest und Autogeschwindigkeiten für dich egal sind.

Grüße, Max

Nur als Anmerkung: In den Niederlanden stehen selbst auf Fuß/Radwegen gelegentlich maxspeed-Schilder. Ich habe mich noch nicht interessiert, ob sie für Radler überhaupt gelten, gedacht sind sie jedenfalls für die bromfietsers, die die Radwege mitbenutzen müssen.

Gruß,

Baßtölpel