Exemplo n.º 1
0
        private void ShowStationDistances(PublicDataStation station, LatLongPoint center)
        {
            Distance distance = station.ComputeDistanceAway(center);

            string message = string.Format("Station: {0} is {1} away", station, distance);

            Trace.WriteLine(message);
        }
Exemplo n.º 2
0
        private static void ShowStationDetails(List <PublicDataStation> publicDataStations)
        {
            var stationsWithRainGauge = publicDataStations.Where(x => x.HasRainGauge()).ToList();
            var stationsWithRain      = stationsWithRainGauge.Where(x => x.IsItRaining(RainingThreshold)).ToList();

            int i            = 0;
            int lastDistance = 0;
            PublicDataStation closestStationWithRain = null;

            foreach (PublicDataStation publicDataStation in stationsWithRain)
            {
                var      rain           = publicDataStation.Measurements.First(y => y is RainMeasurement);
                Distance distanceKM     = publicDataStation.ComputeDistanceAway(_center);
                int      distanceMeters = Convert.ToInt32(distanceKM.Value);
                if (i == 0)
                {
                    lastDistance           = distanceMeters;
                    closestStationWithRain = publicDataStation;
                }
                else
                {
                    if (lastDistance < distanceMeters)
                    {
                        lastDistance           = distanceMeters;
                        closestStationWithRain = publicDataStation;
                    }
                }

                var details = string.Format("Station: {0}. Distance: {1}, Rain Level: {2}", i, distanceMeters, rain.Value);
                Console.WriteLine(details);

                i++;
            }

            if (closestStationWithRain != null)
            {
                Console.WriteLine("Closest Station Id = " + closestStationWithRain.Id);
                double closest = closestStationWithRain.ComputeDistanceAway(_center).Value;

                var stationsCloser =
                    stationsWithRainGauge
                    .Where(x => x.ComputeDistanceAway(_center).Value < closest)
                    .ToList();

                Console.WriteLine("There are " + stationsCloser.Count + " stations closer without rain (that have a rain gauge)");
                foreach (var publicDataStation in stationsCloser)
                {
                    var details = string.Format("Station: {0}. Distance: {1}", publicDataStation.Id, publicDataStation.ComputeDistanceAway(_center));
                    Console.WriteLine(details);
                }
            }
        }
Exemplo n.º 3
0
        private List <PublicDataStation> Map(List <PublicDataResponseItem> publicDataResponseItems)
        {
            var stations = new List <PublicDataStation>();

            foreach (var publicDataResponseItem in publicDataResponseItems)
            {
                var station = new PublicDataStation
                {
                    Id           = publicDataResponseItem._id,
                    Place        = Map(publicDataResponseItem.place),
                    Measurements = Map(publicDataResponseItem.measures)
                };

                stations.Add(station);
            }

            return(stations);
        }