コード例 #1
0
        /// <summary>
        /// получить статистический ряд по заданным значениям и заданным градациям
        /// </summary>
        /// <param name="tempr"></param>
        /// <param name="rhumb8Gradations"></param>
        /// <returns></returns>
        public static StatisticalRange <WindDirections8> GetDirectionExpectancy(RawRange tempr, GradationInfo <WindDirections8> rhumb8Gradations)
        {
            List <double> spds = new List <double>(from t in tempr select t.Direction);
            StatisticalRange <WindDirections8> r = new StatisticalRange <WindDirections8>(spds, rhumb8Gradations);

            return(reorganizeCalm(r));
        }
コード例 #2
0
        /// <summary>
        /// обработать ряд и получить характеристики по всему ряду
        /// </summary>
        /// <param name="range"></param>
        /// <param name="totalRange"></param>
        /// <returns></returns>
        public static EnergyInfo ProcessRange(RawRange range, RawRange totalRange = null)
        {
            double density = range.AirDensity;

            totalRange = totalRange ?? range;

            if (range.Count == 0)
            {
                return(null);
            }
            EnergyInfo res = new EnergyInfo();

            res.FromDate               = range[0].Date;
            res.ToDate                 = range.Last().Date;
            res.PowerDensity           = getAveragePower(range, density);
            res.V0                     = getAverageSpeed(range);
            res.StandardDeviationSpeed = getSigmV(res.V0, range);
            res.Vmax                   = getMaxSpeed(range);
            res.Vmin                   = getMinSpeed(range);
            res.EnergyDensity          = res.PowerDensity * 8760d;
            res.Cv                     = res.StandardDeviationSpeed / res.V0;
            res.VeybullGamma           = getVeybullGamma(res.Cv);
            res.VeybullBeta            = getVeybullBeta(res.V0, res.VeybullGamma);
            res.ExtremalSpeed          = getExtremalSpeed(res.V0, res.VeybullGamma);
            res.ExpectancyDeviation    = getExpectancyDeviation(range, totalRange);

            return(res);
        }
コード例 #3
0
ファイル: FormMain.cs プロジェクト: vasichmen/WindEnergy
        /// <summary>
        /// выбор расчетного года
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripMenuItemCalcYear_Click(object sender, EventArgs e)
        {
            RawRange     rang = (mainTabControl.SelectedTab as TabPageExt).Range;
            FormCalcYear fei  = new FormCalcYear(rang);

            fei.Show(this);
        }
コード例 #4
0
ファイル: MainHelper.cs プロジェクト: vasichmen/WindEnergy
 /// <summary>
 /// обновление информации в статусной строке в соответствии с выбранной вкладкой
 /// </summary>
 internal void RefreshStatusBar()
 {
     if (f.mainTabControl.SelectedTab != null)
     {
         RawRange rang = (f.mainTabControl.SelectedTab as TabPageExt).Range;
         if (rang.Quality != null)
         {
             f.toolStripStatusLabelRangeCount.Text  = "Количество измерений: " + rang.Count;
             f.toolStripStatusLabelCompletness.Text = "Полнота ряда: " + (rang.Quality.Completeness * 100).ToString("0.00") + "%";
             f.toolStripStatusLabelInterval.Text    = "Интервал: " + (rang.Quality.Intervals.Count == 1 ? rang.Quality.Intervals[0].Interval.Description() : "Неоднородный ряд");
         }
         else
         {
             f.toolStripStatusLabelRangeCount.Text  = "";
             f.toolStripStatusLabelCompletness.Text = "";
             f.toolStripStatusLabelInterval.Text    = "";
         }
     }
     else
     {
         f.toolStripStatusLabelRangeCount.Text  = "";
         f.toolStripStatusLabelCompletness.Text = "";
         f.toolStripStatusLabelInterval.Text    = "";
     }
 }
