Mehr

Mehrere Abfragen in pgrouting (Länge als Ergebnis)


ich habe folgendes Problem mit zwei Tabellen:

Die erste Tabelle enthält alle mein Straßennetz mit Kosten, Quelle, Ziel. Eine weitere Tabelle enthält 60 Knoten (aus dem obigen Netzwerk). Zwischen all diesen 60 Knoten möchte ich die Länge des Weges berechnen (z.B.: von Knoten 1 zu 2,3,4…60, von Knoten 2 zu 1,3,4,5…60 etc.)

Haben Sie eine Lösung, die die Länge aller Pfade automatisch berechnen könnte? Bisher kann ich nur einen Pfad manuell berechnen, dann die Tabelle speichern und die Länge berechnen.

Aber wie Sie sich vorstellen können, möchte ich 60*60 Relationen nicht manuell berechnen.

Siehe meine bisherige SQL-Abfrage:

SELECT seq, id1 AS node, id2 AS edge, a.cost, geom_way FROM pgr_dijkstra( 'SELECT id, source, target, km as cost, km as reverse_cost FROM Routing where cost is not null', (SELECT node FROM nodelist WHERE id =1), (SELECT Knoten FROM Knotenliste WHERE id =2), false, true ) AS a Join-Routing b ON a.id2 = b.id ORDER BY seq;

Sie können verwenden pgr_kDijkstra um den Pfad oder die Gesamtkosten von 1 Knoten zu vielen zu berechnen. Für Many-to-Many-Berechnungen gibt es bisher keine Funktion, aber die obige sollte schon viel besser sein.

Der pgRouting-Workshop erklärt auch die Verwendungpgr_kDijkstra:

SELECT seq, id1 AS source, id2 AS target, cost FROM pgr_kdijkstraCost(' SELECT gid AS id, source::integer, target::integer, length::double precision AS cost FROMways', 10, array[60,70, 80], falsch, falsch);

Das Argument zum Angeben von Zielknoten muss ein Array von Knoten-IDs sein. Sie mussten diese Funktion dann einmal für jeden Ihrer 60 Knoten ausführen.


Schau das Video: byGIS Meetup #12 Расчет зон пешей доступности с pgRouting, Николай Лебедев (Oktober 2021).