Sudah lama kami menggunakan PostGIS untuk menyimpan informasi Geometri kami di database Postgres kami. Kami telah mengembangkan rute vertex-to-vertex sendiri menggunakan perpustakaan iGraph. Kemarin saya membaca tentang pgRouting dan saya porting aplikasi kita saat ini ke pgRouting. Namun, saya menghadapi beberapa masalah dalam menggunakan shooting find path finder.
Kami menyimpan informasi tepi dan simpul dalam tabel dan untuk menemukan rute grafik dengan pembatasan belokan, kami memanggil skrip SQL berikut:
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);
Subqery batin saya akan memiliki hasil sebagai berikut:
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
...
Di hasil, ketika ada kendala, aturan dan to_cost tidak akan menjadi NULL. Ketika pembatasan belok ada, hasilnya akan persis seperti apa yang ditentukan dalam dokumen .
Namun, ketika saya memanggil shortest_path_shooting_star
fungsi, hasilnya tidak akan berbeda jika rule
-and- to_cost
ada atau tidak. Saya telah mengubah diarahkan dan has_reverse_cost
parameter tetapi tidak ada yang terjadi.
Saya bertanya-tanya apakah kalian bisa membantu saya dalam masalah ini. Setiap saran atau bahkan petunjuk akan sangat dihargai.