Exemplo n.º 1
0
        private static Channel DataRowToChannel(DataRow r)
        {
            int id = 0;
            if (!(r.IsNull("ch_id")))
            {
                id = Convert.ToInt32(r["ch_id"]);
            }
            int stationId = Convert.ToInt32(r["st_id"]);
            int variableId = Convert.ToInt32(r["var_id"]);
            string stName = Convert.ToString(r["st_name"]);
            string stUrl = Convert.ToString(r["st_uri"]);
            long riverId = 0;
            if (!(r.IsNull("riv_id")))
            {
                riverId = Convert.ToInt64(r["riv_id"]);
            }
            string op = Convert.ToString(r["operator_name"]);

            Channel ch = new Channel(id, stationId, variableId, TimeInterval.Missing);
            Station st = new Station(stationId, stName, stUrl, riverId, op);
            Variable v = VariableManager.GetItemById(variableId);

            ch.Station = st;
            ch.Variable = v;

            //also load river for hydrologic stations
            if (riverId > 0)
            {
                st.River = RiverManager.GetItemByStation(st.Id, true);
            }

            return ch;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Returns a time series corresponding to the specific channel and interval
        /// the 'missing data' (periodList) is also internally loaded for all variables
        /// except stage and discharge.
        /// </summary>
        /// <param name="channel"></param>
        /// <param name="interval"></param>
        /// <returns></returns>
        public static ITimeSeries GetTimeSeries(Channel ch, TimeInterval interval)
        {
            VariableEnum v = ch.Variable.VarEnum;
            TimeStep step = GetDefaultTimeStep(v, interval);
            ITimeSeries ts;

            if (v == VariableEnum.Stage)
            {
                ts = new HydroTimeSeries(interval.Start, interval.End);
                TimeSeriesDS.LoadObservationsStage2(ch.StationId, interval.Start,
                    interval.End, step, (IObservationList)ts);
            }
            else if (v == VariableEnum.Discharge)
            {
                ts = new HydroTimeSeries(interval.Start, interval.End);
                TimeSeriesDS.LoadObservationsDischarge2(ch.StationId, interval.Start,
                    interval.End, step, (IObservationList)ts);
            }
            else if (v == VariableEnum.Temperature)
            {
                ts = new HydroTimeSeries(interval.Start, interval.End);
                //step = TimeStep.Hour;
                TimeSeriesDS.LoadObservationsTemperature2(ch.StationId, interval.Start, interval.End, step, (IObservationList)ts);
            }
            else if (v == VariableEnum.Snow)
            {
                ts = new HydroTimeSeries(interval.Start, interval.End);
                TimeSeriesDS.LoadObservationsSnow2(ch.StationId, interval.Start, interval.End, (IObservationList)ts);
            }
            else if (v == VariableEnum.PrecipHour || v == VariableEnum.Precip || v == VariableEnum.PrecipSum)
            {
                ts = new MyTimeSeries(interval.Start, interval.End, step);
                TimeSeriesDS.LoadObservationsPrecip2(ch.StationId, interval.Start,
                    interval.End, step, (IObservationList)ts);
            }
            else
            {
                //snow
                ts = new HydroTimeSeries(interval.Start, interval.End);
                TimeSeriesDS.LoadObservationsSnow2(ch.StationId, interval.Start, interval.End, (IObservationList)ts);
            }
            return ts;
        }
Exemplo n.º 3
0
 private void SetupChart(ITimeSeries ts, Channel ch, GraphPane pane)
 {
     Station st = ch.Station;
     Variable var = ch.Variable;
     DateTime start = ts.Start;
     DateTime end = ts.End;
     DrawTitle(pane, var, st, start, end);
     SetupAxis(pane, var, start, end);
     SetupGrid(pane, var.VarEnum);
     SetupLegend(pane);
 }
Exemplo n.º 4
0
 /// <summary>
 /// Creates a chart - plots are made for all sensors in the time series
 /// </summary>
 /// <param name="ts">The time series of data to be ploted</param>
 /// <param name="ch">The channel (contains station, variable and copyright description)
 /// </param>
 /// <returns>The chart png image</returns>
 public Bitmap CreateChart(Channel ch, ITimeSeries ts)
 {
     GraphPane pane = SetupGraphPane();
     SetupChart(ts, ch, pane);
     PlotChartForChannel(ts, ch, pane);
     return ExportGraph(pane);
 }
Exemplo n.º 5
0
        private void PlotChartForChannel(ITimeSeries ts, Channel ch, GraphPane pane)
        {
            VariableEnum varEnum = ch.Variable.VarEnum;

            if (ts.End < Convert.ToDateTime("2013-01-01") && ts.PercentAvailableData < 1.0) //no data..
            {
                ShowNoDataTextBox(Resources.no_data, pane);
                ShowErrorTextBox(Resources.no_data_message, pane);
            }
            else
            {
                switch (varEnum)
                {
                    case VariableEnum.Stage:
                        PlotStageDischarge(ts, pane);
                        break;
                    case VariableEnum.Discharge:
                        PlotStageDischarge(ts, pane);
                        break;
                    case VariableEnum.Snow:
                        PlotSnow(ts, pane);
                        break;
                    case VariableEnum.SoilWater10:
                    case VariableEnum.SoilWater50:
                        PlotSoilWater(ts, pane);
                        break;
                    case VariableEnum.Precip:
                        PlotPrecip(ts, pane);
                        break;
                    case VariableEnum.PrecipHour:
                        PlotPrecipHour(ts, pane);
                        break;
                    case VariableEnum.Temperature:
                        PlotTemperature(ts, pane);
                        break;
                    default:
                        break;
                }

                //also plot 'no data' if necessary
                if (ch.Variable.VarEnum != VariableEnum.Stage &&
                    ch.Variable.VarEnum != VariableEnum.Discharge &&
                    ts.PercentAvailableData > 0.01)
                {
                    //PlotMissingData(ts, pane);
                }

                //add 'copyright' notice
                ShowCopyrightTextBox("data: " + ch.Station.Operator, pane);
            }
        }