پایگاه داده مکانی اَبری
زیرساخت مکانی پروژه‌های شما، بدون دردسر راه‌اندازی سرور

چطور کوتاه‌ترین مسیر بین دو نقطه را با pgRouting پیدا کنم؟

راهنمای گام‌به‌گام آخرین بازبینی: ۱۴۰۵/۰۷/۲۹

پاسخ کوتاه

نزدیک‌ترین گره شبکه به هر نقطه را پیدا و با pgr_dijkstra روی routing.ways مسیر را بگیرید. نمونه آماده در صفحه «داده آماده ایران» هم هست.

پیش‌نیاز: شبکه مسیریابی را وارد کرده باشید.

WITH a AS (SELECT id FROM routing.ways_vertices_pgr
           ORDER BY the_geom <-> ST_SetSRID(ST_MakePoint(51.389, 35.700), 4326) LIMIT 1),
     b AS (SELECT id FROM routing.ways_vertices_pgr
           ORDER BY the_geom <-> ST_SetSRID(ST_MakePoint(51.420, 35.760), 4326) LIMIT 1)
SELECT r.seq, w.name, w.length_m, w.the_geom
FROM pgr_dijkstra(
       'SELECT gid AS id, source, target, cost, reverse_cost FROM routing.ways',
       (SELECT id FROM a), (SELECT id FROM b)) r
JOIN routing.ways w ON w.gid = r.edge;
  • مختصات (طول، عرض) را عوض کنید.
  • نتیجه را در کنسول SQL روی نقشه ببینید یا در QGIS لایه کنید.
  • جمع طول: SUM(w.length_m) برای کل مسیر.
  • جهت یک‌طرفه‌ها در cost و reverse_cost لحاظ شده است.

آیا این مقاله به شما کمک کرد؟

چه چیزی کم بود؟ (اختیاری)

هنوز جواب نگرفتید؟ به پشتیبانی بگویید.