Если я вас правильно понял, вам просто нужно преобразовать уже существующие координаты в формат, который может прочитать ваше приложение. Существует множество форматов, которые вы можете получить непосредственно из PostGIS. Вот некоторые из них, которые могут вас заинтересовать:
Пример данных
CREATE TEMPORARY TABLE t (seq INT, the_geom GEOMETRY);
INSERT INTO t VALUES (1,'POINT(1 2)'),(2,'POINT(2 3)');
Геометрии в формате геометрии PostGIS - как вы делали до сих пор.
SELECT seq, the_geom FROM t;
seq | the_geom
-----+--------------------------------------------
1 | 0101000000000000000000F03F0000000000000040
2 | 010100000000000000000000400000000000000840
(2 Zeilen)
Получение данных в виде широты и долготы в отдельных столбцах - ST_X
, ST_Y
SELECT seq, ST_X(the_geom), ST_Y(the_geom) FROM t;
seq | st_x | st_y
-----+------+------
1 | 1 | 2
2 | 2 | 3
(2 Zeilen)
As WKT - ST_AsText
SELECT seq, ST_AsText(the_geom) FROM t;
seq | st_astext
-----+------------
1 | POINT(1 2)
2 | POINT(2 3)
(2 Zeilen)
.. или Geo JSON - ST_AsGeoJSON
SELECT seq, ST_AsGeoJSON(the_geom) FROM t;
seq | st_asgeojson
-----+--------------------------------------
1 | {"type":"Point","coordinates":[1,2]}
2 | {"type":"Point","coordinates":[2,3]}
(2 Zeilen)
Так что ваши CTE
, скорее всего, будут выглядеть как это
WITH dijkstra AS (
SELECT *
FROM pgr_dijkstra('SELECT id,source,target,distance AS cost
FROM edges_noded',230965,3338,false))
SELECT seq,
CASE WHEN dijkstra.node = edges_noded.source THEN ST_X(edges_noded.the_geom)
ELSE ST_X(ST_Reverse(edges_noded.the_geom)) END AS route_geom_x,
CASE WHEN dijkstra.node = edges_noded.source THEN ST_Y(edges_noded.the_geom)
ELSE ST_Y(ST_Reverse(edges_noded.the_geom)) END AS route_geom_y
FROM dijkstra JOIN edges_noded ON(edge = id)
ORDER BY seq