Zusammenspiel mit OSRM und nominatim

Hallo,

ich stehe vor folgender Herausforderung. Ich kenne zwei geographische Daten (Ziel- und Endpunkt).
dazu möchte ich die Route für die Fahrt von Ziel- zum Ende darstellen und im Anschluss die Streckenabschnitte auf der Autobahn und die Mautstrecken ermitteln. Ggf. nach Ländern getrennt.

Ich hatte mir gedacht ich gehe dabei wie folgt vor:

  1. Karte anzeigen
  2. Route als json file erzeugen
  3. Die Route mit nomination auswerten.

So habe ich das probiert:
http://map.project-osrm.org/?hl=de&loc=50.776279,6.084859&loc=50.841579,4.366734&z=10&center=50.894572,4.945387&alt=0&df=0&re=0&ly=763558683
Funktioniert wie erwartet!

http://router.project-osrm.org/viaroute?loc=50.776279,6.084859&loc=50.841579,4.366734

Ergibt folgende Datei:

{"hint_data":{"locations":["9HUWANgJugEdgiQAAAAAABoAAAAAAAAAAAAAAP____8AAAAA18gGA_vYXAAAABEA","t8gWBP_____HvRQANwAAAEgAAAAiAAAACAAAAHCp3AMAAAAA68cHA46hQgACABEA"],"checksum":1423277062},"route_name":["",""],"via_indices":[0,1055],"via_points":[[50.776279,6.084859],[50.841579,4.366734]],"found_alternative":false,"route_summary":{"end_point":"Avenue des Arts - Kunstlaan","start_point":"Büchel","total_time":5160,"total_distance":142783},"route_geometry":"klcz_BunkrJeAwJmLiN_FaOwNuU_FaIwHaLmDuFeJ}N{PpHuDdBmOgAuCUcLOaEzl@c@jGeDnl@iAxL_@`E[hDcArK}@tGa@fCcEjWoErT_AvEwA~GsIlb@aDhNeBfIuAlIgApG_AjDyBrDiGbH_F`G{KdNyKzNyFpU{@nDyBpHwP`h@wFxMwOxZeMjPwBxC_A~QcB~D_F~F_FrDeEnCsCtBqBtBg^~[qYhf@gAhBeF~I}JvQ{f@v|@{Wpe@cCjEuBtDgDfGkAvBqCzE_p@jjAgD`GiSd^{FfK_DvFcAhBaBrCgItNmDfGwDzGiAnByAfCaMtTmKdR_DtFuA~BsBzDyJrQmChEsCvEsJpO_NlRqMhOyRlOuU`MsOvEmOnBcHr@qWqAiOuA{MaC_Z}IeW{OcRmOsWeXqM}O}T{`@ko@c}A}Og\\oWic@uOmSaV{V}VoQwZePg[{Ju_@cIic@_EmdA_@wqAeAel@gAwu@oDaf@gEop@wKaOaDeRyEqDw@yz@_TeZkG{b@wGg[s@}]?cFCg@dHPtc@b@he@~@ff@lBjR|ChNvF|KnQzTtIxOfEjMhBnPTpG@nFKzFi@lKyE|f@}h@rsCo`@`~BaK`{@oLteAqFpm@mG~y@{HvvAoBlg@wAdg@e@rp@}@jg@It}@x@h}B\\ze@r@bvDKjd@W`iAeCx{A_GfdBcGhbAiEdk@{LjvAyP`sA}RbnAoXnuAo^n_Byd@xbBse@|uAui@zwAqG|Ngq@`uAsh@hz@cE~FoRpZeIfM_f@lo@ku@h{@_WlXeTlUimAnnAus@rs@ulAjnA}InJuzCd|C_k@bm@u}Cv}CmQbQ}xDb`EydF~fFabDrdDmoBrpBol@ts@sm@lx@sg@zw@on@bmAwHbRsRjb@cx@lkBkcBvnFqMnb@aqEr|N{s@h|Bsg@z_Bw`@reAkf@vhAqvAjlCaYfc@{Vz\\km@|x@gv@hy@wtAxlAos@pk@kuAn_AwaBffAw`@nUuyBztAy{BrzA_eA~u@_mArcAgmAvfA}nCdqCk_CtrCgjC`_DgdAbhAqzAn|Aa}@`|@a]xYmmBzeBcM~Jq~AryAk|@j{@izBj~BkpBj|Bc{FlnHy|BzrCs|BvnCwgAdmA}vBjsBscHfwG_`@~]m{@`y@uT|S{qAhnAy|AnzAsRvRuX`\\gP`TyUd[iWz_@m\\di@uVpc@gSz^gc@z{@y\\n{@mf@luAqUzw@{HzY_XtdAgYdwAi^ljBkcCjsMeFnXevAhuHqCpLmHz[{Jj`@eHtVgItW_Tpj@{f@rnAgm@tuAyUnh@sHtOyO~Y_Sj[gMlO_MzMiLrKof@|^eu@di@}KbIac@zY}Z`SitAtu@{hBt}@gnDxiBqlGdjEeMvJ{bAfu@_VhTuVpX}_@lf@mNnSuYlg@cNzU{[`u@kV|s@wmAl{DeJlYqdAlfDcQzq@aS~aAoLhr@gJ~w@ghA`~KiSzpC{SdrDoTniDiGbjAeFrs@kEn`@kFxYmHja@iGlWuJd\\{Pdh@oHjQshB|aF_U`s@eKdf@kHbg@_`@`jE{BhZsTprCcVfgCkRjxAaIfb@aLzi@w{GdsUouBlnHgi@pbBmRpe@ab@vaAyrCvqF{jBlqDmJjR}pAvhCcEnIaIpPydCfcF}`An_C}k@baBqWpy@gKr_@wL`f@uIzb@mHbc@aHhg@eFtb@{Fhn@sCbb@_Dhl@wBtq@s@xm@Ctx@bAxcAXtO`EbvA|GtcBzI|tAhH~~@`P`fB`Jvy@vNpdAvQ`mAxOr`A|`@dtBrOdq@be@`kBlpBzuGb[|cAlf@x_BnbBpoFzkAbyDdkB`eGb{@|pCzm@ryBpOnl@xWjhAlZ~wA~Oxx@xDxShV`yAhSpyApOdqArJbz@rX|~CzMltBdC`f@bEd{@hGv_CfA`r@bCtaCAj`BgA~aB}D|xB_S|xGiUf_HiGnoBkh@pqOs[h|JoArj@w[rmJsuAbsb@{Chy@eHzsAwExy@{JdxAgLvqA}L~mAkLndAiu@ztFyv@`wFq{@n{GqRffByRpoB{ZtbEiGz{@mWrlEsO~lDqRnlEe\\t_Iqa@txIo]|eGg]zbFck@x}Gkb@rjEco@r|Fif@x{Dw`@blDok@tbEgcCj`RmiAz}Ie`CpuQq_DrbVud@zzCyk@reD_^|iBy_@|hB}}@xcEkg@d|Bq`AdkEqlGffYmxHro]gOvq@_i@|`CwsB~iJcnApvFuOrr@aqAz_GoU`iA{^drBkS|mAyNb_AqOxgA{]rpC{OvpA}UhnBer@ryFsOloA_T`dBgSraBs]|uCsnAxdKqcAzkIeRf|Ac{@thHgEn^oQn{AcI`s@kMvhAmmAvqK}jAp~JqvChyVgoAppKa[bbDkOjkBaKpzAuH~sA{Drv@qDtz@eD``AyCrdA}CvzA}AbfAoAxoBm@zpBlDpi_@`BbmMvCphXvBxePp@`lHrAx|Jz@hyH`BtgOVbuA?th@|AvlDxCbiBjCtmArF~tApJhmB`E`p@rNvjBhPvhBle@`wEp_AraJ|RlkB|t@xdH`f@zuEh{@xjIfMvqAxKrvApKndBzEf`AlkAr~Uv\\z~GreBjy]r`A~xRtRnyD`Zj`GxV~bFrKr|Brp@rmMzTpfFjMjpBlFrhAjEpt@dDbv@lCpg@xY|~Fl_@llHxNjtBnNzfBbMzqArUnzB|d@z_DpRhiArg@tqCzn@peDplKzzi@|k@~uCv^hbBvi@|uBzj@hrBd}Al_Fp}A||Evc@psAvU~s@fjGzmRdn@xrBx^lfAlnBh`Gl_C|jHhQzj@tn@jsBz`@jtAn~@zrDd^fdBh]nlBjLjq@rTvxAz[jiCrWrmCpK|wA|IvyA`HhuA~FjwAbKpdDbI|aDfR|dIpKv}CtCzn@~I~eB`D`h@jIhhApQ|qBfPh{AtR~{A`Vr}ApAfIbCrOhFb\\`Pd{@pJde@hCdMhOtq@rQzx@nV~~@|Vl_AtWn}@rYv|@~q@nnB~v@tkBnz@~gB|{@`aBf_AndBnQnZhwCdaFzfC|qEviAf~Bbj@nnAnYjr@pr@vnBzi@nfBho@tbCv^lfBdUznAf]`wBjYncCbLrjAvJvlAtQhhDjFjaBtApu@z@rv@b@~y@Ej~@i@vgAq@xc@y@tb@iDtoAsBrk@kC|i@qB``@{IbvAiL|rAiKzaAeLj_AmBjOcJ|q@{Ltw@qMvs@_Rp~@iTbcAeQbt@eY`eAsPrj@mj@tcBq~@hcCycAfgCyLjYypBv_F{f@bpA_ChG}Opb@{_@~gAs[paA{Qtm@uRzr@gRpu@wPfu@mNnr@cLxn@oJ`k@_N|_AqEz^oKjaAuJ|eAwFpw@}FnbA{Dr~@}Bnw@kBhcAw@hmAVteAdAhrAlCxlAjGnlBvI|kB|Vb_FjRb{D`Jp|B~GnaC~ChbBnAdbA`Al`A^pbAFtaAO~zAu@~tAaCznBgD`cBaEpuAsHtxBwUjpFuTpsEwSzrEqJpyB{K~oBmP``EaC|f@eG`lAwv@`xOkQ~zEuRbzEaPfjFoG~aCgEh~BgIl~FwHj`GsJj_GyKhaGgMf_GmN`}FkGl~BgHhdCeY|{Iy[`vIuKhnCkL~kCaZtwG}u@fsP_PhrDcMd|D}D|jAqB`dAcB~eAkA`jASp^ObbAh@pdAv@j~@|Arz@vA|o@bC|k@vB|k@tC|k@nL`pBtKbmAxSzqBnHrk@~N|cAvPzbAnRpaAfSn`ArYxpAx[~nA`]lmAd^zjAnJpZtHtUfnApoDvpA`lDzcDlwIj]l`AnJ`[zq@xtB`t@toCtYdnAvV`nA~t@pcEjq@pdEhgA~yGlfBp{KvYdfBzYjeBz[`eBx\\bdBbSh~@~Sz}@fT~|@xTd|@~a@h}Avb@`|AhgAjvDjhAxxDtc@h{Anf@~xA|m@raBrWvn@dXtm@xg@pgAfk@pgAnl@ddAze@zx@vv@lfAjvBrkCndD|_EjfPl`Sz~InxKnlBf`CjM`PheAnqA`J~KjN`QxMhOnhAbsA|kCnbDpMxOzL|Nze@dn@zTb]pQzZpIbSnJnRd[tt@jQdl@tmBziHxpBhsHrOfh@nYty@hRre@rSpc@`e@t{@vy@ltAfxBhqDhV|b@bXbi@d]vx@|Qjk@zQbn@t`@zzAf{AvtFb]jnAfm@rwB`i@v}Ah[dt@~S~`@lXre@`_@ph@`V`Ztm@fl@lp@ng@jlBhpAx[xTx}BrdBff@za@z\\t\\jUlXfY|Zv_@jh@zXhd@fVxd@|Nr\\lTlk@tJz\\|_@`sAhYplAbJp]db@tlBbUpy@r`@jfAlZnr@hZne@rWn_@jWv[pNtO|YrWf]|Wv[fR|XlNlPbGlb@lNh]`Jxb@hKvs@rQb\\jL|]pPzNxHr[lR`RdNxd@dc@jtBt}BffDhyDpPxQhw@h`A~Qj\\xIfOlm@n~@xQxZxOh^lSlm@vO~i@pVnkAlh@h{CnIz~@pAt]x@z]Hdm@iBl_AqApWkBza@iUnjD}P`~CsS`qDsb@~bGaEji@oDff@uApUad@jrGm[vlEgPf_Cci@leHquAl|O{w@bsIwEtg@eZfvCu~@llKmD|b@coAbdN_b@hiFmRjyCwLp|B_OjkDkBxe@sLv_DmEtrAuJr{DyHzaFsBv}CcB~zDk@xdECr{DcBtj\\HpnPJ`nK_@dhHYbz^E`jMxAr_A`CtrBb@tg@dFnnCtIxoCxHlgBhF`eAtHvrAtNlxBdDdc@|Rv_C|e@ftElk@~lE|D`Wv]xaCnDpVht@daFfQjhAjDpVb[psBpf@zcDdk@rcD~AzHrX~tAxhC~pLz]fcBrU`rAxzAtfH`_@r`BdRdu@x^fpAlc@~{Afu@`aCff@pbBrJb[xGlT`a@~kA`k@rgBl]|_Aj`@ppA|Ohn@fKn[dGfVdH~ZvWziAfPzt@vBhJbDlMpPjl@d_@njBxJ`]nOzYtUneAnpAdpJ|Glj@nIp]v_@tpAdZn{@hKpTbFbJlJtZpElNnFvOpUhq@p[f~@|Vpv@xLf[~Rjl@nIpWbBlExClI~t@zsBfC`HkB`CyA`DcAxDk@jEQfH`@dHrAhG|BzEcAbIaFrf@}@tIoUzlBg@pQcA`IiKxx@t@~HgEr[qBhOiGrf@uYj_C}AbMsGph@i@`EiLh_AaA|HcMvbAqGdh@{Fbe@sGxh@mBpOwA~Ke@|DgDnXeF~a@eAdIeAxImBrOgAnIjEtC`Cx@tn@`SrD`Bxc@vRx[|N|FrFxYfMrGlDxDxBfIiAhc@jPnCbApDvAln@jYbH|IrQ~TrCkUmDkGkNmSeh@uW","status_message":"Found route between points","status":0}

