Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
        }