/// <summary> /// Checks the data endpoints for the Soil Moisture component. /// </summary> /// <returns></returns> public static async Task <Dictionary <string, Dictionary <string, string> > > CheckSoilMEndpoints() { Dictionary <string, Dictionary <string, string> > endpoints = new Dictionary <string, Dictionary <string, string> >(); List <SoilMoisture.SoilMoisture> soils = new List <SoilMoisture.SoilMoisture>(); List <string> sources = new List <string>() { "nldas", "gldas" }; ITimeSeriesInput testInput = new TimeSeriesInput() { Source = "nldas", DateTimeSpan = new DateTimeSpan() { StartDate = new DateTime(2005, 01, 01), EndDate = new DateTime(2005, 01, 05) }, Geometry = new TimeSeriesGeometry() { Point = new PointCoordinate() { Latitude = 33.925673, Longitude = -83.355723 }, GeometryMetadata = new Dictionary <string, string>() } }; ITimeSeriesInputFactory iFactory = new TimeSeriesInputFactory(); foreach (string source in sources) { string[] validLayers = (source.Contains("nldas")) ? new string[] { "0-10", "10-40", "40-100", "100-200", "0-100", "0-200" } : new string[] { "0-10", "10-40", "40-100", "0-100" }; foreach (string layer in validLayers) { SoilMoisture.SoilMoisture soil = new SoilMoisture.SoilMoisture(); testInput.Source = source; string l = layer.Replace('-', '_') + "_soilmoisture"; soil.Input = iFactory.SetTimeSeriesInput(testInput, new List <string>() { l }, out string errorMsg); soil.Input.Source = source + "_" + l; soils.Add(soil); } } Parallel.ForEach(soils, (SoilMoisture.SoilMoisture soil) => { endpoints.Add(soil.Input.Source, soil.CheckEndpointStatus()); }); return(endpoints); }
/// <summary> /// Gets SoilMoisture data using the given TimeSeriesInput parameters. /// </summary> /// <param name="input"></param> /// <returns></returns> public ITimeSeriesOutput GetSoilMoisture(SoilMoistureInput input) { string errorMsg = ""; // Constructs default error output object containing error message. Utilities.ErrorOutput err = new Utilities.ErrorOutput(); // Validate SoilMoisture sources. errorMsg = (!Enum.TryParse(input.Source, true, out SoilMSources pSource)) ? "ERROR: 'Source' was not found or is invalid." : ""; if (errorMsg.Contains("ERROR")) { return(err.ReturnError(errorMsg)); } // SoilMoisture object SoilMoisture.SoilMoisture soilM = new SoilMoisture.SoilMoisture() { Layers = input.Layers }; // Assigning dataset values, used to determine base url List <string> dataset = new List <string>(); foreach (string layer in soilM.Layers) { string l = layer.Replace('-', '_'); dataset.Add(l + "_SOILM"); } // ITimeSeriesInputFactory object used to validate and initialize all variables of the input object. ITimeSeriesInputFactory iFactory = new TimeSeriesInputFactory(); soilM.Input = iFactory.SetTimeSeriesInput(input, dataset, out errorMsg); // If error occurs in input validation and setup, errorMsg is added to metadata of an empty object. if (errorMsg.Contains("ERROR")) { return(err.ReturnError(errorMsg)); } // Gets the SoilMoisture data. ITimeSeriesOutput result = soilM.GetData(out errorMsg); if (errorMsg.Contains("ERROR")) { return(err.ReturnError(errorMsg)); } return(result); }