Я хочу написать программу, которая может рассчитывать время вождения от точки А до точки Б с помощью OSM и библиотеки Itinero (http://www.itinero.tech/)
В настоящее время я делаю следующее:
- Загрузите базу данных «pbf» с geofabrik.de
- Преобразуйте «pbf» в файл routerdb
Используйте файл 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 минут, чтобы рассчитать время вождения, и это слишком много длямоя программа.
Было бы здорово, если бы у меня были предложения для меня!
С уважением, Андреас