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); }
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); } } }
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); }