Beispiel #1
0
        void BuildDataTable()
        {
            //build list of datetime for complete daterange of all configs

            _unifiedData = new DataTable();
            List <double>   HubHtValues   = new List <double>();
            List <double>   UpperHtValues = new List <double>();
            List <double>   LowerHtValues = new List <double>();
            List <double>   WDValues      = new List <double>();
            List <DateTime> DateValues    = new List <DateTime>();

            _startDate = _acvm.Configs.Select(c => c.DataSetStartDate).Min();
            _endDate   = _acvm.Configs.Select(c => c.DataSetEndDate).Max();

            for (int i = 0; i < _acvm.Configs.Count; i++)
            {
                DataTable Data = _acvm.Configs[i].DownloadedData[0];
                //build a list for upper,lower,and hub height ws
                int wdindex   = _acvm.Configs[i].ColumnCollection.WDComp(_startDate);
                int DateIndex = _acvm.Configs[i].ColumnCollection.DateIndex;


                foreach (DataRow dr in Data.Rows)
                {
                    int j = HubHeightRow[i].SelectedColumn.ColIndex;
                    {
                        if (!Convert.IsDBNull(dr[j]) & dr[j].ToString().Length > 0)
                        {
                            HubHtValues.Add(double.Parse(dr[j].ToString()));
                        }
                        else
                        {
                            HubHtValues.Add(-9999.99);
                        }
                    }

                    j = DateIndex;
                    {
                        if (!Convert.IsDBNull(dr[j]) & dr[j].ToString().Length > 0)
                        {
                            DateValues.Add(DateTime.Parse(dr[j].ToString()));
                        }
                    }
                    j = wdindex;
                    {
                        if (!Convert.IsDBNull(dr[j]) & dr[j].ToString().Length > 0)
                        {
                            WDValues.Add(double.Parse(dr[j].ToString()));
                        }
                        else
                        {
                            WDValues.Add(-9999.99);
                        }
                    }

                    j = UpperHeightRow[i].SelectedColumn.ColIndex;
                    {
                        if (!Convert.IsDBNull(dr[j]) & dr[j].ToString().Length > 0)
                        {
                            UpperHtValues.Add(double.Parse(dr[j].ToString()));
                        }
                        else
                        {
                            UpperHtValues.Add(-9999.99);
                        }
                    }
                    j = LowerHeightRow[i].SelectedColumn.ColIndex;
                    {
                        if (!Convert.IsDBNull(dr[j]) & dr[j].ToString().Length > 0)
                        {
                            LowerHtValues.Add(double.Parse(dr[j].ToString()));
                        }
                        else
                        {
                            LowerHtValues.Add(-9999.99);
                        }
                    }
                }
            }    //end for i

            Utils.AddColtoDataTable <DateTime>("DateTime", DateValues, _unifiedData);
            Utils.AddColtoDataTable <double>(HubHeight.ToString() + "m", HubHtValues, _unifiedData);
            Utils.AddColtoDataTable <double>(UpperHeight.ToString() + "m", UpperHtValues, _unifiedData);
            Utils.AddColtoDataTable <double>(LowerHeight.ToString() + "m", LowerHtValues, _unifiedData);
            Utils.AddColtoDataTable <double>("WD", WDValues, _unifiedData);


            DateTimeSequence sequence = new DateTimeSequence(_unifiedData, 0);
            DataPrep         prep     = new DataPrep(_unifiedData, 0);

            try
            {
                prep.FillMissingdates(sequence.GetMissingTimeStamps());
            }
            catch (OutOfMemoryException)
            {
                MessageBox.Show("The file is too big. Volatile memory has been exceeded while filling missing dates.");
            }
        }
