示例#1
0
        public static void ReadMpoll(string cbtt, string pcode,
                                     string waterYear, double[] values, string[] mark)
        {
            HydrometMonthlySeries s   = new HydrometMonthlySeries(cbtt, pcode);
            YearRange             rng = new YearRange(int.Parse(waterYear), 10);

            s.Read(rng.DateTime1, rng.DateTime2);

            for (int i = 0; i < s.Count; i++)
            {
                values[i + 1] = s[i].Value;
                mark[i + 1]   = s[i].Flag;
            }
        }
        protected override Series CreateFromConnectionString()
        {
            string       str = ConnectionStringToken("server");
            HydrometHost svr = HydrometHost.PNLinux;

            if (str.Trim() != "")
            {
                svr = (HydrometHost)Enum.Parse(typeof(HydrometHost), str);
            }

            HydrometMonthlySeries s = new HydrometMonthlySeries(
                ConnectionStringToken("cbtt"), ConnectionStringToken("pcode"), svr);

            return(s);
        }
        public static double AverageValue30Year(string cbtt, string pcode, int month1, int month2)
        {
            var t1 = HydrometDataUtility.T1Thirty;
            var t2 = HydrometDataUtility.T2Thirty;

            var s2 = new HydrometMonthlySeries(cbtt, pcode, HydrometHost.PNLinux);

            s2.Read(t1, t2);
            MonthDayRange rng     = new MonthDayRange(month1, 1, month2, 1);
            var           runoff2 = Math.AggregateAndSubset(StatisticalMethods.Sum, s2, rng, 10);
            //compute monthly average here...
            var rval = Math.Sum(runoff2) / runoff2.Count;

            return(rval);
        }
示例#4
0
        public static int WriteMPollUpdateFile(DataTable tblNew, DataTable tblOld, string outputFilename, out bool mpollPermanentMarkChanged)
        {
            mpollPermanentMarkChanged = false;
            if (tblNew.Rows.Count != tblOld.Rows.Count)
            {
                Logger.WriteLine("Error:  the number of rows in the data has changed. no update file will be written");
                return(0);
            }
            if (tblNew.Columns.Count != tblOld.Columns.Count)
            {
                Logger.WriteLine("Error:  the number of columns in the data has changed. no update file will be written");
                return(0);
            }
            StreamWriter output = new StreamWriter(outputFilename);

            int modifiedCounter = 0;

            // first column is date, other columns are values
            output.WriteLine("cbtt,pc,Year,month,value,flag,oldValue,oldFlag");
            for (int c = 1; c < tblOld.Columns.Count; c += 2)
            {
                string columnName  = tblOld.Columns[c].ColumnName;
                var    parts       = columnName.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                string stationName = parts[0];
                string pcode       = parts[1];

                for (int r = 0; r < tblOld.Rows.Count; r++)
                {
                    double valNew = ReadDouble(tblNew.Rows[r][c]);
                    double valOld = ReadDouble(tblOld.Rows[r][c]);

                    string newFlag = ReadFlag(tblNew.Rows[r][c + 1]);
                    string oldFlag = ReadFlag(tblOld.Rows[r][c + 1]);


                    if (valNew != valOld || newFlag != oldFlag)
                    { // something changed.  write to script.
                        if (HydrometMonthlySeries.IsPermanentMark(oldFlag))
                        {
                            mpollPermanentMarkChanged = true;
                        }

                        DateTime date = (DateTime)tblNew.Rows[r][0];

                        System.Globalization.NumberFormatInfo nf = new System.Globalization.NumberFormatInfo();
                        nf.NumberDecimalDigits = 2;
                        string str = stationName.Trim() + ","
                                     + pcode.Trim() + ","
                                     + date.Year.ToString() + ","
                                     + date.ToString("MMM").ToUpper() + ","
                                     + valNew.ToString("F2") + ","
                                     + newFlag + ","
                                     + valOld + ","
                                     + oldFlag;
                        output.WriteLine(str);
                        modifiedCounter++;
                    }
                }
            }
            output.Close();
            return(modifiedCounter);
        }