2017-05-26 1 views
0

Ich stehe vor einem Teilproblem, wo ich Datenbank (mit Postgis, Pgrouting) meiner Stadt hatte.
Ich muss einen Pfad/eine Route von Punkt A nach B machen. Wenn dieser Pfad länger als xx Kilometer ist, muss dieser Pfad einen der angegebenen "Haltepunkte" (C) aufrufen. Wenn der Pfad von C nach B länger als xx Kilometer ist, müssen wir einen weiteren Zwischenstopppunkt irgendwo zwischen C und B usw. suchen.pgrouting/postgis - Algorithmus zum Suchen von Zwischenpunkten

+0

In Zukunft bitte nicht Quer Fragen stellen (https://gis.stackexchange.com/questions/241829/function-algorithm-to-find-intermediate-points-if -path-is-too-long). Weitere Informationen finden Sie unter [hier] (http://meta.stackexchange.com/q/64068). – Matt

Antwort

1

Das klingt wie eine Schleife wie dieser Pseudo-Code, ich würde es umwandeln zu einer plpgsql gespeicherte Prozedur:

A = start 
S = stop 
B = S 
while true { 
    r = getRoute(A, B) 
    if length(r) > limit then 
    B = selectIntermediatepoint(A, B) 
    else if B == S then 
    break 
    else 
    A = B 
    B = S 
} 
+0

Danke, ich hatte etwas gemeinsam, aber der Punkt ist, ich weiß nicht, wie ich diesen Zwischenpunkt finden kann (selectIntermediatepoint (A, B)). – user3613919

+0

Was sind Ihre Anforderungen für die Auswahl eines Zwischenpunkts? Warum brauchst du diesen Zwischenpunkt? Können Sie einfach die gesamte Route berechnen und diese in mehrere Segmente unterteilen? Oder wählen Sie einen Knoten kurz vor Ihrem Limit. Dies erhöht die Rechenzeit für die Routen. –

Verwandte Themen