2016-02-28 7 views
0

pg_routing поиск кратчайшего пути от начала и конечной точки, которые являются точками вершин на путях (узлах), но нет правильного решения, когда мы хотим найти кратчайший путь для местоположений, которые не находятся на способы (например, POI, точные адреса, ...). Общее решение - поиск ближайших узлов, а затем вычисление кратчайшего пути, но результат может быть далек от реальности, если, например, дорога имеет большую длину, или ближайший узел находится на другой дороге, которая не пересекается ближайшая дорога в обычном месте. Итак, я думаю о двух решениях для этой проблемы, но я действительно не знаю, насколько эффективны алгоритмы pg_routing, если сеть растет: 1- разделите дорогу на каждые X метров, что резко увеличит количество узлов, и BTW топологию, а затем вычислить кратчайший путь на этих новых узлах, 2- При каждом вызове pg_routing предварительно вычислить начальные и конечные местоположения: найдите ближайший путь, разделите этот путь на 2 части с помощью ST_LineLocatePoint в ближайшем месте, добавьте эти новостные способы для других не разделяли пути и, наконец, называть pg_routing Итак, что является лучшим решением с точки зрения производительности, учитывая тот факт, что для решения 2 я не знаю, как динамически модифицировать топологию?Производительность pg_routing с точным местоположением

ответ

1

Посмотрите на семейство функций WithPoints в версии 2.2, которое скоро будет в альфа-бетах. И pgr_trsp() уже имеет такую ​​возможность начиная с 2.0, где вы можете маршрутизировать между местоположениями, определенными краем и процентом вдоль этого края.

+0

То, что мне нужно. Спасибо –

+1

Опубликован PgRouting 2.2.0-alpha. https://github.com/pgRouting/pgrouting/releases –

+0

Спасибо за отзыв –