Ich dachte ich könne diese Datei jetzt an nominatim weiterreichen. Schaffe das aber nicht. Wie macht man es richtig?
*http://nominatim.openstreetmap.org/search/format=json *

Hallo, warum machst du einen neuen Thread auf? Es scheint sich um das selbe Thema wie hier zu handeln: http://forum.openstreetmap.org/viewtopic.php?id=30224

Gruß

Kopfrechnen schwach, Religion sehr gut? (60 + 26) * 60 = rate mal.

und wie kommrt du auf die Idde, dass Nomination den Search-Ouiput von OSRM verarbeiten könnte?

gruss
walter

Hallo Walter,
den Spott wegen der Zeit muss ich wohl ertragen … kann man vielleicht auch mit zu wenig Schlaf erklären (nicht entschuldigen)
Von meinem rudimentärem Verständnis von OSM her brauche ich doch, nachdem ich eine Route habe, ein Tool, mit dem ich auswerten kann, was für Abschnitte ich da habe.
Wenn meine Idee, wie ich zu der gesuchten Info komme, eine Sackgasse ist, wäre es nett, wenn Du mir sagen/schreiben würdest, wie man da geschickter vorgeht.

Nach dem Motto: Nimm das Ergebnis von router.project-osrm.org und reiche das an XY weiter. Als Ergebnis hast Du ein CSV, XML oder JSON File aus dem Du Dir Deine Informationen zusammensuchen kannst.
Unabhängig davon: Wünsche ich Dir ein schönes Wochenende.

