Wie arbeite ich mit shortest_path_shooting_star () in pgRouting?

8

Es ist schon eine Weile her, dass wir PostGIS verwenden, um unsere Geometrieinformationen in unserer Postgres-Datenbank zu speichern. Wir haben das Vertex-zu-Vertex-Routing mithilfe der iGraph-Bibliothek selbst entwickelt. Gestern habe ich über pgRouting gelesen und ich portiere unsere aktuelle Anwendung auf pgRouting. Ich habe jedoch einige Probleme bei der Verwendung des Startpfadsuchers.

Wir haben Kanten- und Scheitelpunktinformationen in Tabellen gespeichert. Um eine Diagrammroute mit Abbiegebeschränkung zu finden, rufen wir das folgende SQL-Skript auf:

SELECT  shortest_path_shooting_star(
    'SELECT e.id,
                e.first as source,
                e.second as target,
                ST_Length(e.geom) as cost, 
                st_x(st_pointn(e.geom, 1)) AS x1, st_y(st_pointn(e.geom, 1)) AS y1,
                st_x(st_pointn(e.geom, 2)) AS x2, st_y(st_pointn(e.geom, 2)) AS y2,
                (not connected)::boolean::int * 1000000 AS to_cost,
                c.first AS rule
        FROM edges e LEFT OUTER JOIN edge_connections c ON e.id = c.second
        WHERE e.group_id = 0
        ORDER BY e.id',
    1209560, 1209653, true, false);

Meine innere Unterfrage hätte folgende Ergebnisse:

  id    | source  | target  |   cost |  x1   |  y1   |  x2   |  y2   | to_cost |  rule  
--------+---------+---------+----+------------------+------------------+---------+---------
1087134 |  926686 |  926687| 2.3299 |51.4675|35.728 |51.4675|35.7280|         |    
1209706 | 1039731 | 1039870 | 4.005 |51.4082|35.7239|51.4082|35.7239| 1000000 | 1209564
...

Wenn in den Ergebnissen eine Einschränkung vorhanden ist, sind rule und to_cost nicht NULL. Wenn eine Zugbeschränkung besteht, entsprechen die Ergebnisse genau den Angaben in den Dokumenten .

Wenn ich die shortest_path_shooting_starFunktion ruleaufrufe , unterscheiden sich die Ergebnisse jedoch nicht, ob ein -und- to_costvorhanden ist oder nicht. Ich habe Richtung und has_reverse_costParameter geändert , aber nichts ist passiert.

Ich habe mich gefragt, ob ihr mir in dieser Angelegenheit helfen könntet. Jeder Rat oder sogar ein Hinweis wäre sehr dankbar.

mgri
quelle

Antworten:

1

In Ihrer Unterabfrage scheint Ihnen die Spalte "reverse_cost" zu fehlen.

Aus Dokumenten :

reverse_cost (optional): Die Kosten für die umgekehrte Durchquerung der Kante. Dies wird nur verwendet, wenn die Parameter gerichtet und has_reverse_cost wahr sind (siehe die obige Bemerkung zu negativen Kosten).

Unterdunkel
quelle