TarDtoDfoCalc.cs 3.6 KB

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