コード例 #5
0
        private void gmapControlMap_OnMarkerClick(GMapMarker item, MouseEventArgs e)
        {
            item = item ?? throw new ArgumentNullException(nameof(item));
            if (item.Tag.GetType() != typeof(RP5MeteostationInfo))
            {
                return;
            }
            RP5MeteostationInfo mi = (RP5MeteostationInfo)item.Tag;

            if (IsDialog)
            {
                Result       = mi;
                DialogResult = DialogResult.OK;
                Close();
            }
            else
            {
                FormLoadFromRP5 frm = new FormLoadFromRP5(mi);
                if (frm.ShowDialog(this) == DialogResult.OK)
                {
                    RawRange res = frm.Result;
                    WindEnergy.UI.Ext.TabPageExt tab = Program.winMain.mainTabControl.OpenNewTab(res, res.Name);
                    tab.HasNotSavedChanges = true;
                    _ = Program.winMain.Focus();
                }
            }
        }
コード例 #6
0
        public FormLoadFromNASA(PointLatLng selectedPoint)
        {
            InitializeComponent();
            Result       = null;
            DialogResult = DialogResult.None;
            geocoder     = new Arcgis(Vars.Options.CacheFolder + "\\arcgis");
            comboBoxSpeedHeight.Items.AddRange(NasaWindSpeedHeight.WS10M.GetItems().ToArray());
            comboBoxSpeedHeight.SelectedItem = NasaWindSpeedHeight.WS10M.Description();

            point = selectedPoint;
            if (point.IsEmpty) //если точка пустая, то надо попробовать взять из последних
            {
                point = Vars.Options.LoadNasaLastPoint;
            }
            if (!point.IsEmpty)
            {
                spoint                     = new RP5MeteostationInfo();
                spoint.Position            = point;
                labelPointCoordinates.Text = $"Широта: {point.Lat:0.000} Долгота: {point.Lng:0.000}";

                loadAddressAsync(point);

                buttonDownload.Enabled         = true;
                dateTimePickerFromDate.Enabled = true;
                dateTimePickerToDate.Enabled   = true;
            }
        }
コード例 #7
0
        /// <summary>
        /// возвращает относительные среднемесячные скорости по месяцам для многолетнего ряда
        /// </summary>
        /// <param name="range"></param>
        /// <param name="allMonth">истина, если в ряде представлены не все месяцы года</param>
        /// <returns></returns>
        private static Dictionary <Months, double> getRelativeAverageMonthSpeeds(RawRange range, out bool allMonth)
        {
            double rAverage = range.Average((item) => { return(item.Speed); });          //средняя скорость во всем ряде на МС
            Dictionary <Months, double> msRelatives = new Dictionary <Months, double>(); //относительные скорости по месяцам на МС

            allMonth = true;
            for (int m = 1; m <= 12; m++)
            {
                Months month    = (Months)m;
                double mAverage = double.NaN;
                var    r        = from t in range
                                  where t.Date.Month == m
                                  select t.Speed;
                if (r.Count() == 0)
                {
                    allMonth = false;
                    mAverage = 0;
                }
                else
                {
                    mAverage = r.Average();
                }
                msRelatives.Add(month, mAverage / rAverage);//относительная скорость = среднемесячная скорость / средняя скорость ряда
            }
            return(msRelatives);
        }
コード例 #8
0
ファイル: FormMain.cs プロジェクト: vasichmen/WindEnergy
        /// <summary>
        /// расчитать основные энергетические характеристики
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void calculateEnergyInfoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            RawRange       rang = (mainTabControl.SelectedTab as TabPageExt).Range;
            FormEnergyInfo fei  = new FormEnergyInfo(rang);

            fei.Show(this);
        }
