Example #1
0
        public void ShowData(List <ReservoirHydrologyRecord> list)
        {
            if (list == null || list.Count == 0)
            {
                return;
            }

            this.TitleText = list[0].StationName + "站点水情曲线";

            level = new LineSeries
            {
                Title       = "库水位:米",
                Values      = new ChartValues <DatasOfHydro>(),
                ScalesYAt   = 0,
                Stroke      = Brushes.Blue,
                PointRadius = 0.2,
                Fill        = Brushes.Transparent
            };

            warningLevel = new LineSeries
            {
                Title       = "汛限水位:米",
                Values      = new ChartValues <DatasOfHydro>(),
                Fill        = Brushes.Transparent,
                ScalesYAt   = 0,
                Stroke      = Brushes.Red,
                PointRadius = 0.2
            };

            pondage = new LineSeries
            {
                Title       = "蓄水量:亿立方米",
                Values      = new ChartValues <DatasOfHydro>(),
                Fill        = Brushes.Transparent,
                ScalesYAt   = 1,
                Stroke      = Brushes.Orange,
                PointRadius = 0.2
            };

            var          levelList        = new List <DatasOfHydro>();
            var          warningLevelList = new List <DatasOfHydro>();
            var          pondageList      = new List <DatasOfHydro>();
            DatasOfHydro preLevel         = null;
            DatasOfHydro preWarningLevel  = null;
            DatasOfHydro prePondage       = null;

            double minimumLevel = double.MaxValue;

            foreach (ReservoirHydrologyRecord record in list)
            {
                if ((preLevel == null) || (!preLevel.Time.Equals(record.Time)))
                {
                    preLevel = new DatasOfHydro {
                        Data = record.Level, Time = record.Time
                    };
                    levelList.Add(preLevel);
                    if (record.Level < minimumLevel)
                    {
                        minimumLevel = record.Level;
                    }
                }

                if ((record.WarningLevel > 0) && ((preWarningLevel == null) || (!preWarningLevel.Time.Equals(record.Time))))
                {
                    preWarningLevel = new DatasOfHydro {
                        Data = record.WarningLevel, Time = record.Time
                    };
                    warningLevelList.Add(preWarningLevel);
                    if (record.WarningLevel < minimumLevel)
                    {
                        minimumLevel = record.WarningLevel;
                    }
                }

                if ((record.Pondage > 0) && ((prePondage == null) || (!prePondage.Time.Equals(record.Time))))
                {
                    prePondage = new DatasOfHydro {
                        Data = record.Pondage, Time = record.Time
                    };
                    pondageList.Add(prePondage);
                }
            }

            this.MinY = (int)(minimumLevel * 0.9);

            level.Values = levelList.AsChartValues();
            if (warningLevelList.Count > 0)
            {
                warningLevel.Values = warningLevelList.AsChartValues();
            }

            if (pondageList.Count > 0)
            {
                pondage.Values = pondageList.AsChartValues();
            }

            HydroDatas = new SeriesCollection {
                level, pondage, warningLevel
            }.Setup(new SeriesConfiguration <DatasOfHydro>().Y(m => m.Data).X(m => m.Time.ToOADate()).Y(m => m.Data));

            ZFormatter = f => f.ToString();
            YFormatter = l => l.ToString();
            XFormatter = date => DateTime.FromOADate(date).ToString("MM.dd:HH");
            this.Hint  = "图片生成完成!";
        }