Ich kann auch nicht alles wissen, aber dass du Nominatim (blöser Name, hab ich auch mehrere Wichen gebraucht, bis ich den drin hatte) mit OSMR-Ergebnissen versorgsr, kam mir halt extrem seltsam vor.

Nominatim kann Suchanfragen einzelner Objekte beantworten und das Ergebnis im JSON-Format liefern - aber nicht anders rum. Und erst recht nicht mit dem Output vom OSMR. Den musst du wohl auseinanderpfriemeln und dann Nominatim stückchenweise vorwerfen.

Gruss
walter

Da die Frage seit gestern nicht beantwortet wurde, gebe ich mal meinen Senf dazu. Ich muss allerdings betonen, dass ich weder viel Ahnung von Nominatim, noch von Routing habe. Aber ich vermute du befindest dich in einer Sackgasse.

Nominatim bietet nämlich nur Suchfunktionalitäten nach Adressen/Geokoordinaten.

Für deine Auswertung musst du entweder eine eigene Routingengine aufsetzen oder du findest eine, die die von dir gewünschen Funktionalitäten bietet: http://wiki.openstreetmap.org/wiki/Routing#Developers

Man verbessere mich bitte, falls ich falsch liegen sollte.

Wie oft möchtest du denn die Ganze Sache machen?
Wenn du das nämlich öfter tun willst solltest du dir Gedanken machen das eventuell auf einem eigenen Server laufen zu lassen.