コード例 #9
0
ファイル: RangeTerrain.cs プロジェクト: vasichmen/WindEnergy
        /// <summary>
        /// приведение ряда к условиям плоской местности
        /// </summary>
        /// <param name="ms_range">ряд</param>
        /// <param name="expectancy">повторяемости направлений ветра</param>
        /// <param name="ms_classes">классы открытости МС</param>
        /// <param name="water_type">расстояние до водной поверхности</param>
        /// <returns></returns>
        public static RawRange ToFlatTerrain(RawRange ms_range, StatisticalRange <WindDirections8> expectancy, Dictionary <WindDirections8, double> ms_classes, WaterDistanceType water_type)
        {
            //1. найти Кмс
            //2. пересчитать ряд

            RawRange result = new RawRange();
            double   K0     = (int)water_type;

            //средневзвешенный коэффициент открытости метеостанции
            double Kms = 0;

            foreach (WindDirections8 dir in WindDirections8.N.GetEnumItems())
            {
                if (dir != WindDirections8.Calm && dir != WindDirections8.Undefined && dir != WindDirections8.Variable)
                {
                    Kms += expectancy[dir] * ms_classes[dir];
                }
            }

            double k0 = K0 / Kms;

            result.BeginChange();
            foreach (RawItem item in ms_range)
            {
                RawItem ni = item.Clone();
                ni.Speed = item.Speed * k0;
                result.Add(ni);
            }
            result.EndChange();
            return(result);
        }
コード例 #10
0
        /// <summary>
        /// сохранение файла в формате CSV
        /// </summary>
        /// <param name="rang"></param>
        /// <param name="filename"></param>
        internal override void SaveRange(RawRange rang, string filename)
        {
            StreamWriter sw          = new StreamWriter(filename, false, Encoding.UTF8);
            string       coordinates = rang.Position.Lat.ToString("0.000000") + " " + rang.Position.Lng.ToString("0.000000");
            string       caption     = "Местное время;T;U;DD;ff;P0";
            string       title;

            if (rang.Meteostation == null)
            {
                title = "ID=undefined";
            }
            else
            {
                title = $"ID={rang.Meteostation.ID}";
            }
            sw.WriteLine(title);
            sw.WriteLine(coordinates);
            sw.WriteLine(rang.Name);
            sw.WriteLine(caption);
            foreach (RawItem item in rang)
            {
                if (double.IsNaN(item.Speed))
                {
                    continue;
                }
                sw.WriteLine($"{item.Date:dd.MM.yyyy HH:mm};{item.Temperature};{item.Wetness};{item.Direction};{item.Speed};{item.Pressure}");
            }

            sw.Close();
        }
コード例 #11
0
        public FormRepairRange(RawRange range, List <InterpolateMethods> methods, string caption, string buttonText)
        {
            methods = methods ?? throw new ArgumentNullException(nameof(methods));
            InitializeComponent();
            this.range                  = range;
            this.availableMethods       = methods;
            this.Text                   = caption;
            this.groupBoxMain.Text      = caption;
            this.buttonRepairRange.Text = buttonText;

            comboBoxInterpolateMethod.Items.Clear();
            foreach (var item in availableMethods)
            {
                _ = comboBoxInterpolateMethod.Items.Add(item.Description());
            }

            comboBoxRepairInterval.Items.Clear();
            foreach (var item in StandartIntervals.H1.GetEnumItems())
            {
                if ((StandartIntervals)item != StandartIntervals.Variable && (StandartIntervals)item != StandartIntervals.Variable)
                {
                    _ = comboBoxRepairInterval.Items.Add(item.Description());
                }
            }
        }
コード例 #12
0
        /// <summary>
        /// загружает ряд наблюдений с ближайшей МС
        /// </summary>
        /// <param name="from">начало ряда</param>
        /// <param name="to">конец ряда</param>
        /// <param name="coordinates">координаты исходного ряда</param>
        /// <returns></returns>
        private static RawRange getNearestRange(DateTime from, DateTime to, PointLatLng coordinates)
        {
            if (from > to)
            {
                throw new WindEnergyException("Дата from больше, чем to");
            }
            RawRange res = null;

            RP5MeteostationInfo nearestMS = Vars.RP5Meteostations.GetNearestMS(coordinates);

            if (nearestMS == null)
            {
                throw new Exception("Не удалось найти ближайшую метеостанцию в заданном радиусе");
            }

            RP5ru provider = new RP5ru(Vars.Options.CacheFolder + "\\rp5.ru");

            provider.GetMeteostationExtInfo(ref nearestMS);

            if (from < nearestMS.MonitoringFrom) //если исходный ряд начинается
            {
                from = nearestMS.MonitoringFrom;
            }
            if (from > to)
            {
                throw new Exception("Ряды не пересекаются: один из рядов заканчивается раньше, чем начинается другой");
            }
            res = provider.GetRange(from, to, nearestMS);
            return(res);
        }
