Đã có lúc chúng tôi sử dụng PostGIS để lưu trữ thông tin Hình học trong cơ sở dữ liệu Postgres của chúng tôi. Chúng tôi đã tự phát triển định tuyến từ đỉnh đến đỉnh bằng thư viện iGraph. Hôm qua tôi đã đọc về pgRouting và tôi đang chuyển ứng dụng hiện tại của chúng tôi sang pgRouting. Tuy nhiên, tôi phải đối mặt với một số vấn đề trong việc sử dụng trình tìm đường dẫn bắt đầu chụp.
Chúng tôi đã lưu trữ thông tin cạnh và đỉnh trong các bảng và để tìm tuyến đường đồ thị có giới hạn rẽ, chúng tôi đang gọi tập lệnh SQL sau:
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 bên trong của tôi sẽ có kết quả như sau:
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
...
Trong kết quả, khi tồn tại một ràng buộc, quy tắc và to_cost sẽ không phải là NULL. Khi tồn tại hạn chế rẽ, kết quả sẽ chính xác như những gì được chỉ định trong tài liệu .
Tuy nhiên, khi tôi gọi là shortest_path_shooting_star
chức năng, kết quả sẽ không khác biệt nếu một rule
-and- to_cost
tồn tại hay không. Tôi đã thay đổi chỉ đạo và has_reverse_cost
thông số nhưng không có gì xảy ra.
Tôi đã tự hỏi nếu các bạn có thể giúp tôi trong vấn đề này. Bất kỳ lời khuyên hoặc thậm chí là một đầu mối sẽ được rất nhiều đánh giá cao.