Aus meiner Sicht gibt es zwei Möglichkeiten. Entweder man fragt jetzt die einzelnen benutzten Wege mit der Overpassapi ab und stellt fest ob es mautpflichtig ist oder nicht.
Oder man erweitert OSRM. Ist ja immerhin Opensource.
Eleganter dürfte der letzte Punkt sein, weil hier ja die meisten Informationen bereits vorliegen nur eben nicht ausgegeben werden. Das erspart dann auch viel Rechenzeit in der man die einzelnen Anfragen erstellt und auswertet.
Es müsste aber an den Straßen und Wegen ein Länderschlüssel vorhanden sein, wenn es auch noch nach Ländern unterschieden werden soll.

Hallo,

wir überlegen in der Tat einen eigenen OSRM Server aufzusetzen. Ich schaue mir mal die Overpassapi an … In meinem Umfeld habe ich leider keine C++ Programmierer.

Um Himmels Willen NEIN!

Eine vernünftige Abfrage einer vernünftigen (PostGIS)-DB berechnet die Länderinformation aus der Lage.

Gruss
walter

und kommt mir jetzt blos nicht mit is_in :wink:

Ja natürlich macht das eine vernüftige Abfrage in Postgis, aber wenn man solch einen Anwendungsfall wie den hier hat, sollte man überlegen ob man im Postprozess für den Routinggraf nicht den Kanten gleich den Wert zu teilt. Es schrieb keiner das dies bereits in der OSM Datenbank geschehen sollte. Es wäre nurvorteilhaft, wenn es bei der Auswertung der Strecke bereits zur Verfügung steht. Und sohäufig ändert sich das auch nicht, dass man das jetzt ständig on the fly berechnen sollte.

