Mehr

Abrufen der Daten von PgRouting


Derzeit habe ich den Layer in Geoserver erstellt, indem ich eine native SQL-Anweisung konfiguriert habe, dort erhalte ich die Routengeometriedetails von der DB, indem ich folgende Abfrage

SELECT ST_MakeLine(route.geom) FROM ( SELECT geom FROM pgr_fromAtoB('ways', %x1%, %y1%, %x2%, %y2% ) ORDER BY seq) AS route

Dies gibt mir eine Zeilenfolge, aber zusammen mit diesem möchte ich einige andere Details, dh den Namen des Knotens usw. Dafür habe ich die Abfrage gerade geändert als

SELECT ST_MakeLine(route.geom),text(route.name) FROM ( SELECT geom,name FROM pgr_fromAtoB('ways', %x1%, %y1%, %x2%, %y2% ) ORDER BY seq) AS route

Der obige Name ist nichts anderes als der Name der Route und text() gibt mir den Namen jeder Route zurück. Aber dies gibt einen Syntaxfehler. Wie kann dieses Problem gelöst werden?


Das Problem, das Sie bei der Verwendung haben werdenST_MakeLine(route.geom)ist, dass diese Funktion alle Geometrien zu einer Geometrie zusammenfasst, aber Sie können dies beispielsweise nicht für das Straßennamenattribut tun, da sich der Straßenname wahrscheinlich von Straße zu Straße ändert.

Wenn Sie also mehr Attribute über Geoserver zur Verfügung stellen möchten, können Sie nicht verwendenST_MakeLine. Stattdessen können Sie einfach verwenden

SELECT * FROM pgr_fromAtoB('Wege', %x1%, %y1%, %x2%, %y2%)

In diesem Fall wird Ihre Anfrage jedoch mehr als eine einzelne Linienfolge zurückgeben und Sie müssen beispielsweise die Art und Weise ändern, wie Ihre Route gerendert wird.


Schau das Video: pgRouting: A Crash Course (Oktober 2021).