/// <summary> /// Parses data string from prism and sets the metadata for the ITimeSeries object. /// </summary> /// <param name="errorMsg"></param> /// <param name="data"></param> /// <param name="output"></param> /// <returns></returns> private Dictionary <string, string> SetMetadata(out string errorMsg, PRISMData.PRISM content, ITimeSeriesInput input, ITimeSeriesOutput output) { errorMsg = ""; Dictionary <string, string> meta = output.Metadata; foreach (PropertyInfo p in typeof(PRISMData.Metainfo).GetProperties()) { if (!meta.ContainsKey(p.Name) || !meta.ContainsKey("prism_" + p.Name)) { meta.Add("prism_" + p.Name, p.GetValue(content.metainfo, null).ToString()); } } meta.Add("prism_start_date", input.DateTimeSpan.StartDate.ToString()); meta.Add("prism_end_date", input.DateTimeSpan.EndDate.ToString()); meta.Add("prism_point_longitude", input.Geometry.Point.Longitude.ToString()); meta.Add("prism_point_latitude", input.Geometry.Point.Latitude.ToString()); if (output.Dataset == "Precipitation") { meta.Add("prism_unit", "mm"); } else { meta.Add("prism_unit", "degC"); } return(meta); }
/// <summary> /// Takes the data recieved from prism and sets the ITimeSeries object values. /// </summary> /// <param name="errorMsg"></param> /// <param name="dataset"></param> /// <param name="component"></param> /// <param name="data"></param> /// <returns></returns> public ITimeSeriesOutput SetDataToOutput(out string errorMsg, string dataset, string data, ITimeSeriesOutput output, ITimeSeriesInput input) { errorMsg = ""; PRISMData.PRISM content = Newtonsoft.Json.JsonConvert.DeserializeObject <PRISMData.PRISM>(data); output.Dataset = dataset; output.DataSource = input.Source; output.Metadata = SetMetadata(out errorMsg, content, input, output); output.Data = SetData(out errorMsg, content, input.DateTimeSpan.DateTimeFormat, input.DataValueFormat); return(output); }
/// <summary> /// Parses data string from prism and sets the data for the ITimeSeries object. /// </summary> /// <param name="errorMsg"></param> /// <param name="data"></param> /// <returns></returns> private Dictionary <string, List <string> > SetData(out string errorMsg, PRISMData.PRISM content, string dateFormat, string dataFormat) { errorMsg = ""; Dictionary <string, List <string> > dataDict = new Dictionary <string, List <string> >(); for (int i = 1; i < content.result[0].value[0].data.Count - 1; i++) { DateTime.TryParseExact(content.result[0].value[0].data[i][0].ToString(), new string[] { "yyyy-MM-dd" }, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out DateTime newDate); Double.TryParse(content.result[0].value[0].data[i][1].ToString(), out double dataValue); dataDict.Add(newDate.ToString(dateFormat), new List <string> { dataValue.ToString(dataFormat) }); } return(dataDict); }