Я хотел бы рассчитать график, подобный изохроне, используя pgsql. Поэтому я уже использовал алгоритм pgr_drivingDistance . Вы указываете начальную точку и значение расстояния и получаете изохрону.
Выход с использованием алгоритма получен с кодом, который выглядит примерно так:
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost FROM edge_table',
2, 2, false -- starting point, distance, directed
);
Красная звезда представляет отправную точку.
Теперь мне нужен график, который работает одинаково, например, начиная с одной точки и получая маршруты во всех направлениях. Разница в том, что я не хочу указывать расстояние, а список с точечными координатами, которые лежат в сети дорог. Маршрут в каждом направлении должен останавливаться в первой точке, лежащей на каждом маршруте. Расстояние на каждом маршруте разное, и я не знаю, какие точки являются ближайшими.
Предполагается, что желаемый вывод с использованием точек «остановки», которые отображаются зеленым цветом, выглядит следующим образом.
Я уже пробовал:
- Использование заданного алгоритма pgr_drivingDistance и повышение значения расстояния каждый раз, когда точка не достигнута -> проблема здесь: расстояние одинаково для всех направлений и не индивидуально для каждого маршрута.
- Использование алгоритма pgr_dijkstra для каждого маршрута -> проблема здесь: поскольку вы не знаете, какая точка затронута, вы не знаете, какую конечную точку выбрать для расчета. Вы также не можете взять ближайший в непосредственной близости, потому что вам нужен ближайший на конкретном маршруте.
Я знаю, что мне нужно построить почти полный новый алгоритм, но, возможно, у кого-то есть идея, как начать или даже испытать эту проблему.
Заранее спасибо!