static PointPairList getData(string site_code, string var_code, DateTime dStart, DateTime dEnd, dbConnection dataObject, double lBnd, double upBnd) { PointPairList graphPoints = new PointPairList(); DataTable values1yr = dataObject.getDVCstm(site_code, var_code, dStart, dEnd, lBnd, upBnd); Double NoDV = dataObject.getNoDV(var_code); double testBnds; foreach (DataRow row in values1yr.Rows) { testBnds = Convert.ToDouble(row["DataValue1"]); DateTime dateShowing = convDate(row["LocalDateTime"].ToString()); try { if (!(Convert.ToDouble(row["DataValue1"]) == NoDV || Convert.ToDouble(row["DataValue1"]) < lBnd || Convert.ToDouble(row["DataValue1"]) > upBnd)) { graphPoints.Add((double)new XDate(dateShowing.Year, dateShowing.Month, dateShowing.Day, dateShowing.Hour, dateShowing.Minute, dateShowing.Second), Convert.ToDouble(row["DataValue1"])); } else { graphPoints.Add((double)new XDate(dateShowing.Year, dateShowing.Month, dateShowing.Day, dateShowing.Hour, dateShowing.Minute, dateShowing.Second), double.NaN); } } catch (Exception ex) { System.Console.WriteLine("found error " +ex.Message); } } graphPoints = cleanValues(graphPoints, values1yr); return graphPoints; }
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new plotGen()); //Data to fetch... parameters. string SITE_CODE = "LR_WaterLab_AA"; string SEC_SITE = "LR_Mendon_AA"; string VAR_CODE = "TurbMed"; string VAR_NAME = "Median Turbidity"; string VAR_UNIT = "NTU"; DateTime dEnd = convDate(DateTime.Now.ToString("M/d/yyyy")); DateTime dStart = new DateTime(dEnd.Year, 1, 1); dbConnection dataObject = new dbConnection(); dbConnection dataObject2 = new dbConnection(); //dbConnection dataObject2 = //TurbMed string[] meta = { "Graph", "Date", VAR_NAME+", "+VAR_UNIT, "-5", "1650"}; plotMeasrdAndTyp(SITE_CODE, SEC_SITE, VAR_CODE, VAR_NAME, dStart, dEnd, dataObject, meta); //WaterTemp_EXO VAR_CODE = "WaterTemp_EXO"; VAR_NAME = "Water Temperature"; VAR_UNIT = "Deg. C"; meta[2] = VAR_NAME + ", " + VAR_UNIT; meta[3] = "-5"; meta[4] = "40"; plotMeasrdAndTyp(SITE_CODE, SEC_SITE, VAR_CODE, VAR_NAME, dStart, dEnd, dataObject, meta); //ODO VAR_CODE = "ODO"; VAR_NAME = "Dissolved Oxygen"; VAR_UNIT = "mg/L"; meta[2] = VAR_NAME + ", " + VAR_UNIT; meta[3] = "2"; meta[4] = "20"; plotMeasrdAndTyp(SITE_CODE, SEC_SITE, VAR_CODE, VAR_NAME, dStart, dEnd, dataObject, meta); //Changing Connection String to the Little Bear Database ODM. dataObject2.Connection.ConnectionString = "name=LittleBearODMEntities"; SITE_CODE = "USU-LBR-Paradise"; SEC_SITE = "USU-LBR-Mendon"; VAR_CODE = "USU6"; VAR_NAME = "Median Turbidity"; VAR_UNIT = "NTU"; //TurbMed meta[2] = VAR_NAME + ", " + VAR_UNIT; meta[3] = "-5"; meta[4] = "1650"; plotMeasrdAndTyp(SITE_CODE, SEC_SITE, VAR_CODE, VAR_NAME, dStart, dEnd, dataObject2, meta); VAR_CODE = "USU36"; VAR_NAME = "Water Temperature"; VAR_UNIT = "Deg. C"; //TurbMed meta[2] = VAR_NAME + ", " + VAR_UNIT ; meta[3] = "-5"; meta[4] = "40"; plotMeasrdAndTyp(SITE_CODE, SEC_SITE, VAR_CODE, VAR_NAME, dStart, dEnd, dataObject2, meta); VAR_CODE = "USU32"; VAR_NAME = "Dissolved Oxygen"; VAR_UNIT = "mg/L"; //TurbMed meta[2] = VAR_NAME + ", " + VAR_UNIT; meta[3]= "2"; meta[4] = "20"; plotMeasrdAndTyp(SITE_CODE, SEC_SITE, VAR_CODE, VAR_NAME, dStart, dEnd, dataObject2, meta); System.Console.WriteLine("Done producing the graphs!"); }
//meta: 0.Graph Name, 1.Labelfor X, 2.Label for Y static void plotMeasrdAndTyp(string site_code, string second_site, string var_code, string var_name, DateTime dStart, DateTime dEnd, dbConnection dataObject, string[] meta) { /* * clsRemoveDataGaps.missingValues(ref ptList); */ double lBnd = Convert.ToDouble( meta[3]); double upBnd = Convert.ToDouble(meta[4]); float graphWidth = 4.0f; PointPairList MeasUpper = getData(site_code, var_code, dStart, dEnd, dataObject, lBnd, upBnd); //MeasUpper = cleanValues(MeasUpper, dataObject.getDVCstm(site_code, var_code, dStart, dEnd)); PointPairList TypAvgUpper = getDataTyp(site_code, var_code, dataObject, lBnd, upBnd ); //getDailyAvg(MeasUpper); PointPairList MeasLower = getData(second_site, var_code, dStart, dEnd, dataObject, lBnd, upBnd); //MeasLower = cleanValues(MeasLower, dataObject.getDVCstm(site_code, var_code, dStart, dEnd)); PointPairList TypAvgLower = getDataTyp(second_site, var_code, dataObject, lBnd, upBnd); //getDailyAvg(MeasLower); //Measured Graph. -- Display all data. From January 1st. -- GraphPane graphPaneMeas = new GraphPane(new Rectangle(0, 0, 1680, 1050), "Measured Values", meta[1], meta[2]); graphPaneMeas.XAxis.Title.Text = "Date"; graphPaneMeas.XAxis.Type = AxisType.Date; formatXaxis(ref graphPaneMeas); LineItem upperSite_M = new LineItem(site_code == "LR_WaterLab_AA" ? "Logan River Upper Site" : "Little Bear River Upper Site", MeasUpper, Color.Black, SymbolType.None, graphWidth); LineItem lowerSite_M = new LineItem(site_code == "LR_WaterLab_AA" ? "Logan River Lower Site" : "Little Bear River Lower Site", MeasLower, Color.Blue, SymbolType.None, graphWidth); graphPaneMeas.CurveList.Add(upperSite_M); graphPaneMeas.CurveList.Add(lowerSite_M); double miny = 99999; double maxy = -99999; foreach (CurveItem c in graphPaneMeas.CurveList) { for (int i = 0; i < c.Points.Count; i += 1) { if (c.Points[i].Y < miny) miny = c.Points[i].Y; if (c.Points[i].Y > maxy) maxy = c.Points[i].Y; } } formatYaxis(ref graphPaneMeas, maxy, miny); //Typical Graph. -- Daily averaged. Full Year Plotting. -- GraphPane graphPaneTyp = new GraphPane(new Rectangle(0, 0, 1680, 1050), "Typical Values", meta[1], meta[2]); graphPaneTyp.XAxis.Title.Text = "Date"; graphPaneTyp.XAxis.Type = AxisType.Date; formatXaxis(ref graphPaneTyp); LineItem upperSite_T = new LineItem(site_code == "LR_WaterLab_AA" ? "Logan River Upper Site" : "Little Bear River Upper Site", TypAvgUpper, Color.Black, SymbolType.None, graphWidth); graphPaneTyp.CurveList.Add(upperSite_T); LineItem lowerSite_T = new LineItem(site_code == "LR_WaterLab_AA" ? "Logan River Lower Site" : "Little Bear River Lower Site", TypAvgLower, Color.Blue, SymbolType.None, graphWidth); graphPaneTyp.CurveList.Add(lowerSite_T); miny = 99999; maxy = -99999; //find the max and min values of the two series foreach(CurveItem c in graphPaneTyp.CurveList){ for ( int i =0; i < c.Points.Count; i +=1){//Point p in c.Points){ if (c.Points[i].Y < miny) miny = c.Points[i].Y; if (c.Points[i].Y > maxy) maxy = c.Points[i].Y; } } formatYaxis(ref graphPaneTyp, maxy, miny); Bitmap bm = new Bitmap(1, 1); using (Graphics g = Graphics.FromImage(bm)) graphPaneMeas.AxisChange(g); graphPaneMeas.GetImage().Save(Properties.Settings.Default.imagePath + "\\" + @"measured_" + site_code + "_" + second_site + "_" + var_code + ".png", ImageFormat.Png); Bitmap bm2 = new Bitmap(1, 1); using (Graphics g2 = Graphics.FromImage(bm2)) graphPaneTyp.AxisChange(g2); graphPaneTyp.GetImage().Save(Properties.Settings.Default.imagePath + "\\"+ @"typical_" + site_code + "_" + second_site + "_" + var_code + ".png", ImageFormat.Png); }
static PointPairList getDataTyp(string site_code, string var_code, dbConnection dataObject, double lBnd, double upBnd) { PointPairList graphPoints = new PointPairList(); DataTable values1yr = dataObject.getDVCstmAvg(site_code, var_code, lBnd, upBnd); Double NoDV = dataObject.getNoDV(var_code); foreach (DataRow row in values1yr.Rows) { DateTime dateShowing; try { dateShowing = new DateTime(DateTime.Now.Year, (int)row["Month"], (int)row["Day"]); } catch (Exception ex) { System.Console.WriteLine("Leap Year"); dateShowing = new DateTime(DateTime.Now.Year, (int)row["Month"], ((int)row["Day"]) - 1, 23, 59, 59); } try { double? curValue = (double)row["DataValue1"]; double curDate = (double)new XDate(dateShowing.Year, dateShowing.Month, dateShowing.Day, dateShowing.Hour, dateShowing.Minute, dateShowing.Second); graphPoints.Add(curDate, curValue.Value); } catch(Exception ex ) { } } graphPoints = cleanValues(graphPoints, values1yr); return graphPoints; }