Beispiel #2
0
        void OutPutSummary()
        {
            BackgroundWorker worker   = new BackgroundWorker();
            string           filename = string.Empty;
            SaveFileDialog   sf       = new SaveFileDialog();

            sf.Title      = "save data";
            sf.Filter     = "Excel|*.xlsx";
            sf.DefaultExt = ".xlsx";
            sf.FileName   = "Unified" + "_StnSummary_" + DateTime.Now.ToShortDateString().Replace(@"/", "");
            DialogResult result = sf.ShowDialog();

            if (result == DialogResult.Cancel)
            {
                return;
            }

            if (sf.FileName != "")
            {
                filename = sf.FileName;
            }
            else
            {
                return;
            }



            worker.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs e)
            {
                SummaryIsProcessing = false;
            };
            worker.DoWork += delegate(object s, DoWorkEventArgs args)
            {
                XbyYShearStationSummary summary = null;

                try
                {
                    SummaryIsProcessing = true;

                    //create the DataTable
                    if (_unifiedData != null)
                    {
                        _unifiedData.Clear();
                    }
                    BuildDataTable();
                    //create column collection
                    ColumnCollection = new SessionColumnCollection(_unifiedData);


                    //add column def and add configs

                    ISessionColumn hubws = ColumnCollection[HubHeight.ToString() + "m"];
                    hubws.ColumnType   = SessionColumnType.WSAvgShear;
                    hubws.IsCalculated = true;
                    hubws.IsComposite  = true;
                    SensorConfig config = new SensorConfig()
                    {
                        StartDate = _startDate, EndDate = _endDate, Height = HubHeight
                    };
                    hubws.Configs.Add(config);

                    ISessionColumn upperws = ColumnCollection[UpperHeight.ToString().Replace(".", "_") + "m"];
                    upperws.ColumnType  = SessionColumnType.WSAvg;
                    upperws.IsComposite = true;
                    config = new SensorConfig()
                    {
                        StartDate = _startDate, EndDate = _endDate, Height = UpperHeight
                    };
                    upperws.Configs.Add(config);

                    ISessionColumn lowerws = ColumnCollection[LowerHeight.ToString().Replace(".", "_") + "m"];
                    lowerws.ColumnType  = SessionColumnType.WSAvg;
                    lowerws.IsComposite = true;
                    config = new SensorConfig()
                    {
                        StartDate = _startDate, EndDate = _endDate, Height = LowerHeight
                    };
                    lowerws.Configs.Add(config);

                    ISessionColumn wd = ColumnCollection["WD"];
                    wd.ColumnType  = SessionColumnType.WDAvg;
                    wd.IsComposite = true;
                    config         = new SensorConfig()
                    {
                        StartDate = _startDate, EndDate = _endDate
                    };
                    wd.Configs.Add(config);


                    //get axis selections from UI
                    IAxis Xaxis = GetAxis(_xShearAxis, _xBinWidth);
                    IAxis Yaxis = GetAxis(_yShearAxis, _yBinWidth);

                    //calculate alpha
                    AlphaFactory afactory = new AlphaFactory();
                    Alpha        alpha    = (Alpha)afactory.CreateAlpha(_unifiedData, AlphaFilterMethod.Coincident, upperws, lowerws, Xaxis, Yaxis);
                    alpha.SourceDataSet = this.DisplayName;
                    alpha.CalculateAlpha();

                    string xBin = string.Empty;
                    string yBin = string.Empty;

                    if (Xaxis.AxisType == AxisType.WD)
                    {
                        var wdaxis = (WindDirectionAxis)Xaxis;
                        xBin = " " + wdaxis.BinWidth.ToString() + " deg";
                    }
                    if (Xaxis.AxisType == AxisType.WS)
                    {
                        var wsaxis = (WindSpeedAxis)Xaxis;
                        xBin = " " + wsaxis.BinWidth.ToString() + " m/s";
                    }
                    if (Yaxis.AxisType == AxisType.WD)
                    {
                        var wdaxis = (WindDirectionAxis)Yaxis;
                        yBin = " " + wdaxis.BinWidth.ToString() + " deg";
                    }
                    if (Yaxis.AxisType == AxisType.WS)
                    {
                        var wsaxis = (WindSpeedAxis)Yaxis;
                        yBin = " " + wsaxis.BinWidth.ToString() + " m/s";
                    }

                    //Set up column metadata for the summary run
                    summary = new XbyYShearStationSummary(ColumnCollection, _unifiedData.AsDataView(), 30, 10, 2, alpha);

                    summary.CreateReport(filename);
                    SummaryIsProcessing = false;
                }
                catch (ApplicationException e)
                {
                    MessageBox.Show("Error calculating station summary: " + e.Message + " " + e.Source);
                    StreamWriter fs = new StreamWriter(Path.GetDirectoryName(filename) + @"\LOG_" + Path.GetFileNameWithoutExtension(filename) + ".txt", false);
                    summary.log.ForEach(c => fs.WriteLine(c));
                    fs.Close();
                }
                finally
                {
                    SummaryIsProcessing = false;
                }
            };
            worker.RunWorkerAsync();
        }