Example #2
0
        public void ShowData(List <RiverHydrologyRecord> list)
        {
            if (list == null || list.Count == 0)
            {
                return;
            }

            this.TitleText = list[0].StationName + "站点水情曲线";

            level = new LineSeries
            {
                Title       = "水位:米",
                Values      = new ChartValues <DatasOfHydro>(),
                ScalesYAt   = 0,
                Stroke      = Brushes.Blue,
                Fill        = Brushes.Transparent,
                PointRadius = 0.2
            };

            warningLevel = new LineSeries
            {
                Title       = "警戒水位:米",
                Values      = new ChartValues <DatasOfHydro>(),
                Fill        = Brushes.Transparent,
                ScalesYAt   = 0,
                Stroke      = Brushes.Red,
                PointRadius = 0.2
            };

            safetyLevel = new LineSeries
            {
                Title       = "保证水位:米",
                Values      = new ChartValues <DatasOfHydro>(),
                Fill        = Brushes.Transparent,
                ScalesYAt   = 0,
                Stroke      = Brushes.ForestGreen,
                PointRadius = 0.2
            };

            flow = new LineSeries
            {
                Title       = "流量:立方米/秒",
                Values      = new ChartValues <DatasOfHydro>(),
                Fill        = Brushes.Transparent,
                ScalesYAt   = 1,
                Stroke      = Brushes.Orange,
                PointRadius = 0.2
            };

            var          levelList        = new List <DatasOfHydro>();
            var          warningLevelList = new List <DatasOfHydro>();
            var          flowList         = new List <DatasOfHydro>();
            var          safetyLevelList  = new List <DatasOfHydro>();
            DatasOfHydro preLevel         = null;
            DatasOfHydro preWarningLevel  = null;
            DatasOfHydro preFlow          = null;
            DatasOfHydro preSafetyLevel   = null;

            double minimumLevel = double.MaxValue;

            foreach (RiverHydrologyRecord record in list)
            {
                if ((preLevel == null) || (!preLevel.Time.Equals(record.Time)))
                {
                    preLevel = new DatasOfHydro {
                        Data = record.Level, Time = record.Time
                    };
                    levelList.Add(preLevel);
                    if (record.Level < minimumLevel)
                    {
                        minimumLevel = record.Level;
                    }
                }

                if ((record.WarningLevel > 0) && ((preWarningLevel == null) || (!preWarningLevel.Time.Equals(record.Time))))
                {
                    preWarningLevel = new DatasOfHydro {
                        Data = record.WarningLevel, Time = record.Time
                    };
                    warningLevelList.Add(preWarningLevel);
                    if (record.WarningLevel < minimumLevel)
                    {
                        minimumLevel = record.WarningLevel;
                    }
                }

                if ((record.SafetyLevel > 0) && ((preSafetyLevel == null) || (!preSafetyLevel.Time.Equals(record.Time))))
                {
                    preSafetyLevel = new DatasOfHydro {
                        Data = record.SafetyLevel, Time = record.Time
                    };
                    safetyLevelList.Add(preSafetyLevel);
                    if (record.SafetyLevel < minimumLevel)
                    {
                        minimumLevel = record.SafetyLevel;
                    }
                }

                if ((record.Flow > 0) && ((preFlow == null) || (!preFlow.Time.Equals(record.Time))))
                {
                    preFlow = new DatasOfHydro {
                        Data = record.Flow, Time = record.Time
                    };
                    flowList.Add(preFlow);
                }
            }

            this.MinY = (int)(minimumLevel * 0.9);

            level.Values = levelList.AsChartValues();
            if (warningLevelList.Count > 0)
            {
                warningLevel.Values = warningLevelList.AsChartValues();
            }

            if (flowList.Count > 0)
            {
                flow.Values = flowList.AsChartValues();
            }

            if (safetyLevelList.Count > 0)
            {
                safetyLevel.Values = safetyLevelList.AsChartValues();
            }

            HydroDatas = new SeriesCollection {
                level, flow, warningLevel, safetyLevel
            }.Setup(new SeriesConfiguration <DatasOfHydro>().Y(m => m.Data).X(m => m.Time.ToOADate()).Y(m => m.Data));

            ZFormatter = f => f.ToString();
            YFormatter = l => l.ToString();
            XFormatter = date => DateTime.FromOADate(date).ToString("MM.dd:HH");

            this.Hint = "图片生成完成!";
        }