Ja, das ist schon was anderes.

Gruss
walter

Ich habe mich mal in Overpassapi eingelesen … denke damit könnte es gehen. Aber das hätte schon was von “mit der Kneifzange die Hose öffnen”.

Am elegantesten, wäre es wahrscheinlich tatsächlich direkt bei OSRM aufzusetzen und das Ergebnis entsprechend zu erweitern. Ich schau mal, ob ich jemanden finde, der das kann.

Danke an alle

Du könntest dir auch eine lokale Datenbank und einen lokalen Overpass-API-Server aufsetzen; dann musst du die Abfragen nicht gegen den öffentlichen Overpass-Endpunkt machen, hast aber den Nachteil, das du deine eigene Datenbank aktuell halten musst…

Das macht keinen Sinn! Denn die Daten welche aus der Overpassapi zurückkommen müssen auch wieder bearbeitet werden usw.
Zweckmäßiger ist es wirklich die gewünschten Informationen direkt bei den Kanten in OSRM mit zu verwalten und dann entsprechend auszugeben.

Hallo zusammen,

nochmal zu meiner Eingangsfrage. Das json-file von osrm sah für mich “krank” aus, weil es komprimiert ist. Mit einem http://router.project-osrm.org/viaroute?compression=false?loc=50.776279,6.084859&loc=50.841579,4.366734 simple eingefügten ?compression=false habe ich das erstmal für mich lesbar. Habe mittlerweile auch herausgefunden, wie man damit in komprimierter Form arbeiten kann.

Wenn ich jetzt die einzelnen Koordinaten per Schleife durch nominatin jage, habe ich die Länderinformationen, aber ein anderes Problem. Ich habe keine Länge! Wie kommt osrm zu den Längen Informationen?

Damit bin ich wieder bei dem Thema, dass es wahrscheinlich am sinnvollsten ist, osrm dazu zu bekommen, die gesuchten Informationen gleich mit zu erzeugen…