using ExtensionsDev; using System; using System.Data.Entity; using System.Linq; using System.Windows.Forms; using XdCxRhDW.Entity; using XdCxRhDW.Repostory; namespace XdCxRhDW.App.EditForms { public partial class TarDtoDfoCalc : DevExpress.XtraEditors.XtraForm { public TarDtoDfoCalc() { InitializeComponent(); this.layoutControl1.UseDefault(); this.StartPosition = FormStartPosition.CenterParent; } public TarDtoDfoCalc(double lon, double lat) : this() { this.txtTar.Text = $"{lon:f3},{lat:f3}"; } private async void SatEditor_Load(object sender, EventArgs e) { try { using (RHDWContext db = new RHDWContext()) { var rec = await db.TxInfos.Where(p => p.TxType == EnumTxType.Rec).FirstOrDefaultAsync(); this.txtRec.Text = $"{rec.Lon},{rec.Lat}"; } } catch (Exception ex) { await LogHelper.Error("查询接收站信息出错", ex); DxHelper.MsgBoxHelper.ShowError("查询接收站信息出错"); } } private async void btnOk_Click(object sender, EventArgs e) { try { double x = Convert.ToDouble(txtX1.Text); double y = Convert.ToDouble(txtY1.Text); double z = Convert.ToDouble(txtZ1.Text); var strTar = txtTar.Text.Replace(",", ","); var strRec = txtRec.Text.Replace(",", ","); double lon = Convert.ToDouble(strTar.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[0]); double lat = Convert.ToDouble(strTar.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[1]); double recLon = Convert.ToDouble(strRec.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[0]); double recLat = Convert.ToDouble(strRec.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[1]); var tarEcef = PhysicsHelper.GeoToEcef((lon, lat, 0)); var recEcef = PhysicsHelper.GeoToEcef((recLon, recLat, 0)); var xlEcef1 = (Convert.ToDouble(txtX1.Text.Trim()), Convert.ToDouble(txtY1.Text.Trim()), Convert.ToDouble(txtZ1.Text.Trim())); var x2Ecef1 = (Convert.ToDouble(txtX2.Text.Trim()), Convert.ToDouble(txtY2.Text.Trim()), Convert.ToDouble(txtZ2.Text.Trim())); double x3 = 0, y3 = 0, z3 = 0; if (!string.IsNullOrWhiteSpace(txtX3.Text)) { x3 = Convert.ToDouble(txtX3.Text.Trim()); y3 = Convert.ToDouble(txtY3.Text.Trim()); z3 = Convert.ToDouble(txtZ3.Text.Trim()); } var dt1 = PhysicsHelper.Dto(tarEcef, xlEcef1, recEcef); var dt2 = PhysicsHelper.Dto(tarEcef, x2Ecef1, recEcef); if (x3 != 0) { var dt3 = PhysicsHelper.Dto(tarEcef, (x3, y3, z3), recEcef); this.txtRes.Text = $"主邻1时差预测值:{dt1 * 1e6 - dt2 * 1e6:f3}us 主邻2时差预测值:{dt1 * 1e6 - dt3 * 1e6:f3}us"; } else { this.txtRes.Text = $"主邻1时差预测值:{dt1 * 1e6 - dt2 * 1e6:f3}us"; } } catch (Exception ex) { await LogHelper.Error("时差预测出错", ex); DxHelper.MsgBoxHelper.ShowError("时差预测出错"); } } } }