ATTransport.Program.OutputData C# (CSharp) Метод

OutputData() приватный статический Метод

private static OutputData ( ) : void
Результат void
        private static void OutputData()
        {
            //Minimums that we will use later.
            double maxLat = centerLat + (maxLatKM / 110.574);
            double minLat = centerLat - (maxLatKM / 110.574);
            double maxLng = centerLng + (maxLngKM / 111.320 * Math.Cos(centerLat));
            double minLng = centerLng - (maxLngKM / 111.320 * Math.Cos(centerLat));

            //Overrideen to focus on Dominion road
            //maxLat = -36.860440;
            //minLat = -36.911379;
            //minLng = 174.722142;
            //maxLng = 174.766603;

            var selectedRoutes = routes;

            var outputMapStopItems = new List<OutputMapStopItem>();
            foreach (var route in selectedRoutes)
            {
                //Get all trips that actually fall into our time range that we want.
                //Just hardcoded to 6 - 10AM approx.
                var selectedTrips = route.Trips.Where(x => x.StopTimes.Any(y => DateTime.Compare(y.Time, DateTime.Parse("6:00:00 AM")) > 0 && DateTime.Compare(y.Time, Convert.ToDateTime("10:00:00 AM")) < 0));

                foreach (var trip in selectedTrips)
                {
                    var minStopTime = DateTime.MaxValue;
                    var maxStopTime = DateTime.MinValue;

                    var stopLatLngs = new List<OutputMapStopLatLng>();
                    foreach (var stopTime in trip.StopTimes.OrderBy(x => x.Time))
                    {
                        var stop = stopLookup[stopTime.StopId];

                        if (stop.StopLat < maxLat && stop.StopLat > minLat && stop.StopLng < maxLng && stop.StopLng > minLng)
                        {
                            stopLatLngs.Add(new OutputMapStopLatLng { Lat = stop.StopLat, Lng = stop.StopLng });

                            //Used later on.
                            if (stopTime.Time < minStopTime)
                                minStopTime = stopTime.Time;
                            if (stopTime.Time > maxStopTime)
                                maxStopTime = stopTime.Time;
                        }
                    }

                    //Bail if we didn't actually find any stops that fit what we needed.
                    if (stopLatLngs.Count < 2)
                        continue;

                    //Work out the distance travelled total.
                    var distanceTravelled = 0.0;
                    for(int i=1; i < stopLatLngs.Count; i++)
                    {
                        distanceTravelled += DistanceBetweenPoints(stopLatLngs[i - 1].Lat, stopLatLngs[i - 1].Lng, stopLatLngs[i].Lat, stopLatLngs[i].Lng);
                    }

                    var stopTimeStart = trip.StopTimes.OrderBy(x => x.Time).First();

                    outputMapStopItems.Add(new OutputMapStopItem
                    {
                        StartTime = trip.StopTimes.OrderBy(x => x.Time).First().Time.TimeOfDay.TotalSeconds,
                        TripId = trip.TripId,
                        LatLngs = stopLatLngs,
                        TotalDistanceTraveled = (int)(distanceTravelled * 1000),
                        TotalTimeTaken = maxStopTime.Subtract(stopTimeStart.Time).TotalMilliseconds
                    });
                }

            }

            var outputText = JsonConvert.SerializeObject(outputMapStopItems);

            File.WriteAllText("stops.json", outputText);
        }