예제 #1
0
        private void Calc_Click(object sender, RoutedEventArgs e)
        {
            var startDataTime  = StartDataTime.SelectedDate ?? DateTime.Now.AddDays(-1);
            var finishDataTime = FinishDataTime.SelectedDate ?? DateTime.Now;
            //var StartDataTime = new DateTime(2020, 10, 1, 0, 0, 0);
            //var FinishDataTime = new DateTime(2020, 11, 1, 0, 0, 0);
            Expression <Func <HighSpeedData, bool> > dataPredicate = x => x.HSData_DT >= startDataTime && x.HSData_DT < finishDataTime;

            using (var db = new HighSpeed_PROCEntities())
            {
                #region HS_DataForAnalysis
                var highSpeedData = (
                    from e1 in db.HS_Data_PROC
                    select new HighSpeedData
                {
                    Acceleration = e1.Acceleration,
                    AxleGrp_Num = e1.AxleGrp_Num,
                    Axle_Num = e1.Axle_Num,
                    ExternInfo = e1.ExternInfo,
                    F7Code = e1.F7Code,
                    HSData_Id = e1.HSData_Id,
                    Veh_Length = e1.Veh_Length,
                    Veh_Type = e1.Veh_Type,
                    LWheel_1_W = e1.LWheel_1_W,
                    LWheel_2_W = e1.LWheel_2_W,
                    LWheel_3_W = e1.LWheel_3_W,
                    LWheel_4_W = e1.LWheel_4_W,
                    LWheel_5_W = e1.LWheel_5_W,
                    LWheel_6_W = e1.LWheel_6_W,
                    LWheel_7_W = e1.LWheel_7_W,
                    LWheel_8_W = e1.LWheel_8_W,
                    Lane_Id = e1.Lane_Id,
                    Oper_Direc = e1.Oper_Direc,
                    Speed = e1.Speed,
                    OverLoad_Sign = e1.OverLoad_Sign,
                    RWheel_1_W = e1.RWheel_1_W,
                    RWheel_2_W = e1.RWheel_2_W,
                    RWheel_3_W = e1.RWheel_3_W,
                    RWheel_4_W = e1.RWheel_4_W,
                    RWheel_5_W = e1.RWheel_5_W,
                    RWheel_6_W = e1.RWheel_6_W,
                    RWheel_7_W = e1.RWheel_7_W,
                    RWheel_8_W = e1.RWheel_8_W,
                    Violation_Id = e1.Violation_Id,
                    AxleDis1 = e1.AxleDis1,
                    AxleDis2 = e1.AxleDis2,
                    AxleDis3 = e1.AxleDis3,
                    AxleDis4 = e1.AxleDis4,
                    AxleDis5 = e1.AxleDis5,
                    AxleDis6 = e1.AxleDis6,
                    AxleDis7 = e1.AxleDis7,
                    HSData_DT = e1.HSData_DT,
                    Gross_Load = e1.Gross_Load
                }
                    );
                #endregion ;

                //不同车道车数量分布
                //var Lane_Div = new int[] { 1, 2, 3, 4 };
                List <int> Lane_Dist = DataProcessing.GetLaneDist(Lane.Text, dataPredicate, highSpeedData).ToList();
                try
                {
                    var fs          = new FileStream("不同车道车辆数.txt", FileMode.Create);
                    var sw          = new StreamWriter(fs, Encoding.Default);
                    var writeString = $"{Lane_Dist[0]}";
                    for (int i = 1; i < Lane_Dist.Count; i++)
                    {
                        writeString = $"{writeString},{Lane_Dist[i]}";
                    }
                    sw.Write(writeString);
                    sw.Close();
                    fs.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }


                //不同区间车速车数量分布
                List <int> Speed_Dist = DataProcessing.GetSpeedDist(Speed.Text, dataPredicate, highSpeedData).ToList();
                try
                {
                    var fs          = new FileStream("不同车速区间车辆数.txt", FileMode.Create);
                    var sw          = new StreamWriter(fs, Encoding.Default);
                    var writeString = $"{Speed_Dist[0]}";
                    for (int i = 1; i < Speed_Dist.Count; i++)
                    {
                        writeString = $"{writeString},{Speed_Dist[i]}";
                    }
                    sw.Write(writeString);
                    sw.Close();
                    fs.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                //var Gross_Load_Div = new int[] { 0, 10_000, 20_000, 30_000 };
                //不同区间车重车数量分布
                List <int> GrossLoad_Dist = DataProcessing.GetGrossLoadDist(GrossLoad.Text, dataPredicate, highSpeedData).ToList();
                try    //结果写入txt(以逗号分隔)
                {
                    var fs          = new FileStream("不同车重区间车辆数.txt", FileMode.Create);
                    var sw          = new StreamWriter(fs, Encoding.Default);
                    var writeString = $"{GrossLoad_Dist[0]}";
                    for (int i = 1; i < GrossLoad_Dist.Count; i++)
                    {
                        writeString = $"{writeString},{GrossLoad_Dist[i]}";
                    }
                    sw.Write(writeString);
                    sw.Close();
                    fs.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                //指定车道不同区间车重车数量分布
                List <int> GrossLoad_Dist_ByLane = DataProcessing.GetGrossLoadDistByLane(GrossLoad.Text, Convert.ToInt32(CriticalLane.Text), dataPredicate, highSpeedData).ToList();
                try    //结果写入txt(以逗号分隔)
                {
                    var fs          = new FileStream($"车道{Convert.ToInt32(CriticalLane.Text)}不同车重区间车辆数.txt", FileMode.Create);
                    var sw          = new StreamWriter(fs, Encoding.Default);
                    var writeString = $"{GrossLoad_Dist_ByLane[0]}";
                    for (int i = 1; i < GrossLoad_Dist_ByLane.Count; i++)
                    {
                        writeString = $"{writeString},{GrossLoad_Dist_ByLane[i]}";
                    }
                    sw.Write(writeString);
                    sw.Close();
                    fs.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                //例子:
                //var Hour_Div = new int[] { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22 };

                //不同区间小时车数量分布
                List <int> Hour_Dist = DataProcessing.GetHourDist(Hour.Text, dataPredicate, highSpeedData).ToList();
                try
                {
                    var fs          = new FileStream("不同小时区间车辆数.txt", FileMode.Create);
                    var sw          = new StreamWriter(fs, Encoding.Default);
                    var writeString = $"{Hour_Dist[0]}";
                    for (int i = 1; i < Hour_Dist.Count; i++)
                    {
                        writeString = $"{writeString},{Hour_Dist[i]}";
                    }
                    sw.Write(writeString);
                    sw.Close();
                    fs.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                //不同区间小时平均车速分布
                List <double?> HourSpeed_Dist = DataProcessing.GetHourAverageSpeedDist(Hour.Text, dataPredicate, highSpeedData).ToList();

                try
                {
                    var fs          = new FileStream("不同小时区间平均车速.txt", FileMode.Create);
                    var sw          = new StreamWriter(fs, Encoding.Default);
                    var writeString = $"{Math.Round(Convert.ToDecimal(HourSpeed_Dist[0] ?? 0.0), 1)}";
                    for (int i = 1; i < HourSpeed_Dist.Count; i++)
                    {
                        writeString = $"{writeString},{Math.Round(Convert.ToDecimal(HourSpeed_Dist[i] ?? 0.0), 1)}";
                    }
                    sw.Write(writeString);
                    sw.Close();
                    fs.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                //不同区间小时大于指定重量的车数量
                var HourWeight_Dist = DataProcessing.GetCountsAboveCriticalWeightInDifferentHours(Hour.Text, Convert.ToInt32(CriticalWeight.Text), dataPredicate, highSpeedData).ToList();

                try
                {
                    var fs          = new FileStream($"不同区间小时大于{CriticalWeight.Text}kg车数量.txt", FileMode.Create);
                    var sw          = new StreamWriter(fs, Encoding.Default);
                    var writeString = $"{HourWeight_Dist[0]}";
                    for (int i = 1; i < HourWeight_Dist.Count; i++)
                    {
                        writeString = $"{writeString},{HourWeight_Dist[i]}";
                    }
                    sw.Write(writeString);
                    sw.Close();
                    fs.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                MessageBox.Show("运行完成!");
            }
        }