/// <summary>
        /// /RUSSIANNAPA/APCC1/ensemble-FLOW/01SEP2019/1HOUR/T:0212019/
        /// </summary>
        /// <param name="dssFileName"></param>
        /// <param name="watersheds"></param>
        /// <param name="saveAsFloat"></param>
        /// <param name="version"></param>
        /// <returns></returns>
        public static void WriteToTimeSeriesProfiles(string dssFileName, Watershed watershed)
        {
            bool saveAsFloat = true;

            int count = 0;

            double[,] ensemble = null;
            using (var w = new DssWriter(dssFileName, DssReader.MethodID.MESS_METHOD_GLOBAL_ID, DssReader.LevelID.MESS_LEVEL_NONE))
            {
                foreach (Location loc in watershed.Locations)
                {
                    foreach (Forecast f in loc.Forecasts)
                    {
                        ArrayUtility.TransposeFloatToDouble(f.Ensemble, ref ensemble);

                        if (count % 100 == 0)
                        {
                            Console.Write(".");
                        }

                        TimeSeriesProfile ts = new TimeSeriesProfile();
                        ts.StartDateTime = f.IssueDate;

                        //  /RUSSIANNAPA/APCC1/Ensemble-FLOW/01SEP2019/1HOUR/T:0212019/
                        string F    = "|T:" + f.IssueDate.DayOfYear.ToString().PadLeft(3, '0') + f.IssueDate.Year.ToString();
                        var    path = "/" + watershed.Name.ToString() + "/" + loc.Name + "/Ensemble-Flow//1Hour/" + F + "/";

                        ts.ColumnValues = Array.ConvertAll(Enumerable.Range(1, ensemble.GetLength(1)).ToArray(), x => (double)x);
                        ts.DataType     = "INST-VAL";
                        ts.Path         = new DssPath(path);
                        ts.Values       = ensemble;
                        ts.ColumnUnits  = "cfs";


                        w.Write(ts, saveAsFloat);
                        count++;
                    }
                }
            }
        }
Exemplo n.º 2
0
        private static TimeSeriesProfile CreateProfileData(int numRows, int numColumns)
        {
            TimeSeriesProfile p = new TimeSeriesProfile();

            p.StartDateTime = DateTime.Now.Date;

            int _rows    = numRows;
            int _columns = numColumns;


            double[,] data = new double[_rows, _columns];
            double[]   columnValues = new double[_columns];
            DateTime[] dates        = new DateTime[_rows];
            DateTime   t            = p.StartDateTime;
            int        counter      = 1;

            for (int i = 0; i < data.GetLength(0); i++)
            {
                for (int j = 0; j < _columns; j++)
                {
                    data[i, j]      = counter++; // Math.Cos(j) * Math.PI + i;
                    columnValues[j] = j;
                }
                dates[i] = t;
                t        = t.AddHours(1);
            }

            p.Times        = dates;
            p.Values       = data;
            p.ColumnValues = columnValues;
            p.Units        = "cfs";
            p.ColumnUnits  = "";
            p.DataType     = "Inst-Val";
            p.Path         = new DssPath("/dotnet/profile/ensemble-flow//1Hour/365/");

            var tbl = p.ToDataTable();

            //Console.WriteLine(tbl);
            return(p);
        }