Получите расстояние самого быстрого пути с помощью pgr_drivingDistance

Я создал сеть маршрутизации на основе OSM с OSM2PO в PostgreSQL с расширением pgrouting. У меня есть столбец km (расстояние в км), столбец cost (время в пути) и max_speed. Я пытаюсь создать водосбор с помощью функции pgr_drivingDistance, используя столбец km (расстояние в км). Это вычисляет водосбор с кратчайшим путем, что в большинстве случаев не является реальным расстоянием для автомобилей. Поэтому я хочу рассчитать охват на основе кратчайшего времени вождения, используя cost. Но в результате мне нужны единицы измерения метры, а не время. Большое спасибо за любую подсказку.

Краткая версия: мне нужен водосбор с расстояниями в км для самого быстрого (минимального времени) маршрута!

Вот стандартный код для pgr_drivingDistance с кратчайшим расстоянием в км:

SELECT *
   FROM routing_vertices_pgr
   JOIN(
SELECT * FROM pgr_drivingDistance('
SELECT id,
     source,
     target,
     km as cost
    FROM routing',
1, 100, false)) AS route ON routing_vertices_pgr.id = route.node ;

person Martin    schedule 03.12.2016    source источник
comment
Это довольно специализированный вопрос. Возможно, вы лучше разбираетесь в dba.stackexchange.com.   -  person Evan Carroll    schedule 06.12.2016
comment
Речь идет о пространственных функциях, поэтому лучше gis.stackexchange.com   -  person Jendrusk    schedule 27.12.2016


Ответы (2)


Вы не можете сделать такую ​​вещь... При движении на расстоянии вы решаете, какова ваша стоимость (время, расстояние или что-то еще), и функция обрабатывает эту стоимость. Стоимость только одна... Я думаю, что одним из решений может быть подсчет расстояния, но исключить из краев это «нереалистично для автомобилей», используя поле clazz или flags. Вы найдете описания этих полей в конфигурационном файле osm2po.

person Jendrusk    schedule 27.12.2016

Если у вас есть тип объекта (шоссе, основная дорога), создание столбца с max_speed и деление этого max_speed на расстояние даст вам время, необходимое для прохождения сегмента дороги. Это время можно выбрать в качестве стоимости, чтобы получить кратчайшее расстояние вождения.

person Columbo25    schedule 06.12.2016
comment
Спасибо за Ваш ответ. Инструмент OSM2PO уже создал столбец cost со временем вождения. Но расчет водосбора на основе cost не даст мне расстояния в км для самого быстрого маршрута. - person Martin; 07.12.2016
comment
измените стоимость в столбце (расстояние/скорость), чтобы получить самый быстрый маршрут 1. разделите столбец стоимости на новый столбец max_speed, в который вы вставляете максимальную скорость для каждого типа объекта. 2. возьмите этот новый столбец в качестве стоимости и рассчитайте pgr_drivingDistance from (время как стоимость). - person Columbo25; 08.12.2016
comment
Спасибо за ответ. Может быть, я не понимаю, но, по-моему, это невозможно для моей цели, потому что я не рассчитываю самый быстрый маршрут в начале, я могу использовать только функцию pgr_drivingDistance . Мне нужны самые быстрые маршруты для всех узлов на расстоянии 100 км от точки А с информацией о расстоянии в км. - person Martin; 19.12.2016