PgRouting - Як відсікати посилання при досягненні максимальних витрат?


13

У мене є полілінійне формале, що представляє дорожню мережу, і друге формуле, що містить точки. Я хотів би використовувати PostGIS (імовірно PgRouting) для ідентифікації підмереж або службових зон, що випромінюються від цих точок.

По суті, я сподіваюся задати питання "Починаючи з точки X, як далеко я можу піти в будь-якому напрямку, враховуючи загальний бюджет подорожі в 1 км, дотримуючись дорожню мережу?" Результатом буде набір обрізаних поліліній, що представляють загальний діапазон можливостей подорожі, враховуючи бюджет на 1 км.

Для довідки, цей аналіз GRASS видається саме тим, що я хочу зробити (крім цього я хочу це зробити в PostGIS): http://www.gdf-hannover.de/lit_html/grass60_v1.2_en/node57.html#sec: опталлок

Цей наступний приклад здається майже тим, що я хочу зробити, за винятком того, що, здається, він відповідає на питання "якими вузлами я міг би подорожувати з заданим бюджетом подорожі на відстань X?" http://underdark.wordpress.com/2011/02/12/drive-time-isochrones/

Друга - не зовсім відповідь, яку я шукаю, тому що я хочу, щоб полілінії були прикріплені до моєї відстані подорожі - мені байдуже, чи вдасться я до кінця.


Один із варіантів, який мені трапляється, - це якимось чином розділити мої полілінії на багато точок. Це наближає мене до правильної відповіді, але здається досить гакітним, і все ще не зовсім мене змушує.
Петро

Відповіді:


2

Одна думка вважала, що я повинен був: 1) запустити рутину_віддачі і 2) використовувати рутину "points_as_polygon" від pgRouting (яка викликає функцію альфа-форми), щоб генерувати найменший полігон (и) на заданих відстанях витрат на основі точок рутинної дистанції повертає. Тоді ви можете вибрати всі вулиці на полігонах, які дадуть вам загальне уявлення про подорож.

Якщо ви не стежили за обговоренням у списку користувачів pgRouting , останнім часом вони обговорювали більше варіантів (у травні та червні 2011 року).


1
Цікаві дискусії зі списку користувачів. Шкода, що функція drive_distance - це баггі.
underdark

1

Оскільки це справді проблема з графіком, вам потрібна підключення / топологія + інформація про витрати. Для pg_routing це таблиця, яку ви надсилаєте алгоритмам найкоротшого шляху. У цій статті є інформація про те, як створити її (я припускаю, що у вас вже є). Вибачте, я не можу дати точну функцію в pg_routing, який це робить, але писати її слід. Однак, я можу вам сказати, що якщо ви продовжуєте дзвонити найкоротший_на шлях знову і знову, ви робите алгоритм знизу і знову і перебираєте результат - зовсім не ефективно.

Тоді ваше рішення переходить до кожного краю, додаючи їх до "списку прогулянок" та обчислюючи витрати, поки ваш бюджет (тобто відстань) не буде перевищено. Якщо бюджет прийнятний (тобто бюджет не перевищено), ви також додаєте геометрію до "сумки з геометрією списку". Ви повинні обробити кожен край рівно один раз. Для самого останнього обходу (де ваші бюджети перевищено), вам потрібно отримати довжину та інтерполювати точну відстань, яку ви хочете проїхати , а потім додати результат до "прийнятного списку". Ваш результат - це з'єднання сумки з геометрією.


1
На останньому кроці є тонкощі: деякі краї можуть бути досягнуті з будь-якої його кінцевої точки. Це може призвести до включення частин обох кінців або навіть до цілого краю, навіть якщо проходження всього краю від будь-якої з кінцевих точок перевищить обмеження бюджету. Наприклад, розглянемо проїзд від точки a по непрямому графіку з ребрами довжини одиниці {(a, b), (a, c), (b, c)} і бюджетом 1.6. Ви можете досягти або b або c ціною 1, витрачаючи 0,6. Це робить кожну точку уздовж ребра (b, c) доступною.
whuber

Ви праві :) +1
Рагі Ясер Бурхум

1

"Починаючи з точки X, як далеко я міг піти в будь-якому напрямку, враховуючи загальний бюджет подорожі в 1 км, дотримуючись дорожню мережу?"

Оскільки вам належить враховувати лише невеликий регіон (радіус 1 км на макс.), Ви, ймовірно, можете піти, розбивши ланки на кілька невеликих шматочків (залежно від точності, яку ви хочете досягти) та створивши необхідні вузли. Отримані в результаті мережі "високої роздільної здатності" повинні бути все ще керованими.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.