示例#1
0
        public static City LoadCity(string ConfigFile)
        {
            City city  = new City();
            var  text  = File.ReadAllText(ConfigFile);
            var  files = JsonConvert.DeserializeObject <Dictionary <string, string> >(text);

            city.LandUse = Layer <LandUseModel> .Deserialize(NYCConst.LandUse_Layer);

            city.CensusTract = Layer <CensusTractModel> .Deserialize(NYCConst.CensusTracts_Layer);

            city.TaxiZone = Layer <TaxiZoneModel> .Deserialize(NYCConst.TaxiZones_Layer);

            // load lattice file
            city.Lattice = GeoLattice.Load(files[City.LatticeFile]);

            // load primary file
            text = File.ReadAllText(files[City.PrimaryLookupFile]);
            city.PrimaryLookup = JsonConvert.DeserializeObject <Dictionary <int, int> >(text);

            // load data file
            text            = File.ReadAllText(files[City.DataLookupFile]);
            city.DataLookup = JsonConvert.DeserializeObject <Dictionary <int, RegionData> >(text);

            // load adjacency matrix file
            text = File.ReadAllText(files[City.AdjacencyMatrixFile]);
            city.AdjacencyMatrix = JsonConvert.DeserializeObject <Dictionary <string, Edge> > (text);

            return(city);
        }
示例#2
0
        public static List <Trip.Attr> ComputeNearestCentroid(GeoLattice lattice, List <TripDataModel> Rows)
        {
            Stopwatch        stopwatch = new Stopwatch();
            List <Trip.Attr> Trips     = lattice.ComputeNearestCentroid(Rows);

            Console.WriteLine("Time Elapsed: {0} Seconds\n", (float)stopwatch.ElapsedMilliseconds / 1000);
            return(Trips);
        }
示例#3
0
        public static GeoLattice ComputeLattice()
        {
            Stopwatch stopwatch = new Stopwatch();

            printLn(">>Enter cell dimentions in meters (n x n):");
            int        x          = int.Parse(Console.ReadLine());
            GeoLattice geoLattice = GeoLattice.ComputeLattice(x);

            Console.WriteLine("Time Elapsed: {0} Seconds\n", (float)stopwatch.ElapsedMilliseconds / 1000);
            return(geoLattice);
        }
示例#4
0
        public static List <Trip.Attr> GetTrips(GeoLattice lattice)
        {
            printLn(">>Enter Start Date (format: YYYY-MM-DD):");
            DateTime from = ParseDate(Console.ReadLine());

            printLn(">You entered: " + from.ToString());

            printLn(">>Enter End Date (format: YYYY-MM-DD):");
            DateTime to = ParseDate(Console.ReadLine());

            printLn(">You entered: " + to.ToString());

            printLn(">>Enter Day of Week (e.g. Saturday):");
            DayOfWeek day = ParseDay(Console.ReadLine());

            printLn(">You entered: " + day);

            return(GetTrips(lattice, from, to, day, false));
        }
示例#5
0
        public static void RunCommand(EnumCommands iCommand)
        {
            if (Commands.ContainsKey(iCommand))
            {
                switch (iCommand)
                {
                case EnumCommands.ComputeLattice:
                    printLn(">>Compute Lattice");
                    lattice = ComputeLattice();
                    break;

                case EnumCommands.GetRoute:
                    printLn(">>Get Route");
                    printLn(">>Source Location (lat, long):");
                    double[] source = ParseLocation(Console.ReadLine());

                    printLn(">>Destination Location (lat, long):");
                    double[] destination = ParseLocation(Console.ReadLine());

                    string result = RoutingService.Service.GetRoute(source, destination);
                    string path   = Path.Combine(saveFile, "route.geojson");
                    File.WriteAllText(path, result);
                    printLn("Route saved to : " + path);
                    break;

                case EnumCommands.GetTrips:
                    if (lattice == null)
                    {
                        RunCommand(EnumCommands.ComputeLattice);
                    }

                    printLn(">>Get Trips");
                    trips = GetTrips(lattice);
                    break;

                case EnumCommands.ComputeProbDist:
                    if (trips.Count == 0)
                    {
                        RunCommand(EnumCommands.GetTrips);
                    }
                    if (trips.Count > 0)
                    {
                        printLn(">>Save distribution results As:");
                        string file = Console.ReadLine();
                        printLn(">>Compute Probability Distribution");
                        TripStats.DistributionOfRequests(trips, file);
                    }
                    else
                    {
                        printLn("No trips available. Please check parameters.");
                    }
                    break;

                case EnumCommands.SaveAsBinary:
                    printLn(">>Enter File Name:");
                    string binfile = Console.ReadLine();
                    printLn(">Saving Trip Data<");
                    //TODO
                    //ToBinary.CsvToBinary(trips, Path.Combine(saveFile, binfile + ".dat"));
                    printLn(string.Format("{0} Trips Saved", trips.Count));
                    break;

                case EnumCommands.SaveAsCSV:
                    printLn(">>Enter File Name:");
                    string csvfile = Console.ReadLine();
                    printLn(">Saving Raw Trip Data<");
                    TripFunctions.Save(tripsDB, Path.Combine(saveFile, csvfile + ".csv"));
                    printLn(string.Format("{0} Trips Saved", tripsDB.Count));
                    break;

                default:
                    break;
                }
            }
        }