コード例 #13
0
        /// <summary>
        /// проверка на соответствие нормальному закону распределния ряда. озвращая критерий согласия Пирсона для этого ряда
        /// http://www.ekonomstat.ru/kurs-lektsij-po-teorii-statistiki/403-proverka-sootvetstvija-rjada-raspredelenija.html
        /// https://life-prog.ru/2_84515_proverka-po-kriteriyu-hi-kvadrat.html критерий пирсона
        /// https://math.semestr.ru/group/example-normal-distribution.php для нормального распределения
        /// </summary>
        /// <param name="range">ряд</param>
        /// <param name="parameter">проверяемый параметр</param>
        /// <returns></returns>
        private static double checkNormalLaw(RawRange range, MeteorologyParameters parameter)
        {
            GradationInfo <GradationItem> grads;

            switch (parameter)
            {
            case MeteorologyParameters.Speed:
                grads = new GradationInfo <GradationItem>(0, SPEED_GRADATION_STEP, range.Max((item) => { return(item.Speed); }));   //градации скорости
                break;

            case MeteorologyParameters.Direction:
                StatisticalRange <WindDirections16> srwd = StatisticEngine.GetDirectionExpectancy(range, GradationInfo <WindDirections16> .Rhumb16Gradations);

                return(0);

            case MeteorologyParameters.Temperature:
                grads = new GradationInfo <GradationItem>(0, TEMPERATURE_GRADATION_STEP, range.Max((item) => { return(item.Temperature); }));   //градации температуры
                break;

            case MeteorologyParameters.Wetness:
                grads = new GradationInfo <GradationItem>(0, WETNESS_GRADATION_STEP, range.Max((item) => { return(item.Wetness); }));   //градации влажности
                break;

            default: throw new WindEnergyException("Этот параметр не реализован");
            }

            //РАСЧЕТ ДЛЯ ВСЕХ, КРОМЕ НАПРАВЛЕНИЙ
            StatisticalRange <GradationItem> stat_range = StatisticEngine.GetExpectancy(range, grads, parameter); //статистический ряд

            // TODO: расчет критерия пирсона для ряда

            return(0);
        }
コード例 #14
0
        /// <summary>
        /// 获取范围内的数据
        /// </summary>
        /// <param name="self"></param>
        /// <param name="range"></param>
        /// <returns></returns>
        public static RawData GetRangeRawData(this RawData self, RawRange range)
        {
            if (range.width > self.width || (range.beginColumn + range.width) > self.width)
            {
                throw new System.Exception($"\"{range.width}\"超过\"{self.width}\"");
            }
            if (range.height > self.height || (range.beginRow + range.height) > self.height)
            {
                throw new System.Exception($"\"{range.height}\"超过\"{self.height}\"");
            }
            var data        = new string[range.width, range.height];
            var columnIndex = 0;
            var rowIndex    = 0;

            for (var y = range.beginRow; y < range.beginRow + range.height; y++)
            {
                columnIndex = 0;
                for (var x = range.beginColumn; x < range.beginColumn + range.width; x++)
                {
                    data[columnIndex, rowIndex] = self[x, y];
                    columnIndex++;
                }
                rowIndex++;
            }
            return(new RawData(data));
        }
コード例 #15
0
 /// <summary>
 /// создаёт новое окно с заданным рядом наблюдений
 /// </summary>
 /// <param name="rang"></param>
 public FormRangeStatistic(RawRange rang)
 {
     rang = rang ?? throw new ArgumentNullException(nameof(rang));
     InitializeComponent();
     dataGridViewExt1.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
     Text  = rang.Name + " - Статистика ряда";
     range = rang;
 }
