GdopAnalyseForm.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. using DevExpress.Xpo;
  2. using DevExpress.XtraEditors;
  3. using Ips.Library.Entity;
  4. using Ips.Sps.Ants;
  5. using Ips.Sps.Com.Gdops;
  6. using Ips.Sps.Emts;
  7. using Ips.Sps.Ephs;
  8. using Ips.Sps.Sats;
  9. using Ips.Sps.TskResults.Peses;
  10. using Ips.Sps.TskResults.Poses;
  11. using System;
  12. using System.Collections.Generic;
  13. using System.ComponentModel;
  14. using System.Data;
  15. using System.Drawing;
  16. using System.Linq;
  17. using System.Text;
  18. using System.Threading.Tasks;
  19. using System.Windows.Forms;
  20. namespace Ips.Sps.Tools
  21. {
  22. public partial class GdopAnalyseForm : DevExpress.XtraEditors.XtraForm
  23. {
  24. public GdopAnalyseForm()
  25. {
  26. InitializeComponent();
  27. _session = new Session();
  28. InitGdopCtrl();
  29. }
  30. public GdopAnalyseForm(long? posId) : this()
  31. {
  32. if (posId.HasValue)
  33. {
  34. _posId = posId.Value;
  35. var vm = CreateViewModel();
  36. gdopCtrl.SetViewModel(vm);
  37. }
  38. }
  39. GdopAnalyseCtrl gdopCtrl;
  40. GdopParamSetCtrl paramSetCtrl => gdopCtrl.ParamsCtrl;
  41. Session _session;
  42. long _posId;
  43. private void GdopAnalyseForm_Load(object sender, EventArgs e)
  44. {
  45. }
  46. private void InitGdopCtrl()
  47. {
  48. gdopCtrl = new GdopAnalyseCtrl();
  49. gdopCtrl.Dock = DockStyle.Fill;
  50. this.Controls.Add(gdopCtrl);
  51. paramSetCtrl.AntList = _session.Query<Ant>()
  52. .Select(m => new AntInfo(m.Oid, m.Name, m.Lon, m.Lat, m.Alt)).ToList();
  53. paramSetCtrl.RefSiteList = _session.Query<Emt>().Where(m => m.EmtType == EmtType.FixSation && m.Enable)
  54. .Select(m => new RefSiteInfo(m.Oid, m.Name, m.Lon, m.Lat, m.Alt)).ToList();
  55. paramSetCtrl.SatList = _session.Query<Sat>().Where(m => m.Enable).OrderBy(m => m.Lon)
  56. .Select(m => new SatInfo(m.SatNum, m.Name, m.Lon)).ToList();
  57. paramSetCtrl.QueryEph += ParamSetCtrl_QueryEph;
  58. }
  59. private GdopAnalyseViewModel CreateViewModel()
  60. {
  61. if (_posId == 0) return null;
  62. var pos = _session.GetObjectByKey<Pos>(_posId);
  63. if (pos == null) return null;
  64. var posRels = _session.Query<PosRel>().Where(m => m.PosId == _posId).ToList();
  65. var pesIds = posRels.Select(m => m.PesId).Distinct().ToList();
  66. var pesList = _session.Query<Pes>().Where(m => pesIds.Contains(m.Id)).ToList();
  67. var tarPesList = pesList.Where(m => m.Category != SignalCategory.RefSig).ToList();
  68. var refPesList = pesList.Where(m => m.Category == SignalCategory.RefSig).ToList();
  69. Pes pes1 = tarPesList.Count > 0 ? tarPesList[0] : null;
  70. Pes pes2 = tarPesList.Count > 1 ? tarPesList[1] : null;
  71. var pesRef = refPesList.FirstOrDefault();
  72. GdopAnalyseViewModel _vm = new GdopAnalyseViewModel();
  73. _vm.SigTime = pos.SigTime;
  74. _vm.HasRef = pos.HasRef;
  75. if (pes1 != null)
  76. {
  77. _vm.AntId = pes1.MainAntId;
  78. _vm.AntLon = pes1.MainAntLon;
  79. _vm.AntLat = pes1.MainAntLat;
  80. _vm.AntAlt = pes1.MainAntAlt;
  81. }
  82. if (pesRef != null)
  83. {
  84. _vm.RefId = pesRef.EmtId;
  85. _vm.RefLon = pesRef.SigLon;
  86. _vm.RefLat = pesRef.SigLat;
  87. _vm.RefAlt = pesRef.SigAlt;
  88. }
  89. if (pes1 != null)
  90. {
  91. _vm.MsId = pes1.MainSatNum;
  92. _vm.MsX = pes1.MainEphX;
  93. _vm.MsY = pes1.MainEphY;
  94. _vm.MsZ = pes1.MainEphZ;
  95. _vm.MsVx = pes1.MainEphVx;
  96. _vm.MsVy = pes1.MainEphVy;
  97. _vm.MsVz = pes1.MainEphVz;
  98. _vm.As1Id = pes1.AdjaSatNum;
  99. _vm.AsX1 = pes1.AdjaEphX;
  100. _vm.AsY1 = pes1.AdjaEphY;
  101. _vm.AsZ1 = pes1.AdjaEphZ;
  102. _vm.AsVx1 = pes1.AdjaEphVx;
  103. _vm.AsVy1 = pes1.AdjaEphVy;
  104. _vm.AsVz1 = pes1.AdjaEphVz;
  105. }
  106. if (pes2 != null)
  107. {
  108. _vm.As2Id = pes2.AdjaSatNum;
  109. _vm.AsX2 = pes2.AdjaEphX;
  110. _vm.AsY2 = pes2.AdjaEphY;
  111. _vm.AsZ2 = pes2.AdjaEphZ;
  112. _vm.AsVx2 = pes2.AdjaEphVx;
  113. _vm.AsVy2 = pes2.AdjaEphVy;
  114. _vm.AsVz2 = pes2.AdjaEphVz;
  115. }
  116. return _vm;
  117. }
  118. private void ParamSetCtrl_QueryEph(object sender, Com.Ephs.QueryEphEventArgs e)
  119. {
  120. e.Result = EphManager.Default.GetEph(e.SatNum, e.EphTime);
  121. }
  122. }
  123. }