LINUX.ORG.RU

Работа с картами

 ,


1

1

Потребовалось мне измерять расстояние между городами РФ и СНГ пока, но может и весь мир. Города более-менее крупные, язык python. Но измерять надо не напрямую, а по дорогам, понятно, что точный алгоритм на NP полной задаче ляжет, но пойдут и приближенные данные, точная точность не требуется. Соответственно нужен граф дорог или API (бесплатное, если есть, платное ненужно, проект не коммерческий с целью получения прибыли, а научный с целью получения знаний и поделиться результатами со всем миром). Кто-нибудь знает нечто подобное?

PS

Городов в списке много и путей строить тоже немало, так что скорее всего оффлайн вариант нужен.

★★★★★

не напрямую, а по дорогам,

автомобильным, железным, пешеходным? Земля круглая или плоская? Разницу высот надо учитывать? Физически существующие, но по политическим причинам непроходимые дороги?

Harald ★★★★★ ()
Ответ на: комментарий от NeXTSTEP

Не между двумя, а между одним и всеми остальными из списка с отбором n ближайших городов для каждого города из списка. Пересекающиеся и разветвляющиеся улицы и дороги тоже учитывать надо.

peregrine ★★★★★ ()
Последнее исправление: peregrine (всего исправлений: 2)
Ответ на: комментарий от Harald

автомобильным, железным, пешеходным?

В первую очередь автомобильным, железные тоже хорошо если есть. Земля круглая, разница высот не важна, проходимые, т.е. границы государств и закрытые зоны учитывать.

peregrine ★★★★★ ()
Ответ на: комментарий от peregrine

Если ты используешь (любое) API, тебе не нужно памяти под данные вообще.

А если ты сам собираешься строить маршруты, то должен понимать что геоданные, тем более всего мира - очень тяжёлая вещь по своей сути, поэтому чтобы использовать их напрямую (из своего кода или из библиотеки) нужно либо много памяти в которую они влезут, либо база данных которая будет быстро читать их с диска по мере необходимости (postgresql + postgis), причём базу сначала нужно будет налить (несколько часов). Либо данные нужно специально готовить - как минимум, вырезать только дороги и сильно упростить граф (тебе же не нужна форма дорог между перекрёстками, только длина), но на это само по себе нужна память и время.

Но я не думаю что тебе нужно этим заморачиваться когда есть API. Результаты из него, к слову, можно кэшировать на довольно долгое время (дни - недели), это поможет если тебя не устраивает доступность, latency или нужно слишком дофига RPS.

slovazap ★★★★★ ()
Ответ на: комментарий от peregrine

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

потребности сильно полегчают

ну и в https://web.telegram.org/#/im?p=@ruosm https://forum.openstreetmap.org/viewforum.php?id=21 стукнутся

pfg ★★★★ ()
Последнее исправление: pfg (всего исправлений: 2)
Ответ на: комментарий от pfg

Я бы вообще убрал все дороги в городах, они не важны. А вот дорога в лесу между городами важна, даже если она плохая.

peregrine ★★★★★ ()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от peregrine

А вот дорога в лесу между городами важна, даже если она плохая.

Ремонтировать машину кто будет потом? Почему в нашей стране люди с таким отношением?(

Что мешает строить чуть длиннее маршруты, но по нормальной дороге? Человечнее надо... И у водителя будет возможность срезать и нарваться на проблемы в дороге, если его рабовладелец одобрит такое.

Надеюсь, что чушь про «выбор» я не услышу.

anonymous ()
Ответ на: комментарий от peregrine

дорога в лесу между городами важна, даже если она плохая.

В прошлом году дороги были, на картах есть. В этом году все буреломом завалило, дороги исчезли!

anonymous ()

Кто-нибудь знает нечто подобное?

В инете есть кучу хороших готовых решений. На много больше чем тебе здесь накидали ссылок.

anonymous ()