2014-02-16 3 views
0

Я разрабатываю пользовательское приложение маршрутизации с использованием Openstreetmap. Для этого мне нужно прочитать (по крайней мере) узлы и ребра в определенном граничном поле, используя API Openstreetmap, например, Overpass. После этого я обработать узлы и ребра и применить алгоритм маршрутизации. Моя основная проблема заключается в определении размера этого пограничного поля.Определение размера граничного поля в алгоритме маршрутизации Openstreetmap

Одним из способов является считывание большого пограничного поля, включающего в себя начальные и конечные узлы, и обработку всех узлов и ребер в нем, но это кажется чрезмерным и потребует длительного времени загрузки от API. Кроме того, это не способ гарантировать, что у нас есть все необходимые дороги.

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

Знаете ли вы, является ли один из этих двух подходов обычным в приложениях маршрутизации OSM или если предпочтительный другой подход?

ответ

1

Ваш подход очень необычен и не рекомендуется. Обычно у вас есть локальная копия базы данных OSM. Либо целое planet, либо extract, например, в стране.

Получение данных на лету - очень плохая идея, и вы столкнетесь с множеством проблем. API не готовы к поддержке таких тяжелых запросов. А на большие расстояния вам придется иметь дело с сотнями мегабайт данных. Кроме того, если вы хотите быстро вычислить маршруты, необходимо предварительно обработать необработанные данные.

Если вы решили установить локальную базу данных, я рекомендую вам прочитать switch2osm. Существует guide about building a tile server, который вы можете использовать, просто пропустите установку Mapnik, mod_tile, renderd и т. Д.

+1

+1 но я рекомендую заглянуть в программное обеспечение маршрутизации (серверы черепицы не помогут в маршрутизации): https: // wiki .openstreetmap.org/wiki/Маршрутизация – Karussell

+0

Правильно, но это руководство помогает при создании и обновлении базы данных :) – scai

+0

, который не то, что вы хотите, ЕСЛИ вы хотите только маршрутизацию :) – Karussell