Как мне работать с файлами.osm с точки зрения создания узлов и ребер, чтобы я мог поместить его в алгоритм Джикстра?

У меня есть файл MetroManila.osm, и я анализирую его, чтобы он мог читать дороги только с помощью этой команды: --keep = --keep-nodes=highway --keep-ways=, Это правильная команда для фильтрации только дорог?
Что я хочу после разбора, чтобы создать узел, где есть пересечения или кривые, или это возможно, просто используя целые узлы в MetroManila.osm? Могу ли я создать ребро, используя его, и как мне это сделать? В настоящее время я действительно теряюсь в том, что делать, так как я довольно новичок в андроид-студии и в osmdroid.

1 ответ

Это не имеет никакого отношения к Android или osmdroid.

Чтобы узнать, как создать график маршрутизации из файла OSM, см. Соответствующий ответ по адресу help.openstreetmap.org. Цитирую из этого:

  1. разбирать все пути; отбросьте те, которые не являются дорогами, а для остальных запомните идентификаторы узлов, из которых они состоят, путем увеличения "счетчика ссылок" для каждого упомянутого узла.
  2. разбирать все пути во второй раз; путь обычно становится одним ребром, но если какие-либо узлы, кроме первого и последнего, имеют счетчик ссылок больше единицы, то разделите путь на два ребра в этой точке. Узлы со счетчиком ссылок, равным единице, которые не являются ни первыми, ни последними, могут быть отброшены, если только вам не нужно вычислять длину ребра.
  3. (если вам нужна геометрия для узлов вашего графа), проанализируйте раздел узлов XML, записав координаты для всех сохраненных вами узлов.

Также взгляните на маршрутизацию в вики OSM, чтобы получить общие советы и существующие инструменты и библиотеки.

Относительно osmdroid: Если вы не полагаетесь на автономную маршрутизацию, взгляните на osmbonuspack, он поддерживает онлайн-маршрутизацию.

Если вы не хотите изобретать велосипед, просто используйте один из существующих инструментов автономной маршрутизации, упомянутых в вики OSM.

Другие вопросы по тегам