コード例 #16
0
 public FormRangeTerrain(RawRange range)
 {
     InitializeComponent();
     this.range = range;
     scintillaRecommendations.StyleResetDefault();
     scintillaRecommendations.Styles[Style.Default].Size = 11;
     scintillaRecommendations.StyleClearAll();
 }
コード例 #17
0
        /// <summary>
        /// возвращает отклонение повторямости скорости от среднемноголетней
        /// </summary>
        /// <param name="range"></param>
        /// <param name="totalRange"></param>
        /// <returns></returns>
        private static double getExpectancyDeviation(RawRange range, RawRange totalRange)
        {
            StatisticalRange <GradationItem> exp = GetExpectancy(totalRange, Vars.Options.CurrentSpeedGradation);
            double         averSpeed             = totalRange.Average((t) => t.Speed);
            DeviationsInfo dinfo = ProcessRangeDeviations(range, averSpeed, exp);

            return(dinfo.ExpDeviation);
        }
コード例 #18
0
ファイル: FormMain.cs プロジェクト: vasichmen/WindEnergy
        /// <summary>
        /// создать новый документ
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void createNewToolStripMenuItem_Click(object sender, EventArgs e)
        {
            RawRange r = new RawRange();

            r.Name = "Новый документ";
            TabPageExt tab = mainTabControl.OpenNewTab(r);

            tab.HasNotSavedChanges = true;
        }
コード例 #19
0
        /// <summary>
        /// открыть новую вкладку с заданным рядом
        /// </summary>
        /// <param name="range">ряд данных для отображения</param>
        /// <param name="text">заголовок вкладки</param>
        internal TabPageExt OpenNewTab(RawRange range, string text = "Новый документ")
        {
            TabPageExt ntab = new TabPageExt(range, text);

            this.TabPages.Add(ntab);
            this.SelectedTab = ntab;
            Program.winMain.mainHelper.RefreshStatusBar();
            return(ntab);
        }
コード例 #20
0
        public FormRangeElevator(RawRange range)
        {
            range = range ?? throw new ArgumentNullException(nameof(range));

            InitializeComponent();
            this.range             = range;
            textBoxFromHeight.Text = double.IsNaN(range.Height) ? "10" : range.Height.ToString();
            refreshOptionsText();
        }
コード例 #21
0
 private void buttonSave_Click(object sender, EventArgs e)
 {
     Range.Name     = textBoxName.Text;
     Range.Height   = Convert.ToDouble(numericUpDownHeight.Value);
     Range.Position = this.selectedPosition;
     DialogResult   = DialogResult.OK;
     Result         = Range;
     Close();
 }
コード例 #22
0
        public FormRangeProperties(RawRange range)
        {
            this.Range       = range ?? throw new ArgumentNullException(nameof(range));
            selectedPosition = range.Position;

            InitializeComponent();

            buttonIntervals.Enabled = range.Quality != null;
        }
