/// <summary> /// Loads an instance from a routing file. /// </summary> public static bool LoadInstance(FileInfo file) { try { if (!file.Exists) { return(false); } Logger.Log("Bootstrapper", TraceEventType.Information, "Loading instance {1} from: {0}", file.FullName, file.Name.GetNameUntilFirstDot()); if (file.Name.EndsWith("routerdb")) { RouterDb routerDb; using (var stream = File.OpenRead(file.FullName)) { routerDb = RouterDb.Deserialize(stream); } var multimodalDb = new MultimodalDb(routerDb, new TransitDb()); var multimodalRouter = new MultimodalRouter(multimodalDb, Itinero.Osm.Vehicles.Vehicle.Pedestrian.Fastest()); var instance = new Instances.Instance(multimodalRouter); InstanceManager.Register(file.Name.GetNameUntilFirstDot(), instance); } else if (file.Name.EndsWith("multimodaldb")) { MultimodalDb routerDb; using (var stream = File.OpenRead(file.FullName)) { routerDb = MultimodalDb.Deserialize(stream); } var multimodalRouter = new MultimodalRouter(routerDb, Itinero.Osm.Vehicles.Vehicle.Pedestrian.Fastest()); var instance = new Instances.Instance(multimodalRouter); InstanceManager.Register(file.Name.GetNameUntilFirstDot(), instance); } Logger.Log("Bootstrapper", TraceEventType.Information, "Loaded instance {1} from: {0}", file.FullName, file.Name.GetNameUntilFirstDot()); return(true); } catch (Exception ex) { Logger.Log("Bootstrapper", TraceEventType.Critical, "Failed to load file {0}: {1}", file, ex.ToInvariantString()); } return(false); }
/// <summary> /// Loads an instance from a folder. /// </summary> /// <returns></returns> public static bool LoadInstanceFromFolder(DirectoryInfo folder) { try { if (!folder.Exists) { return(false); } Logger.Log("Bootstrapper", TraceEventType.Information, "Loading instance {1} from: {0}", folder.FullName, folder.Name); var profiles = new List <Itinero.Profiles.Vehicle>(); foreach (var luaFile in folder.EnumerateFiles("*.lua")) { try { using (var stream = luaFile.OpenRead()) { profiles.Add(Itinero.Profiles.DynamicVehicle.LoadFromStream(stream)); } Logger.Log("Bootstrapper", TraceEventType.Information, "Loaded profile {0}.", luaFile.FullName); } catch (Exception ex) { Logger.Log("Bootstrapper", TraceEventType.Error, "Failed loading profile {0}:{1}", luaFile.FullName, ex.ToInvariantString()); } } if (profiles.Count == 0) { Logger.Log("Bootstrapper", TraceEventType.Information, "Loading instance {1} from: {0}, no vehicle profiles found or they could not be loaded.", folder.FullName, folder.Name); return(true); } var osmFile = folder.EnumerateFiles("*.osm").Concat( folder.EnumerateFiles("*.osm.pbf")).First(); var routerDb = new RouterDb(); using (var osmFileStream = osmFile.OpenRead()) { OsmStreamSource source; if (osmFile.FullName.EndsWith(".osm")) { source = new XmlOsmStreamSource(osmFileStream); } else { source = new PBFOsmStreamSource(osmFileStream); } routerDb.LoadOsmData(source, profiles.ToArray()); } var multimodalDb = new MultimodalDb(routerDb, new TransitDb()); var multimodalRouter = new MultimodalRouter(multimodalDb, Itinero.Osm.Vehicles.Vehicle.Pedestrian.Fastest()); var instance = new Instances.Instance(multimodalRouter); InstanceManager.Register(folder.Name, instance); Logger.Log("Bootstrapper", TraceEventType.Information, "Loaded instance {1} from: {0}", folder.FullName, folder.Name); return(true); } catch (Exception ex) { Logger.Log("Bootstrapper", TraceEventType.Critical, "Failed to load instance {1} from: {0}, {2}", folder.FullName, folder.Name, ex.ToInvariantString()); } return(false); }