123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- using DataSimulation.Repostory;
- using DataSimulation.Repostory.EFContext;
- using DataSimulation.Repostory.Model;
- using DevExpress.Utils.About;
- using DevExpress.XtraEditors;
- using DevExpress.XtraEditors.Controls;
- using DevExpress.XtraEditors.DXErrorProvider;
- using DxHelper;
- using ExtensionsDev;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Data.Entity;
- using System.Data.Entity.Migrations;
- using System.Drawing;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace DataSimulation.Forms.EditForms
- {
- public partial class FlightImport : DevExpress.XtraEditors.XtraForm
- {
- public List<SimulationInfo> Addinfo;
- private List<SimulationInfo> simulationInfos;
- private List<FlightInfo> flightInfos;
- public FlightImport(List<SimulationInfo> simulationInfos)
- {
- InitializeComponent();
- this.Text = "导入航迹";
- this.simulationInfos = simulationInfos;
- this.StartPosition = FormStartPosition.CenterParent;
- }
- private void Editor_Load(object sender, EventArgs e)
- {
- mapControl.UseDefalutOptions()
- .UseClearAll()
- .UseDistanceLine()
- .UseMarkDot()
- .UseExportImg()
- .UseExportXlsx()
- .UseExportCsv()
- .UseExportFlightLine()
- .SetMapLayerType(null);
- }
- private async void btnSave_Click(object sender, EventArgs e)
- {
- try
- {
- var fligths = mapControl.GetFlightLine<FlightInfo>();
-
- Addinfo = new List<SimulationInfo>();
- var sims = fligths.Select(f => new SimulationInfo() { SimulationName = f.FlightName, SimulationSpeed = f.Speed });
- Addinfo.AddRange(sims);
- using (SimulationPartContext db = SimulationPartContext.GetContext(sims.First().CreateTime))
- {
- var sinfos = db.SimulationInfos.AddRange(Addinfo);
- await db.SaveChangesAsync();
- List<SimulationPonit> ponits = new List<SimulationPonit>();
- foreach (var sinfo in sinfos)
- {
- var flight = fligths.FirstOrDefault(s => s.FlightName == sinfo.SimulationName);
- var fpoints = flight.flights.Select(f => new SimulationPonit()
- {
- SimulationId = sinfo.ID,
- SimulationLon = f.FlightLon,
- SimulationLat = f.FlightLat,
- });
- ponits.AddRange(fpoints);
- }
- db.SimulationPonits.AddRange(ponits);
- await db.SaveChangesAsync();
- }
- this.DialogResult = DialogResult.OK;
- }
- catch (Exception ex)
- {
- Serilog.Log.Error(ex, $"{this.Text}异常");
- DxHelper.MsgBoxHelper.ShowError($"{this.Text}异常");
- }
- }
- private List<FlightInfo> AnalysisFlight(string filePath)
- {
- List<FlightInfo> flightInfos = new List<FlightInfo>();
- try
- {
- List<FightDataCsv> fights = new List<FightDataCsv>();
- var allLines = File.ReadAllLines(filePath);
- int count = 0;
- foreach (var item in allLines)
- {
- count++;
- if (count == 1) continue;
- var strs = item.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
- if (strs.Length != 4)
- {
- throw new Exception("格式错误");
- }
- FightDataCsv fight = new FightDataCsv();
- int i = 0;
- fight.FlightName = strs[i++];
- fight.Speed = Convert.ToDouble(strs[i++]);
- fight.FlightLon = Convert.ToDouble(strs[i++]);
- fight.FlightLat = Convert.ToDouble(strs[i++]);
- fights.Add(fight);
- }
- var groupfilghts = fights.GroupBy(f => f.FlightName);
- foreach (var flight in groupfilghts)
- {
- string name = flight.Key;
- if (simulationInfos.Any(m => m.SimulationName == name))
- {
- name = $"{name}{DateTime.Now:yyyyMMddHHmmss}";
- }
- double speed = flight.First().Speed;
- var fligths = flight.Select(f => new FlightData(f.FlightLon, f.FlightLat)).ToList();
- FlightInfo flightInfo = new FlightInfo(name, speed);
- flightInfo.flights.AddRange(fligths);
- flightInfos.Add(flightInfo);
- }
- }
- catch (Exception ex)
- {
- Serilog.Log.Error(ex, $"导入航迹解析异常:{ex.Message}");
- DxHelper.MsgBoxHelper.ShowError($"导入航迹解析异常:{ex.Message}");
- }
- return flightInfos;
- }
- private void btnFlight_Click(object sender, EventArgs e)
- {
- flightInfos = new List<FlightInfo>();
- XtraOpenFileDialog xtraOpenFileDialog1 = new XtraOpenFileDialog();
- xtraOpenFileDialog1.Multiselect = false;
- xtraOpenFileDialog1.Filter = "CSV文件|*.csv";
- if (xtraOpenFileDialog1.ShowDialog() == DialogResult.OK)
- {
- string filePath = xtraOpenFileDialog1.FileName;
- flightInfos = AnalysisFlight(filePath);
- }
- try
- {
- cbAll.Properties.Items.AddRange(flightInfos.Select(m => m.FlightName).ToList());
- if (flightInfos.Count > 0)
- {
- cbAll.SelectedIndex = 0;
- mapControl.SetFlightLine(flightInfos);
- }
- }
- catch (Exception ex)
- {
- Serilog.Log.Error(ex, $"导入航迹异常:{ex.Message}");
- DxHelper.MsgBoxHelper.ShowError($"导入航迹异常:{ex.Message}");
- }
- }
- private void cbAll_SelectedValueChanged(object sender, EventArgs e)
- {
- if (flightInfos != null && flightInfos.Count > 0)
- {
- var name = cbAll.SelectedItem.ToString();
- var firstFlight = flightInfos.First(f => f.FlightName == name);
- this.txtFlightName.Text = firstFlight.FlightName;
- this.txtSpeed.Text = $"{firstFlight.Speed}";
- }
- }
- }
- }
|