Làm cách nào để làm việc với shortest_path_sh Boot_star () trong pgRouting?


8

Đã 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_starchức năng, kết quả sẽ không khác biệt nếu một rule-and- to_costtồn tại hay không. Tôi đã thay đổi chỉ đạo và has_reverse_costthô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.

Câu trả lời:


1

Bạn dường như đang thiếu cột "Reverse_cost" trong truy vấn con của bạn.

Từ tài liệu :

Reverse_cost (tùy chọn): chi phí cho việc di chuyển ngược của cạnh. Điều này chỉ được sử dụng khi các tham số được định hướng và has_Vverse_cost là đúng (xem nhận xét ở trên về chi phí âm).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.