コード例 #23
0
        /// <summary>
        /// обновление всех элементов в соответствии с выбранными параметрами
        /// </summary>
        private void refreshInfo()
        {
            RawRange tempr = range.GetRange(
                radioButtonSelectPeriod.Checked,
                radioButtonSelectYearMonth.Checked,
                dateTimePickerFrom.Value,
                dateTimePickerTo.Value,
                comboBoxYear.SelectedItem,
                comboBoxMonth.SelectedItem
                );

            if (tempr == null)
            {
                throw new Exception("что-то совсем не так!!");
            }

            //расчет параметров
            try
            {
                range_info      = StatisticEngine.ProcessRange(tempr, range);
                stat_speeds     = StatisticEngine.GetExpectancy(tempr, Vars.Options.CurrentSpeedGradation);
                stat_directions = StatisticEngine.GetDirectionExpectancy(tempr, GradationInfo <WindDirections16> .Rhumb16Gradations);
                exp_info        = StatisticEngine.ProcessRange(stat_speeds);
            }
            catch (Exception ex)
            {
                _ = MessageBox.Show(this, ex.Message, "Расчёт энергетических характеристик", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (range_info == null || exp_info == null)
            {
                _ = MessageBox.Show(this, "Для заданного ряда невозможно расчитать характеристики на выбранном интервале", "Расчёт энергетических характеристик", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            //вывод параметров
            labelEnergyDensity.Text          = (range_info.EnergyDensity / 1000).ToString("0.00") + " кВт*ч/м^2";
            labelPowerDensity.Text           = range_info.PowerDensity.ToString("0.00") + " Вт/м^2";
            labelCv.Text                     = range_info.Cv.ToString("0.000");
            labelV0.Text                     = range_info.V0.ToString("0.0") + " м/с";
            labelExtremalSpeed.Text          = range_info.ExtremalSpeed.ToString("0.0") + " м/с";
            labelVmax.Text                   = range_info.Vmax.ToString("0.0") + " м/с";
            labelVmin.Text                   = range_info.Vmin.ToString("0.0") + " м/с";
            labelStandardDeviationSpeed.Text = range_info.StandardDeviationSpeed.ToString("0.000") + " м/с";
            labelGamma.Text                  = range_info.VeybullGamma.ToString("0.000");
            labelBeta.Text                   = range_info.VeybullBeta.ToString("0.000") + " м/с";
            labelAirDensity.Text             = tempr.AirDensity.ToString("0.000") + " кг/м^3" + (Vars.Options.CalculateAirDensity ? " (расчёт)" : "");

            labelEnergyDensityTV.Text = (exp_info.EnergyDensity / 1000).ToString("0.00") + " кВт*ч/м^2";
            labelPowerDensityTV.Text  = exp_info.PowerDensity.ToString("0.00") + " Вт/м^2";
            labelCvTV.Text            = exp_info.Cv.ToString("0.000");
            labelV0TV.Text            = exp_info.V0.ToString("0.0") + " м/с";
            labelGammaTV.Text         = exp_info.VeybullGamma.ToString("0.000");
            labelBetaTV.Text          = exp_info.VeybullBeta.ToString("0.000") + " м/с";
        }
コード例 #24
0
        /// <summary>
        /// проверяет скорости и направления в заданном ряду на соответствие нормальному закону распределения.
        /// Возвращает false если ряд не соответствует
        /// </summary>
        /// <param name="baseRange">проверяемый ряд</param>
        /// <param name="acceptDiapason">допустимый диапазон</param>
        /// <returns></returns>
        internal static bool CheckNormalLaw(RawRange baseRange, Diapason <double> acceptDiapason)
        {
            return(true);

            double Xi_speed = checkNormalLaw(baseRange, MeteorologyParameters.Speed);
            double Xi_dir   = checkNormalLaw(baseRange, MeteorologyParameters.Direction);
            double f        = Math.Max(Xi_dir, Xi_speed); //максимально расхождение

            return(acceptDiapason.From < f && acceptDiapason.To > f);
        }
コード例 #25
0
ファイル: Checker.cs プロジェクト: vasichmen/WindEnergy
        /// <summary>
        /// проверить ряд и устранить ошибки
        /// </summary>
        /// <param name="range">ряд</param>
        /// <param name="param">параметры обработки ошибок</param>
        /// <param name="info">результаты проверки ряда</param>
        /// <param name="action">действие, при изменении провенца выполнения</param>
        /// <returns></returns>
        public RawRange ProcessRange(RawRange range, CheckerParameters param, out CheckerInfo info, Action <double> action = null)
        {
            this.action     = action;
            this.totalCount = range.Count;

            switch (param.LimitsProvider)
            {
            case LimitsProviders.Manual:
                if (param.Coordinates.IsEmpty && param.CheckByPos)
                {
                    throw new ArgumentException("Ряд не содержит информацию о координатах");
                }
                else
                {
                    provider = new ManualLimits(param.DirectionInclude, param.SpeedInclude);
                }
                break;

            case LimitsProviders.StaticLimits:
                provider = new StaticRegionLimits(Vars.SpeedLimits.Dictionary, param.Coordinates);
                break;

            default: throw new Exception("Этот провайдер не реализован");
            }

            Parallel.ForEach(range, new ParallelOptions(), (item) =>
            {
                incrementCount();
                bool accepted = checkItem(item);
                if (accepted)
                {
                    item = restoreItem(item);
                    resultCollection.Add(item);
                }
            });

            RawRange res = new RawRange(resultCollection.OrderBy(new Func <RawItem, double>((item) => { return(item.DateArgument); })))
            {
                Height       = range.Height,
                Position     = range.Position,
                Meteostation = range.Meteostation,
                FilePath     = range.FilePath,
                Name         = "Исправленный ряд. " + range.Name
            };

            info = new CheckerInfo()
            {
                DateRepeats = repeats,
                OtherErrors = other,
                OverLimits  = lims,
                Remain      = res.Count,
                Total       = range.Count
            };
            return(res);
        }
コード例 #26
0
        public void FirstVerseStringTest()
        {
            RawRange target   = new RawRange();
            string   expected = null;
            string   actual;

            target.FirstVerseString = expected;
            target.FirstVerseSuffix = null;
            actual = target.FirstVerseString;
            Assert.AreEqual(expected, actual);
        }
コード例 #27
0
 /// <summary>
 /// создаёт новое окно с заданным рядом
 /// </summary>
 /// <param name="rang">ряд наблюдений, для которого расчитываются характеристики</param>
 public FormEnergyInfo(RawRange rang)
 {
     rang = rang ?? throw new ArgumentNullException(nameof(rang));
     InitializeComponent();
     this.range = rang;
     Text       = rang.Name;
     radioButtonSelectPeriod.CheckedChanged    += radioButtonSelect_CheckedChanged;
     radioButtonSelectYearMonth.CheckedChanged += radioButtonSelect_CheckedChanged;
     dateTimePickerFrom.ValueChanged           += dateTimePickerFrom_ValueChanged;
     dateTimePickerTo.ValueChanged             += dateTimePickerTo_ValueChanged;
 }
コード例 #28
0
ファイル: FormMain.cs プロジェクト: vasichmen/WindEnergy
        /// <summary>
        /// пересчет скорости ветра в точку ВЭС
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ToolStripMenuItemRangeTerrain_Click(object sender, EventArgs e)
        {
            RawRange         rang = (mainTabControl.SelectedTab as TabPageExt).Range;
            FormRangeTerrain frm  = new FormRangeTerrain(rang);

            if (frm.ShowDialog(this) == DialogResult.OK)
            {
                _ = mainTabControl.OpenNewTab(frm.Result, frm.Result.Name);
            }
            frm.Dispose();
        }
コード例 #29
0
        private void linkLabelOpenNasa_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            FormLoadFromNASA frm = new FormLoadFromNASA(selectedMeteostation.Position);

            if (frm.ShowDialog(this) == DialogResult.OK)
            {
                RawRange   res = frm.Result;
                TabPageExt tab = Program.winMain.mainTabControl.OpenNewTab(res, res.Name);
                tab.HasNotSavedChanges = true;
            }
            frm.Dispose();
        }
コード例 #30
0
ファイル: FormMain.cs プロジェクト: vasichmen/WindEnergy
        /// <summary>
        /// загрузить из БД NASA
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void downloadNASAToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormLoadFromNASA frm = new FormLoadFromNASA(PointLatLng.Empty);

            if (frm.ShowDialog(this) == DialogResult.OK)
            {
                RawRange   res = frm.Result;
                TabPageExt tab = mainTabControl.OpenNewTab(res, res.Name);
                tab.HasNotSavedChanges = true;
            }
            frm.Dispose();
        }