| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 | using DevExpress.XtraMap;using ExtensionsDev;using System;using System.Data;using System.Linq;using System.Collections.Generic;using XdCxRhDW.Repostory.Model;using XdCxRhDW.Repostory.EFContext;using XdCxRhDW.Core.Api;namespace XdCxRhDW.App.UserControl{    public partial class X1D1GDOPParam : DevExpress.XtraEditors.XtraUserControl    {        public MapControl mapControl1;        public GDOP星地一星一地接口 Model => new GDOP星地一星一地接口()        {            TleMain = txtTleMain.Text.Trim(),            CapTime = txtCapTime.DateTime,            StationLon = Convert.ToDouble(txtStationLocation1.Text.Replace(",", ",").Split(',')[0].Trim()),            StationLat = Convert.ToDouble(txtStationLocation1.Text.Replace(",", ",").Split(',')[1].Trim()),            CXLon = Convert.ToDouble(txtCXStation.Text.Replace(",", ",").Split(',')[0].Trim()),            CXLat = Convert.ToDouble(txtCXStation.Text.Replace(",", ",").Split(',')[1].Trim()),            RefLon = Convert.ToDouble(txtRefLocation1.Text.Replace(",", ",").Split(',')[0].Trim()),            RefLat = Convert.ToDouble(txtRefLocation1.Text.Replace(",", ",").Split(',')[1].Trim()),            DtousErr = Convert.ToDouble(txtDtousErr1.Text),            SatLocErr = Convert.ToDouble(txtSatLocErr1.Text),            CXErr= Convert.ToDouble(txtCxErr.Text),        };        public X1D1GDOPParam(PosRes item)        {            InitializeComponent();            txtCapTime.UseDefault();            txtTleMain.UseDoubleClickToSelectAll();            txtStationLocation1.UseDoubleClickToSelectAll();            txtRefLocation1.UseDoubleClickToSelectAll();            txtCXStation.UseDoubleClickToSelectAll();            this.txtCapTime.DateTime = item.SigTime;            this.txtDtousErr1.EditValue = 1;            this.txtSatLocErr1.EditValue = 1000;            this.txtCxErr.EditValue = 0.001;            List<string> xlall = new List<string>();            string mainTle = string.Empty;            string adjaTle = string.Empty;            using (RHDWContext db = new RHDWContext())            {                var sats = db.SatInfos.ToList();                var cg = db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefault();                var station = db.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefault();                if (station != null)                {                    this.txtStationLocation1.Text = $"{station.CdbTxLon},{station.CdbTxLat}";                    this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";                    this.txtCXStation.Text= $"{station.CxLon},{station.CxLat}";                }                var xlList = db.XlInfos.OrderBy(p => p.SatName).OrderByDescending(p => p.TimeBJ).ToList();                xlall.AddRange(xlList.Select(m => m.TwoLine));                if (xlall.Count() == 0) return;                if (cg.MainCode.HasValue && xlList.Any(m => m.SatCode == cg.MainCode.Value))                {                    mainTle = xlList.First(m => m.SatCode == cg.MainCode.Value).TwoLine;                }                else                {                    mainTle = xlList.First().TwoLine;                }            }            txtTleMain.UseDefault().SetStringData(xlall).Text = mainTle;        }        private void btnOK_Click(object sender, EventArgs e)        {            mapControl1.ClearMap();            var cdb = new double[] { Model.StationLon, Model.StationLat, 0 };            var cx = new double[] { Model.StationLon, Model.StationLat, 0 };            var refstation = new double[] { Model.RefLon, Model.RefLat, 0 };            var (listSat, data) = GdopHelper.Gdop1Sat1D(Model.TleMain, Model.CapTime, cdb, cx,                             Model.DtousErr,Model.CXErr, Model.SatLocErr, refstation);            if (data == null)            {                return;            }            foreach (var errLins in data)//画GDOP            {                var mapDots = errLins.MapDots.Select(p => p).Select(p => (p.Lon, p.Lat));                mapControl1.DrawGdopLineTwo(errLins.ErrDistanceKm, mapDots, 1);            }        }        private void btnClose_Click(object sender, EventArgs e)        {            DxHelper.PopupHelper.HidePopup(this);        }    }    public class GDOP星地一星一地接口    {        /// <summary>        /// 主星星历(Tle)        /// </summary>        public string TleMain { get; set; }        /// <summary>        /// 采集时刻        /// </summary>        public DateTime CapTime { get; set; }        /// <summary>        /// 超短接收站-经度        /// </summary>        public double StationLon { get; set; }        /// <summary>        /// 超短接收站-纬度        /// </summary>        public double StationLat { get; set; }        /// <summary>        /// 参考站位置经度        /// </summary>        public double RefLon { get; set; }        /// <summary>        /// 参考站位置纬度        /// </summary>        public double RefLat { get; set; }        /// <summary>        /// 测向站位置经度        /// </summary>        public double CXLon { get; set; }        /// <summary>        ///测向站位置纬度        /// </summary>        public double CXLat { get; set; }        /// <summary>        /// 时差误差(单位us)        /// </summary>        public double DtousErr { get; set; } = 1;        /// <summary>        /// 星历位置误差(单位米)        /// </summary>        public double SatLocErr { get; set; } = 10000;        /// <summary>        /// 测向误差(单位°)        /// </summary>        public double CXErr { get; set; } = 0.01;    }}
 |