Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        public static void Main(string[] args)
        {
            Itinero.Logging.Logger.LogAction = (o, level, message, parameters) =>
            {
                Log.Information(string.Format("[{0}] {1} - {2}", o, level, message));
            };

            // attach logger.
            Log.Logger = new LoggerConfiguration()
                         .WriteTo.ColoredConsole()
                         .CreateLogger();

            // load multimodal db and extract tiles.
            var multimodalDb = MultimodalDb.Deserialize(File.OpenRead(@"C:\work\data\routing\belgium.multimodaldb"));
            var tile         = Tiles.Tile.CreateAroundLocation(51.267966846313556f, 4.801913201808929f, 9);
            var tileRange    = tile.GetSubTiles(14);

            var func = new Action(() =>
            {
                foreach (var t in tileRange)
                {
                    var config = new VectorTileConfig()
                    {
                        SegmentLayerConfig = new SegmentLayerConfig()
                        {
                            Name = "transportation"
                        },
                        StopLayerConfig = new StopLayerConfig()
                        {
                            Name = "stops"
                        }
                    };

                    //Log.Information("Extracting tile: {0}", t.ToInvariantString());
                    var vectorTile = multimodalDb.ExtractTile(t.Id, config);

                    //Log.Information("Writing tile: {0}", t.ToInvariantString());
                    using (var stream = File.Open(t.Id.ToInvariantString() + ".mvt", FileMode.Create))
                    {
                        Itinero.VectorTiles.Mapbox.MapboxTileWriter.Write(vectorTile, stream);
                    }
                }
            });

            func.TestPerf(string.Format("Extracted and written {0} tiles.", tileRange.Count));

            Console.ReadLine();
        }