Рассчитать время вождения с OSM и Itinero - PullRequest
0 голосов
/ 08 октября 2018

Я хочу написать программу, которая может рассчитывать время вождения от точки А до точки Б с помощью OSM и библиотеки Itinero (http://www.itinero.tech/)

В настоящее время я делаю следующее:

  1. Загрузите базу данных «pbf» с geofabrik.de
  2. Преобразуйте «pbf» в файл routerdb
  3. Используйте файл routerdb в коде, как показано нижефрагмент:

    RouterDb routerDb = new RouterDb();
    
    string path = "PathToRouterDB";
    using (var stream = new FileInfo(path).OpenRead())
    {
        routerDb = RouterDb.Deserialize(stream);
    }
    
    router = new Router(routerDb);
    
    var profile = router.Db.GetSupportedProfile("car");
    
    Coordinate from = new Coordinate(fromLatidutde, fromLongitude);
    Coordinate to = new Coordinate(toLatitude, toLongitude);
    
    List<RouterPoint> points = new List<RouterPoint>
    {
        router.TryResolve(profile, from, 200),
        router.TryResolve(profile, to, 200)
    }
    
    var route = router.TryCalculate(profile, points.ToArray());
    
    float drivingTime = route.Value.TotalTime;
    

Это правильный путь? Когда я рассчитываю большие расстояния (например, 500 км), это занимает 5 минут, чтобы рассчитать время вождения, и это слишком много длямоя программа.

Было бы здорово, если бы у меня были предложения для меня!

С уважением, Андреас

1 Ответ

0 голосов
/ 26 июня 2019

Ваш код правильный.Вам просто нужно добавить это: routerDb.AddContracted (profile);На моем ПК он рассчитывает аналогичное расстояние за 3-4 секунды.

...