public static Series Read(string cbtt, string pcode, DateTime t1, DateTime t2, TimeInterval interval, HydrometHost hydrometServer) { Series s = new Series(); if (interval == TimeInterval.Daily) { s = HydrometDailySeries.Read(cbtt, pcode, t1, t2, hydrometServer); } else if (interval == TimeInterval.Irregular) { s = HydrometInstantSeries.Read(cbtt, pcode, t1, t2, hydrometServer); } else if (interval == TimeInterval.Monthly) { s = new HydrometMonthlySeries(cbtt, pcode, hydrometServer); s.Read(t1, t2); } else { throw new ArgumentException("Undefined TimeInterval", interval.ToString()); } return(s); }
public static HydrometDailySeries Read(string cbtt, string pcode, DateTime t1, DateTime t2, HydrometHost server) { HydrometDailySeries s = new HydrometDailySeries(cbtt, pcode, server); s.ReadCore(t1, t2); return(s); }
protected override Series CreateFromConnectionString() { string str = ConnectionStringToken("server"); HydrometHost svr = (HydrometHost)Enum.Parse(typeof(HydrometHost), str); HydrometDailySeries s = new HydrometDailySeries( ConnectionStringToken("cbtt"), ConnectionStringToken("pcode"), svr); return(s); }
public void HydrometDailyFactory() { Series s = new Reclamation.TimeSeries.Hydromet.HydrometDailySeries("jck", "af", HydrometHost.PN); s.Read(DateTime.Now.AddDays(-365), DateTime.Now.Date); int sdi = db.AddSeries(s); Assert.AreEqual("acre-feet", s.Units); s = db.GetSeries(sdi); s.Read(DateTime.Now.AddDays(-365), DateTime.Now.Date); Assert.IsTrue(s.Count > 100, "count = " + s.Count); Assert.IsTrue(s.ConnectionString.Contains("jck")); }
public void HydrometAutoUpdate() { var t1 = new DateTime(1980, 10, 1); var t2 = new DateTime(1980, 10, 2); Series s1 = new Reclamation.TimeSeries.Hydromet.HydrometDailySeries("jck", "af"); s1.Read(t1, t2); int sdi1 = db.AddSeries(s1); Series s2 = new Reclamation.TimeSeries.Hydromet.HydrometDailySeries("pal", "af"); s2.Read(t1, t2); int sdi2 = db.AddSeries(s2); s1 = db.GetSeries(sdi1); s2 = db.GetSeries(sdi2); HydrometInfoUtility.AutoUpdate = true; t2 = t2.AddHours(24);// reservoir contents are stored at midnight Console.WriteLine(t2); s1.Read(t1, t2); s2.Read(t1, t2); s1.WriteToConsole(); Assert.AreEqual(515150.0, s1[0].Value); Assert.AreEqual(817782.0, s2[0].Value); Assert.AreEqual(3, s1.Count); Assert.AreEqual(3, s2.Count); SeriesList sl = new SeriesList(); sl.Add(s1); sl.Add(s2); SimpleMathSeries c1 = new SimpleMathSeries("", sl, new MathOperation[] { MathOperation.Add }); SimpleMathSeries c2 = new SimpleMathSeries("", sl, new MathOperation[] { MathOperation.Subtract }); int sdi3 = db.AddSeries(c1); int sdi4 = db.AddSeries(c2); Series s3 = db.GetSeries(sdi3); Series s4 = db.GetSeries(sdi4); s3.Read(t1, t2); s4.Read(t1, t2); Assert.AreEqual(515150.0 + 817782.0, s3[0].Value); Assert.AreEqual(515150.0 - 817782.0, s4[0].Value); }
/// <summary> /// Reads one year of Daily (Arcive) data /// used to support Hydromet FORTRAN calls to GETACFREC() /// </summary> public static void GetAcfRec(string cbtt, string pcode, string waterYear, double[,] values, int lagDays = 0) { YearRange rng = new YearRange(int.Parse(waterYear), 10); HydrometDailySeries s = new HydrometDailySeries(cbtt, pcode); s.Read(rng.DateTime1.AddDays(-lagDays), rng.DateTime2.AddDays(-lagDays)); for (int i = 0; i < s.Count; i++) { var pt = s[i]; pt.DateTime = pt.DateTime.AddDays(lagDays); int m = HydrometMonth[pt.DateTime.Month]; int d = pt.DateTime.Day; values[m, d] = s[i].Value; } }
///// <summary> ///// Saves Series data to Archives. This will overwrite existing data ///// uses: ///// Series.SiteName as cbtt ///// Series.Parameter as pcode ///// </summary> ///// <param name="list"></param> ///// <param name="?"></param> //public static void SaveToArchives(SeriesList list, string username, string password) //{ // string hydrometScript = WriteToArcImportFile(list); // string remoteFile = HydrometDataUtility.CreateRemoteFileName(username, HydrometDataBase.Archives); // if (LinuxUtility.IsLinux()) // { // // copy file to server using scp -- // } // else // { // var rval = HydrometEdits.RunArcImport(username, password, hydrometScript, remoteFile, true, false, false); // Logger.WriteLine(rval); // } //} /// <summary> /// .A ARKI1 20121104 M DH2400/QRDRG 0.435 /// .A LUCI1 20121026 M DH2400/QADRZ 0.802 /// </summary> /// <param name="controlFileName"></param> /// <param name="t1"></param> /// <param name="t2"></param> /// <returns></returns> public static string[] CreateSHEFA(string controlFileName, DateTime t1, DateTime t2) { var rval = new List <string>(); var tmp = Cache; CsvFile csv = new CsvFile(controlFileName, new string[] { "String", "String", "String", "String", "String", "Double" }); SetupCacheForShef(csv, t1, t2); foreach (DataRow row in csv.Rows) { // read hydromet var s = new HydrometDailySeries(row["cbtt"].ToString(), row["pcode"].ToString()); s.Read(t1, t2); s.RemoveMissing(); foreach (var pt in s) { if (pt.IsMissing) { continue; } double d = pt.Value * Convert.ToDouble(row["scale"]); string A = ".A " + row["shef_locid"].ToString() + " " + pt.DateTime.ToString("yyyyMMdd") + " " + row["time_zone"].ToString() + " DH2400/" + row["shef_tag"].ToString() + " " + d.ToString("F3"); rval.Add(A); } } Cache = tmp; return(rval.ToArray()); }
/// <summary> /// Calculates a multi year average for a Hydromet Series /// </summary> /// <param name="cbtt">Hydromet CBTT</param> /// <param name="pCode">Hydromet PCode</param> /// <returns></returns> public static Series GetMultiYearAverage(string cbtt, string pCode, HydrometHost svr, DateTime t1, DateTime t2) { // Define input and output series Series sOut = new Series(); var s = new HydrometDailySeries(cbtt, pCode, svr); s.Read(t1, t2); // Get daily average, shift to the output date range, and label var sTemp = Reclamation.TimeSeries.Math.MultiYearDailyAverage(s, 10); sOut = Reclamation.TimeSeries.Math.ShiftToYear(sTemp, 2000); sOut.Provider = "Series"; sOut.ScenarioName = ""; var yrs = (t2 - t1).Days / 365; sOut.Name = cbtt + "_" + pCode + "_" + t1.Year + "to" + t2.Year + "_" + yrs + "YearDailyAverage"; sOut.Appearance.LegendText = sOut.Name; return(sOut); }
public void HydrometDailyFactory() { Series s = new Reclamation.TimeSeries.Hydromet.HydrometDailySeries("jck", "af", HydrometHost.PN); s.Read(DateTime.Now.AddDays(-365), DateTime.Now.Date); int sdi = db.AddSeries(s); Assert.AreEqual("acre-feet", s.Units); s = db.GetSeries(sdi); s.Read(DateTime.Now.AddDays(-365),DateTime.Now.Date); Assert.IsTrue(s.Count> 100,"count = "+s.Count); Assert.IsTrue(s.ConnectionString.Contains("jck")); }
public void HydrometAutoUpdate() { var t1 = new DateTime(1980, 10, 1); var t2 = new DateTime(1980, 10, 2); Series s1 = new Reclamation.TimeSeries.Hydromet.HydrometDailySeries("jck", "af"); s1.Read(t1, t2); int sdi1 = db.AddSeries(s1); Series s2 = new Reclamation.TimeSeries.Hydromet.HydrometDailySeries("pal", "af"); s2.Read(t1, t2); int sdi2 = db.AddSeries(s2); s1 = db.GetSeries(sdi1); s2 = db.GetSeries(sdi2); HydrometInfoUtility.AutoUpdate = true; t2 = t2.AddHours(24);// reservoir contents are stored at midnight Console.WriteLine(t2); s1.Read(t1, t2); s2.Read(t1, t2); s1.WriteToConsole(); Assert.AreEqual(515150.0, s1[0].Value); Assert.AreEqual(817782.0, s2[0].Value); Assert.AreEqual(3, s1.Count); Assert.AreEqual(3, s2.Count); SeriesList sl = new SeriesList(); sl.Add(s1); sl.Add(s2); SimpleMathSeries c1 = new SimpleMathSeries("",sl,new MathOperation[]{ MathOperation.Add}); SimpleMathSeries c2 = new SimpleMathSeries("",sl, new MathOperation[] {MathOperation.Subtract}); int sdi3 = db.AddSeries(c1); int sdi4 = db.AddSeries(c2); Series s3 = db.GetSeries(sdi3); Series s4 = db.GetSeries(sdi4); s3.Read(t1, t2); s4.Read(t1, t2); Assert.AreEqual(515150.0 + 817782.0, s3[0].Value); Assert.AreEqual(515150.0 - 817782.0, s4[0].Value); }