একটি ক্যোয়ারিতে PgRouting এর সাথে একাধিক সংক্ষিপ্ততম পাথ পাচ্ছেন?


12

আমি একাধিক উত্স এবং লক্ষ্য জোড়াগুলিতে একবারে সংক্ষিপ্ততম পথ অ্যালগরিদম চালাতে চাই এবং একটি সারণী হিসাবে ফলাফল পেতে এবং তারপরে এটি প্রক্রিয়া করতে চাই।

আমি এটা কিভাবে করবো? এই কোয়েরিটি কাজ করে না:

SELECT a.source, a.target, paths.* 
FROM all_to_all a, shortest_path_astar('...', a.source, a.target, false, false) paths;

ERROR:  function expression in FROM cannot refer to other relations of same query level

(বিটিডব্লিউ, সমস্ত_ সমস্ত_ আক্ষরিক অর্থে সকলের জন্য অর্থ বোঝায় না, :) এটি কেবল কয়েকটি এলোমেলো জোড়)

এটিও কার্যকর হয় না:

SELECT * 
FROM all_to_all a, (
   SELECT * FROM shortest_path_astar('...', a.source, a.target, false, false) yyy
) AS t2;

---- আপনি কি দয়া করে এটিকে প্রসারিত করতে পারেন? আমার একই সমস্যা আছে তবে এই জোড়গুলি ঠিকঠাক পেতে পারি না? (পোস্টের একটি চেষ্টা করার সম্পাদনা থেকে]
ম্যাপেরজ

উত্তর:


13

কিছুটা এইরকম

SELECT 
  source, 
  target,
  (SELECT SUM(cost) FROM  -- or whatever you want to do with the routing result
     (SELECT * FROM shortest_path_astar('...',
       source,
       target,
       false,
       false)
     ) AS foo 
  ) AS cost
FROM all_to_all;

4

এখানে এমন একটি কোয়েরি রয়েছে যা সমস্ত উত্স-লক্ষ্য সংমিশ্রণের জন্য সমস্ত বিভাগকে প্রদান করে:

SELECT
    source,
    target,
    shortest_path_astar('SELECT gid AS id, length AS cost, * FROM ways', source, target, false, false) AS segment
FROM
    all_to_all

অবিশ্বাস্য, এসকিউএল সিনট্যাক্সের সাথে বেমানান, তবে কাজ করে!

source | target | segment
-------+--------+----------------
     1 |      4 | (1, 2, 0.1357)
     1 |      4 | (2, 3, 0.2468)
     1 |      4 | (3, 4, 0.9)
     1 |      4 | (4, -1, 0)
other sources & targets here
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.