TarDtoDfoCalc.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using DevExpress.XtraEditors;
  2. using ExtensionsDev;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.ComponentModel;
  6. using System.Data;
  7. using System.Data.Entity;
  8. using System.Drawing;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using System.Windows.Documents;
  13. using System.Windows.Forms;
  14. using XdCxRhDW.Entity;
  15. using XdCxRhDW.Repostory;
  16. namespace XdCxRhDW.App.EditForms
  17. {
  18. public partial class TarDtoDfoCalc : DevExpress.XtraEditors.XtraForm
  19. {
  20. public TarDtoDfoCalc()
  21. {
  22. InitializeComponent();
  23. this.layoutControl1.UseDefault();
  24. this.StartPosition = FormStartPosition.CenterParent;
  25. }
  26. public TarDtoDfoCalc(double lon, double lat)
  27. : this()
  28. {
  29. this.txtTar.Text = $"{lon:f3},{lat:f3}";
  30. }
  31. private async void SatEditor_Load(object sender, EventArgs e)
  32. {
  33. try
  34. {
  35. using (RHDWContext db = new RHDWContext())
  36. {
  37. var rec = await db.TxInfos.Where(p => p.TxType == EnumTxType.Rec).FirstOrDefaultAsync();
  38. this.txtRec.Text = $"{rec.Lon},{rec.Lat}";
  39. }
  40. }
  41. catch (Exception ex)
  42. {
  43. await LogHelper.Error("查询接收站信息出错", ex);
  44. DxHelper.MsgBoxHelper.ShowError("查询接收站信息出错");
  45. }
  46. }
  47. private async void btnOk_Click(object sender, EventArgs e)
  48. {
  49. try
  50. {
  51. double x = Convert.ToDouble(txtX1.Text);
  52. double y = Convert.ToDouble(txtY1.Text);
  53. double z = Convert.ToDouble(txtZ1.Text);
  54. var strTar = txtTar.Text.Replace(",", ",");
  55. var strRec = txtRec.Text.Replace(",", ",");
  56. double lon = Convert.ToDouble(strTar.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[0]);
  57. double lat = Convert.ToDouble(strTar.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[1]);
  58. double recLon = Convert.ToDouble(strRec.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[0]);
  59. double recLat = Convert.ToDouble(strRec.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[1]);
  60. var tarEcef = PhysicsHelper.GeoToEcef((lon, lat, 0));
  61. var recEcef = PhysicsHelper.GeoToEcef((recLon, recLat, 0));
  62. var xlEcef1 = (Convert.ToDouble(txtX1.Text.Trim()), Convert.ToDouble(txtY1.Text.Trim()), Convert.ToDouble(txtZ1.Text.Trim()));
  63. var x2Ecef1 = (Convert.ToDouble(txtX2.Text.Trim()), Convert.ToDouble(txtY2.Text.Trim()), Convert.ToDouble(txtZ2.Text.Trim()));
  64. double x3 = 0, y3 = 0, z3 = 0;
  65. if (!string.IsNullOrWhiteSpace(txtX3.Text))
  66. {
  67. x3 = Convert.ToDouble(txtX3.Text.Trim());
  68. y3 = Convert.ToDouble(txtY3.Text.Trim());
  69. z3 = Convert.ToDouble(txtZ3.Text.Trim());
  70. }
  71. var dt1 = PhysicsHelper.Dto(tarEcef, xlEcef1, recEcef);
  72. var dt2 = PhysicsHelper.Dto(tarEcef, x2Ecef1, recEcef);
  73. if (x3 != 0)
  74. {
  75. var dt3 = PhysicsHelper.Dto(tarEcef, (x3, y3, z3), recEcef);
  76. this.txtRes.Text = $"主邻1时差预测值:{dt1 * 1e6 - dt2 * 1e6:f3}us 主邻2时差预测值:{dt1 * 1e6 - dt3 * 1e6:f3}us";
  77. }
  78. else
  79. {
  80. this.txtRes.Text = $"主邻1时差预测值:{dt1 * 1e6 - dt2 * 1e6:f3}us";
  81. }
  82. }
  83. catch (Exception ex)
  84. {
  85. await LogHelper.Error("时差预测出错", ex);
  86. DxHelper.MsgBoxHelper.ShowError("时差预测出错");
  87. }
  88. }
  89. }
  90. }