PgRouting: vấn đề pgr_withpoints
Tiếp theo Câu hỏi khác của tôi về định tuyến tích hợp không mạng, tôi đã thử các chức năng với điểm bằng cách sử dụng mã được đề xuất trong câu trả lời.
Vấn đề là tôi không nhận được đường đi ngắn nhất bằng cách sử dụng các hàm này
Để làm rõ, đường polyline màu hồng đại diện cho kết quả Với điểm và đường màu xanh lục đại diện cho kết quả Dijkstra
Đã chỉnh sửa
Mã tôi đã sử dụng để tính toán tuyến with_points là
SELECT *
FROM pgr_withPoints(
'SELECT id, source, target, st_length(the_geom) as cost FROM vr',
'SELECT pnt.id AS pid,
edg.edge_id,
edg.fraction
FROM points_table AS pnt
CROSS JOIN LATERAL (
SELECT id AS edge_id,
ST_LineLocatePoint(the_geom, pnt.geom) AS fraction
FROM vr
ORDER BY
the_geom <-> pnt.geom
LIMIT 1
) AS edg',
-888888, -607,
details := TRUE
);
vr là bảng cạnh của tôi, -888888 và -607 là id điểm đầu và điểm cuối
Trả lời
Bạn đã chỉ định a costnhưng không phải a reverse_cost, vì vậy giá trị mặc định của -1được sử dụng, nghĩa là phân đoạn bị bỏ qua.
Bạn có thể thử với
'SELECT id, source, target, st_length(the_geom) as cost, st_length(the_geom) as reverse_cost FROM vr',