Если вам удобно использовать Java, рассмотрите возможность взглянуть на Atlas.Atlas - это представление данных OSM в памяти, которое позволит вам создать график, представляющий сеть улиц.Существует уровень API Atlas для подключения, маршрутизации и пространственного поиска.Для ваших конкретных потребностей - существует концепция Route , которая поддерживает пути и узлы OSM, определяющие путь между двумя узлами или путями.Есть способы получить наиболее оптимальный маршрут или получить все возможные маршруты.
Для начала я рекомендую следующее:
- Настройка и ознакомление с проектом Atlas
- Извлечение файла OSM или PBF с интересующей областью
- Создание файла Atlas из PBF, запуск применимого алгоритма маршрутизации
Пример кода для загрузки файла OSM:
public class TestAtlasTestRule extends CoreTestRule
{
@TestAtlas(loadFromJosmOsmResource = "yourOsmFile.osm")
private Atlas yourAtlasFile;
public Atlas getAtlasFile()
{
return this.yourAtlasFile;
}
}
Пример кода для получения маршрутов:
// To get the shortest route
final Route shortestRoute = AStarRouter.dijkstra(yourAtlasFile, distanceThreshold).route(startNode, endNode);
// To get all the routes
final Set<Route> allRoutes = AllPathsRouter.allRoutes(startEdge, endEdge, comparatorThatEnforcesRouteOrdering);