示例#1
0
        /// <summary>
        /// Draws the graphs and saves them to local files
        /// </summary>
        public void DrawGraphs()
        {
            StringBuilder log = new StringBuilder();
            log.AppendLine("starting DrawGraphs..");

            try
            {
                List<Station> stations = Station.ReadListOfStations(StationXmlFile);
                List<Channel> channels = Channel.ReadFromXml(StationXmlFile);

                DataManager m = DataManager.CreateDefault();
                DateTime end = DateTime.Now.Date.AddHours(DateTime.Now.Hour);
                int interval = ReadIntervalFromConfig();
                DateTime start = end.AddDays(interval * (-1));
                TimeSeries ts = new TimeSeries(start, end);
                TimeSeries curTs;
                List<TimeSeries> tslist = new List<TimeSeries>(4);
                ChartEngine eng = ChartEngine.FromConfigFile(StationXmlFile, GraphDir);
                ChartLabelInfo chi = new ChartLabelInfo();
                Channel curCh;
                chi.UnitsName = "mm";
                chi.Copyright = "Data: KFGG PřF UK Praha";
                chi.ChannelName = "hladina";
                string fileName;

                List<Channel> stch;
                List<Channel> chTypeList;
                List<string> labelList = new List<string>();
                Hashtable stHash = new Hashtable();

                foreach (Station st in stations)
                {
                    stch = Channel.FindByStation(channels, st.Id);
                    chi.StationName = st.Label;

                    //add channels to hashtable
                    //the hashtable now contains lists of multiple channels
                    stHash.Clear();
                    foreach (Channel ch in stch)
                    {
                        if (stHash.ContainsKey(ch.ChType))
                        {
                            ((List<Channel>)stHash[ch.ChType]).Add(ch);
                        }
                        else
                        {
                            stHash.Add(ch.ChType, new List<Channel>(4));
                            ((List<Channel>)stHash[ch.ChType]).Add(ch);
                        }
                    }

                    m.LocalDataDir = LocalDataDir;
                    foreach (DictionaryEntry de in stHash)
                    {
                        chTypeList = (List<Channel>)de.Value; //list of channels of same type
                        if (chTypeList.Count == 1)
                        {
                            curCh = chTypeList[0];
                            fileName = curCh.ChType + "-" + st.Name;
                            chi.ChannelName = curCh.ChLabel;
                            chi.UnitsName = curCh.Unit;

                            m.LoadObservationsFromFile(curCh.StId, curCh, start, end, ts);

                            //m.LoadObservations(curCh.StId, curCh, start, end, ts);
                            eng.CreateChart(ts, chi, curCh.ChType, fileName);
                        }
                        else if (chTypeList.Count > 1)
                        {
                            tslist.Clear();
                            labelList.Clear();
                            foreach (Channel ch in chTypeList)
                            {
                                curTs = new TimeSeries(start, end);
                                m.LoadObservationsFromFile(ch.StId, ch, start, end, curTs);
                                tslist.Add(curTs);
                                labelList.Add(ch.ChLabel);
                            }
                            chi.ChannelName = chTypeList[0].ChLabel;
                            if (chi.ChannelName.IndexOf(" ") >= 0)
                            {
                                chi.ChannelName = chi.ChannelName.Remove(chi.ChannelName.LastIndexOf(" "));
                            }
                            chi.UnitsName = chTypeList[0].Unit;

                            fileName = chTypeList[0].ChType + "-" + st.Name;
                            eng.CreateChart(tslist, chi, chTypeList[0].ChType, labelList, fileName);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                log.AppendLine("DrawGraphs ERROR - " + ex.Source + " " + ex.Message);
            }
            finally
            {
                log.AppendLine("finished DrawGraphs..");
                Logger logger = new Logger(logFile);
                logger.WriteMessage(log.ToString());
            }
        }
示例#2
0
 public object Clone()
 {
     TimeSeries ts2 = new TimeSeries();
     ts2._list = this._list.Clone();
     ts2._maxTime = this.MaxTime;
     ts2._maxVal = this.MaxValue;
     ts2._minTime = this.MinTime;
     ts2._minVal = this.MinValue;
     ts2._numValid = this.NumValid;
     return ts2;
 }