wyq %!s(int64=2) %!d(string=hai) anos
pai
achega
07417a6f79

+ 39 - 0
XdCxRhDW.App/DxHelper/EnumExtension.cs

@@ -0,0 +1,39 @@
+using DevExpress.XtraEditors;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using XdCxRhDW.App.Model;
+
+namespace DxHelper
+{
+    /// <summary>
+    /// 枚举扩展
+    /// </summary>
+    public static class EnumExtension
+    {
+        /// <summary>
+        /// 获取枚举描述
+        /// </summary>
+        /// <param name="enumType">枚举类型</param>
+        /// <returns></returns>
+        public static string GetEnumDisplayName(this Enum enumType)
+        {
+            try
+            {
+                Type type = enumType.GetType();
+                var field = type.GetField(Enum.GetName(type, enumType));
+                string displayName = field.GetCustomAttribute<DisplayAttribute>().Name;
+                return displayName;
+            }
+            catch
+            {
+                return string.Empty;
+            }
+           
+        }
+    }
+}

+ 0 - 1
XdCxRhDW.App/MainForm.Designer.cs

@@ -28,7 +28,6 @@
         /// </summary>
         private void InitializeComponent()
         {
-            this.components = new System.ComponentModel.Container();
             this.components = new System.ComponentModel.Container();
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
             DevExpress.Utils.SuperToolTip superToolTip2 = new DevExpress.Utils.SuperToolTip();

+ 0 - 0
XdCxRhDW.App/Properties/licenses.licx


+ 315 - 162
XdCxRhDW.App/UserControl/CtrlHome.cs

@@ -1,48 +1,30 @@
-using DevExpress.Mvvm.DataAnnotations;
-using DevExpress.Utils;
-using DevExpress.Utils.Design;
+using DevExpress.Utils;
 using DevExpress.Utils.Drawing;
+using DevExpress.Utils.Drawing.Helpers;
 using DevExpress.Utils.Svg;
-using DevExpress.XtraEditors;
 using DevExpress.XtraEditors.ButtonsPanelControl;
-using DevExpress.XtraEditors.Controls;
-using DevExpress.XtraEditors.Repository;
-using DevExpress.XtraGrid.Columns;
 using DevExpress.XtraGrid.Views.Grid;
 using DevExpress.XtraGrid.Views.Grid.ViewInfo;
+using DevExpress.XtraTreeList.Data;
 using DxHelper;
-using XdCxRhDW.App.EFContext;
-using XdCxRhDW.App.Model;
+using Microsoft.Owin.Hosting;
 using System;
 using System.Collections.Generic;
-using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
 using System.Data;
+using System.Data.Entity;
 using System.Drawing;
 using System.Linq;
-using System.Security.Cryptography;
+using System.Reflection;
 using System.Text;
-using System.Threading.Tasks;
 using System.Windows.Forms;
-using XdCxRhDW.App.EditForms;
-using System.Data.Entity;
-using DevExpress.XtraBars.Customization;
-using System.Reflection;
-using System.Net.Sockets;
-using System.Net;
-using DevExpress.XtraCharts.Native;
-using System.Threading;
-using XdCxRhDW.Dto;
 using XdCxRhDW.App.Api;
-using System.Windows.Controls;
-using XdCxRhDW.App.WebAPI;
-using Microsoft.Owin.Hosting;
-using XdCxRhDW.App.App.Properties;
-using System.Web.Http;
-using System.Data.Entity.Migrations;
 using XdCxRhDW.App.Api.时差线;
-using System.Windows.Documents;
+using XdCxRhDW.App.EditForms;
+using XdCxRhDW.App.EFContext;
+using XdCxRhDW.App.Model;
+using XdCxRhDW.App.WebAPI;
+using XdCxRhDW.Dto;
 
 namespace XdCxRhDW.App.UserControl
 {
@@ -161,12 +143,23 @@ namespace XdCxRhDW.App.UserControl
 
                 mapControl1.AddPosMenu<PosRes>("绘制时差线", SvgHelper.LoadFromFile("Image\\DtoLine.svg"), item =>
                 {
-                    Draw2X1DDtoLine(item);
+                    var posType = GetPosRes(item, "绘制时差线");
+                    DrawDtoLine(item, posType);
+                })
+                .AddPosMenu<PosRes>("绘制频差线", SvgHelper.LoadFromFile("Image\\DfoLine.svg"), item =>
+                {
+                    var posType = GetPosRes(item, "绘制频差线");
+                    DrawDfoLine(item, posType);
                 })
-               .AddPosMenu<PosRes>("绘制频差线", SvgHelper.LoadFromFile("Image\\DfoLine.svg"), item =>
-                      {
-                          // DrawDfoLine(item);
-                      });
+               .AddPosMenu<PosRes>("绘制GDOP", SvgHelper.LoadFromFile("Image\\GDOP.svg"), item =>
+                {
+                    var posType = GetPosRes(item, "绘制GDOP");
+                    DrawGDOP(item.SigTime, posType);
+                })
+                 .AddPosMenu<PosRes>("绘制测向线", btnDrawCX.ImageOptions.SvgImage, item =>
+                  {
+                      DrawCXLine(item);
+                  });
 
             }
             catch (Exception ex)
@@ -205,83 +198,6 @@ namespace XdCxRhDW.App.UserControl
         }
 
 
-        private async void Draw2X1DDtoLine(PosRes item)
-        {
-            try
-            {
-                List<TxInfo> listTx = new List<TxInfo>();
-                List<SatInfo> listSat = new List<SatInfo>();
-                CgRes cg;
-                using (RHDWContext db = new RHDWContext())
-                {
-                    listTx = db.TxInfos.ToList();
-                    listSat = db.SatInfos.ToList();
-                    cg = await db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefaultAsync();
-
-                }
-                if (cg == null)
-                {
-                    DxHelper.MsgBoxHelper.ShowWarning($"未找到定位相关的计算[{item.CgResID}]信息");
-                    return;
-                }
-
-                var satTx = listTx.Find(p => p.TxType == EnumTxType.MainSat);
-                if (satTx == null)
-                {
-                    DxHelper.MsgBoxHelper.ShowWarning($"主星天线信息为空!");
-                    return;
-                }
-                var satNTx = listTx.Find(p => p.TxType == EnumTxType.AdjaSat);
-                if (satNTx == null)
-                {
-                    DxHelper.MsgBoxHelper.ShowWarning($"邻星天线信息为空!");
-                    return;
-                }
-                var cdbTx = listTx.Find(p => p.TxType == EnumTxType.Cdb);
-                if (cdbTx == null)
-                {
-                    DxHelper.MsgBoxHelper.ShowWarning($"超短波信息为空!");
-                    return;
-                }
-                var refTx = listTx.Find(p => p.TxType == EnumTxType.Ref);
-                if (refTx == null)
-                {
-                    DxHelper.MsgBoxHelper.ShowWarning($"参考站信息为空!");
-                    return;
-                }
-                DtoLineXdOption dtoLineXd = new DtoLineXdOption();
-                dtoLineXd.MsEph = new double[] { cg.MainX, cg.MainY, cg.MainZ, 0, 0, 0 };
-                dtoLineXd.MsAnt = new double[] { satTx.Lon, satTx.Lat, 0 };
-                dtoLineXd.CDBAnt = new double[] { cdbTx.Lon, cdbTx.Lat, 0 };
-                dtoLineXd.RefGeod = new double[] { refTx.Lon, refTx.Lat, 0 };
-                dtoLineXd.xdDto = cg.DtoCdb;
-                dtoLineXd.RefDto = cg.YbMain;
-                dtoLineXd.PosLon = item.PosLon;
-                dtoLineXd.PosLat = item.PosLat;
-                var xdDtoLine = DrawDtoLineHelper.DtoLineXd(dtoLineXd);
-                mapControl1.DrawDtoPonit($"星地[{listSat.FirstOrDefault(m => m.ID == satTx.ID)?.Sat},{listSat.FirstOrDefault(m => m.ID == cdbTx.ID)?.Sat}]时差线", xdDtoLine);
-
-                DtoLineTwoStartOption twoStartOption = new DtoLineTwoStartOption();
-                twoStartOption.MsEph = new double[] { cg.MainX, cg.MainY, cg.MainZ, 0, 0, 0 };
-                twoStartOption.NsEph = new double[] { cg.AdjaX, cg.AdjaY, cg.AdjaZ, 0, 0, 0 };
-                twoStartOption.MsAnt = new double[] { satTx.Lon, satTx.Lat, 0 };
-                twoStartOption.NsAnt = new double[] { satNTx.Lon, satNTx.Lat, 0 };
-                twoStartOption.RefGeod = new double[] { refTx.Lon, refTx.Lat, 0 };
-                twoStartOption.TargetDto = cg.DtoSx;
-                twoStartOption.RefDto = cg.YbMain - cg.YbAdja;
-                twoStartOption.PosLon = item.PosLon;
-                twoStartOption.PosLat = item.PosLat;
-                var tsDtoLine = DrawDtoLineHelper.DtoLineXDTwoStart(twoStartOption);
-                mapControl1.DrawDtoPonit($"双星[{listSat.FirstOrDefault(m => m.ID == satTx.ID)?.Sat},{listSat.FirstOrDefault(m => m.ID == satNTx.ID)?.Sat}]时差线", tsDtoLine);
-
-
-            }
-            catch (Exception ex)
-            {
-                Serilog.Log.Error("绘制时差线失败", ex);
-                DxHelper.MsgBoxHelper.ShowWarning($"绘制时差线失败,失败信息:{ex.Message}");
-            }
-        }
 
         private void GridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
         {
@@ -736,38 +652,13 @@ namespace XdCxRhDW.App.UserControl
             }
         }
 
-        private async void btnDrawDto_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        private void btnDrawDto_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             var info = GetPosRes("绘制时差");
             var posRes = info.Item1;
             if (posRes == null) return;
             var posType = info.Item2;
-            await Task.Run(() =>
-            {
-                try
-                {
-                    switch (posType)
-                    {
-                        case EnumPosType.X1D1CX:
-                            throw new Exception("未实现一星一地类型绘制时差线");
-                            break;
-                        case EnumPosType.X2D1:
-                            Draw2X1DDtoLine(posRes);
-                            break;
-                        case EnumPosType.RH:
-                            throw new Exception("未实现融合类型绘制时差线");
-                            break;
-                        default:
-                            break;
-                    }
-                }
-                catch (Exception ex)
-                {
-                    this.Invoke(new Action(() => DxHelper.MsgBoxHelper.ShowWarning($"绘制时差线失败,{ex.Message}")));
-
-                }
-
-            });
+            DrawDtoLine(posRes, posType);
         }
         private (PosRes, EnumPosType) GetPosRes(string msg)
         {
@@ -781,53 +672,315 @@ namespace XdCxRhDW.App.UserControl
             var taskInfo = list.Find(m => m.ID == item.TaskID);
             if (taskInfo == null)
             {
-                DxHelper.MsgBoxHelper.ShowWarning($"未找到任务[{item.TaskID}]!");
+                DxHelper.MsgBoxHelper.ShowWarning($"{msg}未找到任务[{item.TaskID}]!");
                 return (null, default);
             }
             return (item, taskInfo.PosType);
         }
+        private EnumPosType GetPosRes(PosRes posRes, string msg)
+        {
+            var taskInfo = list.Find(m => m.ID == posRes.TaskID);
+            if (taskInfo == null)
+            {
+                DxHelper.MsgBoxHelper.ShowWarning($"{msg}未找到任务[{posRes.TaskID}]!");
+                return default;
+            }
+            return taskInfo.PosType;
+        }
 
         private void btnDrawDfo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
-            DxHelper.MsgBoxHelper.ShowWarning("未实现");
+            var info = GetPosRes("绘制频差");
+            var posRes = info.Item1;
+            if (posRes == null) return;
+            var posType = info.Item2;
+            DrawDfoLine(posRes, posType);
         }
 
         private void btnDrawCX_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
-            DxHelper.MsgBoxHelper.ShowWarning("未实现");
+
+            var ids = gridView2.GetSelectedRows();
+            if (ids.Length <= 0)
+            {
+                DxHelper.MsgBoxHelper.ShowWarning($"请选择需要绘制测向线的定位数据信息!");
+                return;
+            }
+            var item = gridView2.GetRow(ids[0]) as PosRes;
+            DrawCXLine(item);
         }
 
-        private  void btnGDOP_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        private void btnGDOP_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             var info = GetPosRes("绘制GDOP");
             var posRes = info.Item1;
             if (posRes == null) return;
             var posType = info.Item2;
-           
-                try
+            DrawGDOP(posRes.SigTime, posType);
+        }
+
+        private void DrawGDOP(DateTime sigTime, EnumPosType posType)
+        {
+            try
+            {
+                switch (posType)
                 {
-                    switch (posType)
-                    {
-                        case EnumPosType.X1D1CX:
-                            throw new Exception("未实现一星一地类型绘制GDOP");
-                            break;
-                        case EnumPosType.X2D1:
-                            X2D1GDOPParam x2D1GdopParam = new X2D1GDOPParam(posRes.SigTime);
-                            x2D1GdopParam.mapControl1 = mapControl1;
-                            DxHelper.PopupHelper.ShowPopup(x2D1GdopParam, mapControl1, mapControl1.Width / 4);
-                            break;
-                        case EnumPosType.RH:
-                            throw new Exception("未实现融合类型绘制GDOP");
-                            break;
-                        default:
-                            break;
-                    }
+                    case EnumPosType.X1D1CX:
+                        X1D1GDOPParam x1D1GdopParam = new X1D1GDOPParam(sigTime);
+                        x1D1GdopParam.mapControl1 = mapControl1;
+                        DxHelper.PopupHelper.ShowPopup(x1D1GdopParam, mapControl1, mapControl1.Width / 4);
+                        break;
+                    case EnumPosType.X2D1:
+                        X2D1GDOPParam x2D1GdopParam = new X2D1GDOPParam(sigTime);
+                        x2D1GdopParam.mapControl1 = mapControl1;
+                        DxHelper.PopupHelper.ShowPopup(x2D1GdopParam, mapControl1, mapControl1.Width / 4);
+                        break;
+                    case EnumPosType.RH:
+                        GDOPParam gdopParam = new GDOPParam(sigTime);
+                        gdopParam.mapControl1 = mapControl1;
+                        DxHelper.PopupHelper.ShowPopup(gdopParam, mapControl1, mapControl1.Width / 4);
+                        break;
+                    default:
+                        break;
                 }
-                catch (Exception ex)
+            }
+            catch (Exception ex)
+            {
+                DxHelper.MsgBoxHelper.ShowWarning($"绘制{posType.GetEnumDisplayName()}GDOP失败,{ex.Message}");
+
+            }
+        }
+
+        private void DrawDtoLine(PosRes item, EnumPosType posType)
+        {
+
+            switch (posType)
+            {
+                case EnumPosType.X1D1CX:
+                case EnumPosType.X2D1:
+                    DrawXDtoLine(item, posType);
+                    break;
+                case EnumPosType.RH:
+                    DrawXDtoLine(item, EnumPosType.X1D1CX);
+                    DrawXDtoLine(item, EnumPosType.X2D1);
+                    break;
+                default:
+                    break;
+            }
+
+        }
+
+        private async void DrawXDtoLine(PosRes item, EnumPosType posType)
+        {
+            try
+            {
+                List<TxInfo> listTx = new List<TxInfo>();
+                List<SatInfo> listSat = new List<SatInfo>();
+                CgRes cg;
+                using (RHDWContext db = new RHDWContext())
                 {
-                    DxHelper.MsgBoxHelper.ShowWarning($"绘制GDOP失败,{ex.Message}");
+                    listTx = db.TxInfos.ToList();
+                    listSat = db.SatInfos.ToList();
+                    cg = await db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefaultAsync();
 
                 }
+                if (cg == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"未找到定位相关的计算[{item.CgResID}]信息");
+                    return;
+                }
+
+                var satTx = listTx.Find(p => p.TxType == EnumTxType.MainSat);
+                if (satTx == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"主星天线信息为空!");
+                    return;
+                }
+                var satNTx = listTx.Find(p => p.TxType == EnumTxType.AdjaSat);
+                if (posType == EnumPosType.X2D1 && satNTx == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"邻星天线信息为空!");
+                    return;
+                }
+                var cdbTx = listTx.Find(p => p.TxType == EnumTxType.Cdb);
+                if (cdbTx == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"超短波信息为空!");
+                    return;
+                }
+                var refTx = listTx.Find(p => p.TxType == EnumTxType.Ref);
+                if (refTx == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"参考站信息为空!");
+                    return;
+                }
+                DtoLineXdOption dtoLineXd = new DtoLineXdOption();
+                dtoLineXd.MsEph = new double[] { cg.MainX, cg.MainY, cg.MainZ, 0, 0, 0 };
+                dtoLineXd.MsAnt = new double[] { satTx.Lon, satTx.Lat, 0 };
+                dtoLineXd.CDBAnt = new double[] { cdbTx.Lon, cdbTx.Lat, 0 };
+                dtoLineXd.RefGeod = new double[] { refTx.Lon, refTx.Lat, 0 };
+                dtoLineXd.xdDto = cg.DtoCdb;
+                dtoLineXd.RefDto = cg.YbMain;
+                dtoLineXd.PosLon = item.PosLon;
+                dtoLineXd.PosLat = item.PosLat;
+                var xdDtoLine = DrawDtoLineHelper.DtoLineXd(dtoLineXd);
+                mapControl1.DrawDtoPonit($"星地[{listSat.FirstOrDefault(m => m.ID == satTx.ID)?.Sat},{listSat.FirstOrDefault(m => m.ID == cdbTx.ID)?.Sat}]时差线", xdDtoLine);
+
+                if (posType == EnumPosType.X2D1)
+                {
+                    DtoLineTwoStartOption twoStartOption = new DtoLineTwoStartOption();
+                    twoStartOption.MsEph = new double[] { cg.MainX, cg.MainY, cg.MainZ, 0, 0, 0 };
+                    twoStartOption.NsEph = new double[] { cg.AdjaX, cg.AdjaY, cg.AdjaZ, 0, 0, 0 };
+                    twoStartOption.MsAnt = new double[] { satTx.Lon, satTx.Lat, 0 };
+                    twoStartOption.NsAnt = new double[] { satNTx.Lon, satNTx.Lat, 0 };
+                    twoStartOption.RefGeod = new double[] { refTx.Lon, refTx.Lat, 0 };
+                    twoStartOption.TargetDto = cg.DtoSx;
+                    twoStartOption.RefDto = cg.YbMain - cg.YbAdja;
+                    twoStartOption.PosLon = item.PosLon;
+                    twoStartOption.PosLat = item.PosLat;
+                    var tsDtoLine = DrawDtoLineHelper.DtoLineXDTwoStart(twoStartOption);
+                    mapControl1.DrawDtoPonit($"双星[{listSat.FirstOrDefault(m => m.ID == satTx.ID)?.Sat},{listSat.FirstOrDefault(m => m.ID == satNTx.ID)?.Sat}]时差线", tsDtoLine);
+                }
+            }
+            catch (Exception ex)
+            {
+                Serilog.Log.Error($"绘制{posType.GetEnumDisplayName()}时差线失败", ex);
+                DxHelper.MsgBoxHelper.ShowWarning($"绘制{posType.GetEnumDisplayName()}时差线失败,失败信息:{ex.Message}");
+            }
+        }
+        private void DrawDfoLine(PosRes item, EnumPosType posType)
+        {
+            switch (posType)
+            {
+                case EnumPosType.X1D1CX:
+                case EnumPosType.X2D1:
+                    DrawXDfoLine(item, posType);
+                    break;
+                case EnumPosType.RH:
+                    DrawXDfoLine(item, EnumPosType.X1D1CX);
+                    DrawXDfoLine(item, EnumPosType.X2D1);
+                    break;
+                default:
+                    break;
+            }
+
+        }
+        private async void DrawXDfoLine(PosRes item, EnumPosType posType)
+        {
+            try
+            {
+                List<TxInfo> listTx = new List<TxInfo>();
+                List<SatInfo> listSat = new List<SatInfo>();
+                CgRes cg;
+                using (RHDWContext db = new RHDWContext())
+                {
+                    listTx = db.TxInfos.ToList();
+                    listSat = db.SatInfos.ToList();
+                    cg = await db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefaultAsync();
+
+                }
+                if (cg == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"未找到定位相关的计算[{item.CgResID}]信息");
+                    return;
+                }
+
+                var satTx = listTx.Find(p => p.TxType == EnumTxType.MainSat);
+                if (satTx == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"主星天线信息为空!");
+                    return;
+                }
+                var satNTx = listTx.Find(p => p.TxType == EnumTxType.AdjaSat);
+                if (posType == EnumPosType.X2D1 && satNTx == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"邻星天线信息为空!");
+                    return;
+                }
+                var cdbTx = listTx.Find(p => p.TxType == EnumTxType.Cdb);
+                if (cdbTx == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"超短波信息为空!");
+                    return;
+                }
+                var refTx = listTx.Find(p => p.TxType == EnumTxType.Ref);
+                if (refTx == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"参考站信息为空!");
+                    return;
+                }
+                DtoLineXdOption dtoLineXd = new DtoLineXdOption();
+                dtoLineXd.MsEph = new double[] { cg.MainX, cg.MainY, cg.MainZ, 0, 0, 0 };
+                dtoLineXd.MsAnt = new double[] { satTx.Lon, satTx.Lat, 0 };
+                dtoLineXd.CDBAnt = new double[] { cdbTx.Lon, cdbTx.Lat, 0 };
+                dtoLineXd.RefGeod = new double[] { refTx.Lon, refTx.Lat, 0 };
+                dtoLineXd.xdDto = cg.DtoCdb;
+                dtoLineXd.RefDto = cg.YbMain;
+                dtoLineXd.PosLon = item.PosLon;
+                dtoLineXd.PosLat = item.PosLat;
+                var xdDtoLine = DrawDtoLineHelper.DtoLineXd(dtoLineXd);
+                mapControl1.DrawDtoPonit($"星地[{listSat.FirstOrDefault(m => m.ID == satTx.ID)?.Sat},{listSat.FirstOrDefault(m => m.ID == cdbTx.ID)?.Sat}]时差线", xdDtoLine);
+
+                if (posType == EnumPosType.X2D1)
+                {
+                    DtoLineTwoStartOption twoStartOption = new DtoLineTwoStartOption();
+                    twoStartOption.MsEph = new double[] { cg.MainX, cg.MainY, cg.MainZ, 0, 0, 0 };
+                    twoStartOption.NsEph = new double[] { cg.AdjaX, cg.AdjaY, cg.AdjaZ, 0, 0, 0 };
+                    twoStartOption.MsAnt = new double[] { satTx.Lon, satTx.Lat, 0 };
+                    twoStartOption.NsAnt = new double[] { satNTx.Lon, satNTx.Lat, 0 };
+                    twoStartOption.RefGeod = new double[] { refTx.Lon, refTx.Lat, 0 };
+                    twoStartOption.TargetDto = cg.DtoSx;
+                    twoStartOption.RefDto = cg.YbMain - cg.YbAdja;
+                    twoStartOption.PosLon = item.PosLon;
+                    twoStartOption.PosLat = item.PosLat;
+                    var tsDtoLine = DrawDtoLineHelper.DtoLineXDTwoStart(twoStartOption);
+                    mapControl1.DrawDtoPonit($"双星[{listSat.FirstOrDefault(m => m.ID == satTx.ID)?.Sat},{listSat.FirstOrDefault(m => m.ID == satNTx.ID)?.Sat}]时差线", tsDtoLine);
+                }
+            }
+            catch (Exception ex)
+            {
+                Serilog.Log.Error($"绘制{posType.GetEnumDisplayName()}频差线失败", ex);
+                DxHelper.MsgBoxHelper.ShowWarning($"绘制{posType.GetEnumDisplayName()}频差线失败,失败信息:{ex.Message}");
+            }
+        }
+        private async void DrawCXLine(PosRes item)
+        {
+            if (!item.CxResID.HasValue)
+            {
+                DxHelper.MsgBoxHelper.ShowWarning($"绘制测向线未有测向编号!");
+                return;
+            }
+            try
+            {
+                List<TxInfo> listTx = new List<TxInfo>();
+                CxRes cx;
+                using (RHDWContext db = new RHDWContext())
+                {
+                    listTx = db.TxInfos.ToList();
+                    cx = await db.CxRes.Where(m => m.ID == item.CxResID.Value).FirstOrDefaultAsync();
+
+                }
+                if (cx == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"未找到定位相关的测向[{item.CxResID.Value}]信息");
+                    return;
+                }
+                var satTx = listTx.Find(p => p.TxType == EnumTxType.MainSat);
+                if (satTx == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"主星天线信息为空!");
+                    return;
+                }
+
+                //mapControl1.DrawDtoPonit($"星地[{listSat.FirstOrDefault(m => m.ID == satTx.ID)?.Sat},{listSat.FirstOrDefault(m => m.ID == cdbTx.ID)?.Sat}]时差线", xdDtoLine);
+
+
+            }
+            catch (Exception ex)
+            {
+                Serilog.Log.Error($"绘制测向线失败", ex);
+                DxHelper.MsgBoxHelper.ShowWarning($"绘制测向线失败,失败信息:{ex.Message}");
+            }
         }
     }
 

+ 486 - 0
XdCxRhDW.App/UserControl/GDOPParam.Designer.cs

@@ -0,0 +1,486 @@
+namespace XdCxRhDW.App.UserControl
+{
+    partial class GDOPParam
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions3 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject9 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject10 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject11 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject12 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions1 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject1 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject2 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject3 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject4 = new DevExpress.Utils.SerializableAppearanceObject();
+            this.layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
+            this.btnX1D1 = new DevExpress.XtraEditors.SimpleButton();
+            this.txtCapTime = new DevExpress.XtraEditors.DateEdit();
+            this.txtStationLocation1 = new DevExpress.XtraEditors.TextEdit();
+            this.txtRefLocation1 = new DevExpress.XtraEditors.TextEdit();
+            this.txtTleMain = new DevExpress.XtraEditors.SearchLookUpEdit();
+            this.searchLookUpEdit1View = new DevExpress.XtraGrid.Views.Grid.GridView();
+            this.txtTleAdja = new DevExpress.XtraEditors.SearchLookUpEdit();
+            this.gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
+            this.txtDtousErr1 = new DevExpress.XtraEditors.ButtonEdit();
+            this.txtSatLocErr1 = new DevExpress.XtraEditors.ButtonEdit();
+            this.btnClose = new DevExpress.XtraEditors.SimpleButton();
+            this.btnX1D2 = new DevExpress.XtraEditors.SimpleButton();
+            this.Root = new DevExpress.XtraLayout.LayoutControlGroup();
+            this.layoutControlItem8 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem9 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem11 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem14 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem13 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
+            this.layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).BeginInit();
+            this.layoutControl1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.txtCapTime.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtCapTime.Properties.CalendarTimeProperties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtStationLocation1.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtRefLocation1.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtTleMain.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.searchLookUpEdit1View)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtTleAdja.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.gridView1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtDtousErr1.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtSatLocErr1.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Root)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem8)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem9)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem11)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem14)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem13)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem4)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem5)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // layoutControl1
+            // 
+            this.layoutControl1.Controls.Add(this.btnX1D1);
+            this.layoutControl1.Controls.Add(this.txtCapTime);
+            this.layoutControl1.Controls.Add(this.txtStationLocation1);
+            this.layoutControl1.Controls.Add(this.txtRefLocation1);
+            this.layoutControl1.Controls.Add(this.txtTleMain);
+            this.layoutControl1.Controls.Add(this.txtTleAdja);
+            this.layoutControl1.Controls.Add(this.txtDtousErr1);
+            this.layoutControl1.Controls.Add(this.txtSatLocErr1);
+            this.layoutControl1.Controls.Add(this.btnClose);
+            this.layoutControl1.Controls.Add(this.btnX1D2);
+            this.layoutControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.layoutControl1.Location = new System.Drawing.Point(0, 0);
+            this.layoutControl1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+            this.layoutControl1.Name = "layoutControl1";
+            this.layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new System.Drawing.Rectangle(993, 379, 650, 400);
+            this.layoutControl1.Root = this.Root;
+            this.layoutControl1.Size = new System.Drawing.Size(345, 390);
+            this.layoutControl1.TabIndex = 0;
+            this.layoutControl1.Text = "layoutControl1";
+            // 
+            // btnX1D1
+            // 
+            this.btnX1D1.Location = new System.Drawing.Point(117, 317);
+            this.btnX1D1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+            this.btnX1D1.Name = "btnX1D1";
+            this.btnX1D1.Size = new System.Drawing.Size(111, 22);
+            this.btnX1D1.StyleController = this.layoutControl1;
+            this.btnX1D1.TabIndex = 12;
+            this.btnX1D1.Text = "一星一地";
+            this.btnX1D1.Click += new System.EventHandler(this.btnX1D1_Click);
+            // 
+            // txtCapTime
+            // 
+            this.txtCapTime.EditValue = null;
+            this.txtCapTime.Location = new System.Drawing.Point(2, 108);
+            this.txtCapTime.Margin = new System.Windows.Forms.Padding(2);
+            this.txtCapTime.MaximumSize = new System.Drawing.Size(0, 22);
+            this.txtCapTime.MinimumSize = new System.Drawing.Size(0, 22);
+            this.txtCapTime.Name = "txtCapTime";
+            this.txtCapTime.Properties.AutoHeight = false;
+            this.txtCapTime.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+            this.txtCapTime.Properties.CalendarTimeProperties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+            this.txtCapTime.Size = new System.Drawing.Size(341, 22);
+            this.txtCapTime.StyleController = this.layoutControl1;
+            this.txtCapTime.TabIndex = 8;
+            // 
+            // txtStationLocation1
+            // 
+            this.txtStationLocation1.EditValue = "";
+            this.txtStationLocation1.Location = new System.Drawing.Point(2, 152);
+            this.txtStationLocation1.Margin = new System.Windows.Forms.Padding(2);
+            this.txtStationLocation1.MaximumSize = new System.Drawing.Size(0, 22);
+            this.txtStationLocation1.MinimumSize = new System.Drawing.Size(0, 22);
+            this.txtStationLocation1.Name = "txtStationLocation1";
+            this.txtStationLocation1.Properties.AutoHeight = false;
+            this.txtStationLocation1.Size = new System.Drawing.Size(341, 22);
+            this.txtStationLocation1.StyleController = this.layoutControl1;
+            this.txtStationLocation1.TabIndex = 11;
+            this.txtStationLocation1.ToolTip = "经度纬度之间用英文逗号隔开";
+            // 
+            // txtRefLocation1
+            // 
+            this.txtRefLocation1.EditValue = "";
+            this.txtRefLocation1.Location = new System.Drawing.Point(2, 196);
+            this.txtRefLocation1.Margin = new System.Windows.Forms.Padding(2);
+            this.txtRefLocation1.MaximumSize = new System.Drawing.Size(0, 22);
+            this.txtRefLocation1.MinimumSize = new System.Drawing.Size(0, 22);
+            this.txtRefLocation1.Name = "txtRefLocation1";
+            this.txtRefLocation1.Properties.AutoHeight = false;
+            this.txtRefLocation1.Size = new System.Drawing.Size(341, 22);
+            this.txtRefLocation1.StyleController = this.layoutControl1;
+            this.txtRefLocation1.TabIndex = 10;
+            this.txtRefLocation1.ToolTip = "经度纬度之间用英文逗号隔开";
+            // 
+            // txtTleMain
+            // 
+            this.txtTleMain.EditValue = "";
+            this.txtTleMain.Location = new System.Drawing.Point(2, 20);
+            this.txtTleMain.Margin = new System.Windows.Forms.Padding(2);
+            this.txtTleMain.MaximumSize = new System.Drawing.Size(0, 22);
+            this.txtTleMain.MinimumSize = new System.Drawing.Size(0, 22);
+            this.txtTleMain.Name = "txtTleMain";
+            this.txtTleMain.Properties.AutoHeight = false;
+            this.txtTleMain.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+            this.txtTleMain.Properties.NullText = "";
+            this.txtTleMain.Properties.PopupSizeable = false;
+            this.txtTleMain.Properties.PopupView = this.searchLookUpEdit1View;
+            this.txtTleMain.Size = new System.Drawing.Size(341, 22);
+            this.txtTleMain.StyleController = this.layoutControl1;
+            this.txtTleMain.TabIndex = 4;
+            this.txtTleMain.ToolTip = "填写卫星的双行根数";
+            // 
+            // searchLookUpEdit1View
+            // 
+            this.searchLookUpEdit1View.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
+            this.searchLookUpEdit1View.Name = "searchLookUpEdit1View";
+            this.searchLookUpEdit1View.OptionsEditForm.PopupEditFormWidth = 430;
+            this.searchLookUpEdit1View.OptionsSelection.EnableAppearanceFocusedCell = false;
+            this.searchLookUpEdit1View.OptionsView.ShowGroupPanel = false;
+            // 
+            // txtTleAdja
+            // 
+            this.txtTleAdja.EditValue = "";
+            this.txtTleAdja.Location = new System.Drawing.Point(2, 64);
+            this.txtTleAdja.Margin = new System.Windows.Forms.Padding(2);
+            this.txtTleAdja.MaximumSize = new System.Drawing.Size(0, 22);
+            this.txtTleAdja.MinimumSize = new System.Drawing.Size(0, 22);
+            this.txtTleAdja.Name = "txtTleAdja";
+            this.txtTleAdja.Properties.AutoHeight = false;
+            this.txtTleAdja.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+            this.txtTleAdja.Properties.NullText = "";
+            this.txtTleAdja.Properties.PopupSizeable = false;
+            this.txtTleAdja.Properties.PopupView = this.gridView1;
+            this.txtTleAdja.Size = new System.Drawing.Size(341, 22);
+            this.txtTleAdja.StyleController = this.layoutControl1;
+            this.txtTleAdja.TabIndex = 5;
+            this.txtTleAdja.ToolTip = "填写卫星的双行根数";
+            // 
+            // gridView1
+            // 
+            this.gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
+            this.gridView1.Name = "gridView1";
+            this.gridView1.OptionsEditForm.PopupEditFormWidth = 430;
+            this.gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;
+            this.gridView1.OptionsView.ShowGroupPanel = false;
+            // 
+            // txtDtousErr1
+            // 
+            this.txtDtousErr1.EditValue = "";
+            this.txtDtousErr1.Location = new System.Drawing.Point(2, 240);
+            this.txtDtousErr1.Margin = new System.Windows.Forms.Padding(2);
+            this.txtDtousErr1.MaximumSize = new System.Drawing.Size(0, 22);
+            this.txtDtousErr1.MinimumSize = new System.Drawing.Size(0, 22);
+            this.txtDtousErr1.Name = "txtDtousErr1";
+            this.txtDtousErr1.Properties.AutoHeight = false;
+            this.txtDtousErr1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "us", -1, false, true, false, editorButtonImageOptions3, new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), serializableAppearanceObject9, serializableAppearanceObject10, serializableAppearanceObject11, serializableAppearanceObject12, "", null, null, DevExpress.Utils.ToolTipAnchor.Default)});
+            this.txtDtousErr1.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+            this.txtDtousErr1.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
+            this.txtDtousErr1.Properties.MaskSettings.Set("mask", "f");
+            this.txtDtousErr1.Size = new System.Drawing.Size(341, 22);
+            this.txtDtousErr1.StyleController = this.layoutControl1;
+            this.txtDtousErr1.TabIndex = 6;
+            this.txtDtousErr1.ToolTip = "ECEF坐标X";
+            // 
+            // txtSatLocErr1
+            // 
+            this.txtSatLocErr1.EditValue = "";
+            this.txtSatLocErr1.Location = new System.Drawing.Point(2, 284);
+            this.txtSatLocErr1.Margin = new System.Windows.Forms.Padding(2);
+            this.txtSatLocErr1.MaximumSize = new System.Drawing.Size(0, 22);
+            this.txtSatLocErr1.MinimumSize = new System.Drawing.Size(0, 22);
+            this.txtSatLocErr1.Name = "txtSatLocErr1";
+            this.txtSatLocErr1.Properties.AutoHeight = false;
+            this.txtSatLocErr1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "m", -1, false, true, false, editorButtonImageOptions1, new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), serializableAppearanceObject1, serializableAppearanceObject2, serializableAppearanceObject3, serializableAppearanceObject4, "", null, null, DevExpress.Utils.ToolTipAnchor.Default)});
+            this.txtSatLocErr1.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+            this.txtSatLocErr1.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
+            this.txtSatLocErr1.Properties.MaskSettings.Set("mask", "f");
+            this.txtSatLocErr1.Size = new System.Drawing.Size(341, 22);
+            this.txtSatLocErr1.StyleController = this.layoutControl1;
+            this.txtSatLocErr1.TabIndex = 6;
+            this.txtSatLocErr1.ToolTip = "ECEF坐标X";
+            // 
+            // btnClose
+            // 
+            this.btnClose.Location = new System.Drawing.Point(2, 317);
+            this.btnClose.Margin = new System.Windows.Forms.Padding(2);
+            this.btnClose.Name = "btnClose";
+            this.btnClose.Size = new System.Drawing.Size(111, 22);
+            this.btnClose.StyleController = this.layoutControl1;
+            this.btnClose.TabIndex = 13;
+            this.btnClose.Text = "关闭";
+            this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
+            // 
+            // btnX1D2
+            // 
+            this.btnX1D2.Location = new System.Drawing.Point(232, 317);
+            this.btnX1D2.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+            this.btnX1D2.Name = "btnX1D2";
+            this.btnX1D2.Size = new System.Drawing.Size(111, 22);
+            this.btnX1D2.StyleController = this.layoutControl1;
+            this.btnX1D2.TabIndex = 12;
+            this.btnX1D2.Text = "一星两地";
+            this.btnX1D2.Click += new System.EventHandler(this.btnX1D2_Click);
+            // 
+            // Root
+            // 
+            this.Root.GroupBordersVisible = false;
+            this.Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] {
+            this.layoutControlItem8,
+            this.layoutControlItem9,
+            this.layoutControlItem11,
+            this.layoutControlItem14,
+            this.layoutControlItem13,
+            this.layoutControlItem4,
+            this.layoutControlItem5,
+            this.layoutControlItem1,
+            this.emptySpaceItem1,
+            this.layoutControlItem2,
+            this.layoutControlItem3});
+            this.Root.Name = "Root";
+            this.Root.Size = new System.Drawing.Size(345, 390);
+            this.Root.TextVisible = false;
+            // 
+            // layoutControlItem8
+            // 
+            this.layoutControlItem8.Control = this.txtTleMain;
+            this.layoutControlItem8.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.layoutControlItem8.Location = new System.Drawing.Point(0, 0);
+            this.layoutControlItem8.Name = "layoutControlItem8";
+            this.layoutControlItem8.Size = new System.Drawing.Size(345, 44);
+            this.layoutControlItem8.Text = "主星星历";
+            this.layoutControlItem8.TextLocation = DevExpress.Utils.Locations.Top;
+            this.layoutControlItem8.TextSize = new System.Drawing.Size(72, 14);
+            // 
+            // layoutControlItem9
+            // 
+            this.layoutControlItem9.Control = this.txtTleAdja;
+            this.layoutControlItem9.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.layoutControlItem9.Location = new System.Drawing.Point(0, 44);
+            this.layoutControlItem9.Name = "layoutControlItem9";
+            this.layoutControlItem9.Size = new System.Drawing.Size(345, 44);
+            this.layoutControlItem9.Text = "邻星星历";
+            this.layoutControlItem9.TextLocation = DevExpress.Utils.Locations.Top;
+            this.layoutControlItem9.TextSize = new System.Drawing.Size(72, 14);
+            // 
+            // layoutControlItem11
+            // 
+            this.layoutControlItem11.Control = this.txtCapTime;
+            this.layoutControlItem11.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.layoutControlItem11.Location = new System.Drawing.Point(0, 88);
+            this.layoutControlItem11.Name = "layoutControlItem11";
+            this.layoutControlItem11.Size = new System.Drawing.Size(345, 44);
+            this.layoutControlItem11.Text = "采集时刻";
+            this.layoutControlItem11.TextLocation = DevExpress.Utils.Locations.Top;
+            this.layoutControlItem11.TextSize = new System.Drawing.Size(72, 14);
+            // 
+            // layoutControlItem14
+            // 
+            this.layoutControlItem14.Control = this.txtRefLocation1;
+            this.layoutControlItem14.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.layoutControlItem14.Location = new System.Drawing.Point(0, 176);
+            this.layoutControlItem14.Name = "layoutControlItem14";
+            this.layoutControlItem14.Size = new System.Drawing.Size(345, 44);
+            this.layoutControlItem14.Text = "参考站经纬度";
+            this.layoutControlItem14.TextLocation = DevExpress.Utils.Locations.Top;
+            this.layoutControlItem14.TextSize = new System.Drawing.Size(72, 14);
+            // 
+            // layoutControlItem13
+            // 
+            this.layoutControlItem13.Control = this.txtStationLocation1;
+            this.layoutControlItem13.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.layoutControlItem13.Location = new System.Drawing.Point(0, 132);
+            this.layoutControlItem13.Name = "layoutControlItem13";
+            this.layoutControlItem13.Size = new System.Drawing.Size(345, 44);
+            this.layoutControlItem13.Text = "超短站经纬度";
+            this.layoutControlItem13.TextLocation = DevExpress.Utils.Locations.Top;
+            this.layoutControlItem13.TextSize = new System.Drawing.Size(72, 14);
+            // 
+            // layoutControlItem4
+            // 
+            this.layoutControlItem4.Control = this.txtDtousErr1;
+            this.layoutControlItem4.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.layoutControlItem4.CustomizationFormText = "低轨卫星X";
+            this.layoutControlItem4.Location = new System.Drawing.Point(0, 220);
+            this.layoutControlItem4.Name = "layoutControlItem4";
+            this.layoutControlItem4.Size = new System.Drawing.Size(345, 44);
+            this.layoutControlItem4.Text = "时差误差";
+            this.layoutControlItem4.TextLocation = DevExpress.Utils.Locations.Top;
+            this.layoutControlItem4.TextSize = new System.Drawing.Size(72, 14);
+            // 
+            // layoutControlItem5
+            // 
+            this.layoutControlItem5.Control = this.txtSatLocErr1;
+            this.layoutControlItem5.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.layoutControlItem5.CustomizationFormText = "低轨卫星X";
+            this.layoutControlItem5.Location = new System.Drawing.Point(0, 264);
+            this.layoutControlItem5.Name = "layoutControlItem5";
+            this.layoutControlItem5.Size = new System.Drawing.Size(345, 44);
+            this.layoutControlItem5.Text = "星历位置误差";
+            this.layoutControlItem5.TextLocation = DevExpress.Utils.Locations.Top;
+            this.layoutControlItem5.TextSize = new System.Drawing.Size(72, 14);
+            // 
+            // layoutControlItem1
+            // 
+            this.layoutControlItem1.Control = this.btnX1D1;
+            this.layoutControlItem1.Location = new System.Drawing.Point(115, 308);
+            this.layoutControlItem1.Name = "layoutControlItem1";
+            this.layoutControlItem1.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 9, 2);
+            this.layoutControlItem1.Size = new System.Drawing.Size(115, 33);
+            this.layoutControlItem1.TextSize = new System.Drawing.Size(0, 0);
+            this.layoutControlItem1.TextVisible = false;
+            // 
+            // emptySpaceItem1
+            // 
+            this.emptySpaceItem1.AllowHotTrack = false;
+            this.emptySpaceItem1.Location = new System.Drawing.Point(0, 341);
+            this.emptySpaceItem1.Name = "emptySpaceItem1";
+            this.emptySpaceItem1.Size = new System.Drawing.Size(345, 49);
+            this.emptySpaceItem1.TextSize = new System.Drawing.Size(0, 0);
+            // 
+            // layoutControlItem2
+            // 
+            this.layoutControlItem2.Control = this.btnClose;
+            this.layoutControlItem2.Location = new System.Drawing.Point(0, 308);
+            this.layoutControlItem2.Name = "layoutControlItem2";
+            this.layoutControlItem2.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 9, 2);
+            this.layoutControlItem2.Size = new System.Drawing.Size(115, 33);
+            this.layoutControlItem2.TextSize = new System.Drawing.Size(0, 0);
+            this.layoutControlItem2.TextVisible = false;
+            // 
+            // layoutControlItem3
+            // 
+            this.layoutControlItem3.Control = this.btnX1D2;
+            this.layoutControlItem3.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.layoutControlItem3.CustomizationFormText = "layoutControlItem1";
+            this.layoutControlItem3.Location = new System.Drawing.Point(230, 308);
+            this.layoutControlItem3.Name = "layoutControlItem3";
+            this.layoutControlItem3.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 9, 2);
+            this.layoutControlItem3.Size = new System.Drawing.Size(115, 33);
+            this.layoutControlItem3.Text = "layoutControlItem1";
+            this.layoutControlItem3.TextSize = new System.Drawing.Size(0, 0);
+            this.layoutControlItem3.TextVisible = false;
+            // 
+            // GDOPParam
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.layoutControl1);
+            this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+            this.Name = "GDOPParam";
+            this.Size = new System.Drawing.Size(345, 390);
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).EndInit();
+            this.layoutControl1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.txtCapTime.Properties.CalendarTimeProperties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtCapTime.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtStationLocation1.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtRefLocation1.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtTleMain.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.searchLookUpEdit1View)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtTleAdja.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.gridView1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtDtousErr1.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtSatLocErr1.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Root)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem8)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem9)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem11)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem14)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem13)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem4)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem5)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+        private DevExpress.XtraLayout.LayoutControl layoutControl1;
+        private DevExpress.XtraEditors.DateEdit txtCapTime;
+        private DevExpress.XtraEditors.TextEdit txtStationLocation1;
+        private DevExpress.XtraEditors.TextEdit txtRefLocation1;
+        private DevExpress.XtraEditors.SearchLookUpEdit txtTleMain;
+        private DevExpress.XtraGrid.Views.Grid.GridView searchLookUpEdit1View;
+        private DevExpress.XtraEditors.SearchLookUpEdit txtTleAdja;
+        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
+        private DevExpress.XtraEditors.ButtonEdit txtDtousErr1;
+        private DevExpress.XtraEditors.ButtonEdit txtSatLocErr1;
+        private DevExpress.XtraLayout.LayoutControlGroup Root;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem8;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem9;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem11;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem14;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem13;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
+        private DevExpress.XtraEditors.SimpleButton btnX1D1;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
+        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
+        private DevExpress.XtraEditors.SimpleButton btnClose;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
+        private DevExpress.XtraEditors.SimpleButton btnX1D2;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
+    }
+}

+ 172 - 0
XdCxRhDW.App/UserControl/GDOPParam.cs

@@ -0,0 +1,172 @@
+using DevExpress.XtraMap;
+using ExtensionsDev;
+using System;
+using System.Data;
+using System.Linq;
+using XdCxRhDW.App.Model;
+using XdCxRhDW.App.EFContext;
+using XdCxRhDW.App.Api.GDOP误差椭圆;
+using System.Collections.Generic;
+namespace XdCxRhDW.App.UserControl
+{
+    public partial class GDOPParam : DevExpress.XtraEditors.XtraUserControl
+    {
+        public MapControl mapControl1;
+        public GDOP星地接口 Model => new GDOP星地接口()
+        {
+            TleMain = txtTleMain.Text.Trim(),
+            TleAdja = txtTleAdja.Text.Trim(),
+            CapTime = txtCapTime.DateTime,
+            StationLon = Convert.ToDouble(txtStationLocation1.Text.Replace(",", ",").Split(',')[0].Trim()),
+            StationLat = Convert.ToDouble(txtStationLocation1.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),
+        };
+        public GDOPParam(DateTime sigTime)
+        {
+            InitializeComponent();
+            txtCapTime.UseDefault();
+            txtTleMain.UseDoubleClickToSelectAll();
+            txtTleAdja.UseDoubleClickToSelectAll();
+            txtStationLocation1.UseDoubleClickToSelectAll();
+            txtRefLocation1.UseDoubleClickToSelectAll();
+            this.txtCapTime.DateTime = sigTime;
+            this.txtDtousErr1.EditValue = 1;
+            this.txtSatLocErr1.EditValue = 1000;
+            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 list = db.TxInfos.ToList();
+                var mainTx = list.Find(p => p.TxType == EnumTxType.MainSat);
+                var adjaTx = list.Find(p => p.TxType == EnumTxType.AdjaSat);
+                var cdbTx = list.Find(p => p.TxType == EnumTxType.Cdb);
+                if (cdbTx != null)
+                {
+                    this.txtStationLocation1.Text = $"{cdbTx.Lon},{cdbTx.Lat}";
+                }
+                var cxTx = list.Find(p => p.TxType == EnumTxType.Cx);
+                var refLoc = list.Find(p => p.TxType == EnumTxType.Ref);
+                if (refLoc != null)
+                {
+                    this.txtRefLocation1.Text = $"{refLoc.Lon},{refLoc.Lat}";
+                }
+                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 (mainTx != null && xlList.Any(m => m.SatCode == mainTx.SatInfo.SatCode))
+                {
+                    mainTle = xlList.First(m => m.SatCode == mainTx.SatInfo.SatCode).TwoLine;
+                }
+                else
+                {
+                    mainTle = xlList.First().TwoLine;
+                }
+
+                if (adjaTx != null && xlList.Any(m => m.SatCode == adjaTx.SatInfo.SatCode))
+                {
+                    adjaTle = xlList.First(m => m.SatCode == adjaTx.SatInfo.SatCode).TwoLine;
+                }
+                else
+                {
+                    adjaTle = xlList.First().TwoLine;
+                }
+            }
+
+
+            txtTleMain.UseDefault().SetStringData(xlall).Text = mainTle;
+            txtTleAdja.UseDefault().SetStringData(xlall).Text = adjaTle;
+        }
+
+        private void btnClose_Click(object sender, EventArgs e)
+        {
+            DxHelper.PopupHelper.HidePopup(this);
+        }
+
+        private void btnX1D1_Click(object sender, EventArgs e)
+        {
+            mapControl1.ClearMap();
+            var (listSat, data) = GdopHelper.Gdop2Sat1DRef(Model.TleMain, Model.TleAdja, Model.CapTime, new double[] { Model.StationLon, Model.StationLat, 0 },
+                              new double[] { Model.RefLon, Model.RefLat, 0 }, Model.DtousErr, Model.SatLocErr);
+            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 btnX1D2_Click(object sender, EventArgs e)
+        {
+            mapControl1.ClearMap();
+            var (listSat, data) = GdopHelper.Gdop2Sat1DRef(Model.TleMain, Model.TleAdja, Model.CapTime, new double[] { Model.StationLon, Model.StationLat, 0 },
+                              new double[] { Model.RefLon, Model.RefLat, 0 }, Model.DtousErr, Model.SatLocErr);
+            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);
+            }
+        }
+    }
+    public class GDOP星地接口
+    {
+        /// <summary>
+        /// 主星星历(Tle)
+        /// </summary>
+        public string TleMain { get; set; }
+
+        /// <summary>
+        /// 邻星星历(Tle)
+        /// </summary>
+        public string TleAdja { 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>
+        /// 时差误差(单位us)
+        /// </summary>
+        public double DtousErr { get; set; } = 1;
+
+        /// <summary>
+        /// 星历位置误差(单位米)
+        /// </summary>
+        public double SatLocErr { get; set; } = 10000;
+
+    }
+}

+ 120 - 0
XdCxRhDW.App/UserControl/GDOPParam.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 402 - 0
XdCxRhDW.App/UserControl/X1D1GDOPParam.Designer.cs

@@ -0,0 +1,402 @@
+namespace XdCxRhDW.App.UserControl
+{
+    partial class X1D1GDOPParam
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions1 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject1 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject2 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject3 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject4 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions2 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject5 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject6 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject7 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject8 = new DevExpress.Utils.SerializableAppearanceObject();
+            this.layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
+            this.btnOK = new DevExpress.XtraEditors.SimpleButton();
+            this.txtCapTime = new DevExpress.XtraEditors.DateEdit();
+            this.txtStationLocation1 = new DevExpress.XtraEditors.TextEdit();
+            this.txtRefLocation1 = new DevExpress.XtraEditors.TextEdit();
+            this.txtTleMain = new DevExpress.XtraEditors.SearchLookUpEdit();
+            this.searchLookUpEdit1View = new DevExpress.XtraGrid.Views.Grid.GridView();
+            this.txtDtousErr1 = new DevExpress.XtraEditors.ButtonEdit();
+            this.txtSatLocErr1 = new DevExpress.XtraEditors.ButtonEdit();
+            this.btnClose = new DevExpress.XtraEditors.SimpleButton();
+            this.Root = new DevExpress.XtraLayout.LayoutControlGroup();
+            this.layoutControlItem8 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem11 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem14 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem13 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
+            this.layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).BeginInit();
+            this.layoutControl1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.txtCapTime.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtCapTime.Properties.CalendarTimeProperties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtStationLocation1.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtRefLocation1.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtTleMain.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.searchLookUpEdit1View)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtDtousErr1.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtSatLocErr1.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Root)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem8)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem11)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem14)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem13)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem4)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem5)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // layoutControl1
+            // 
+            this.layoutControl1.Controls.Add(this.btnOK);
+            this.layoutControl1.Controls.Add(this.txtCapTime);
+            this.layoutControl1.Controls.Add(this.txtStationLocation1);
+            this.layoutControl1.Controls.Add(this.txtRefLocation1);
+            this.layoutControl1.Controls.Add(this.txtTleMain);
+            this.layoutControl1.Controls.Add(this.txtDtousErr1);
+            this.layoutControl1.Controls.Add(this.txtSatLocErr1);
+            this.layoutControl1.Controls.Add(this.btnClose);
+            this.layoutControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.layoutControl1.Location = new System.Drawing.Point(0, 0);
+            this.layoutControl1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+            this.layoutControl1.Name = "layoutControl1";
+            this.layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new System.Drawing.Rectangle(993, 379, 650, 400);
+            this.layoutControl1.Root = this.Root;
+            this.layoutControl1.Size = new System.Drawing.Size(345, 336);
+            this.layoutControl1.TabIndex = 0;
+            this.layoutControl1.Text = "layoutControl1";
+            // 
+            // btnOK
+            // 
+            this.btnOK.Location = new System.Drawing.Point(174, 273);
+            this.btnOK.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+            this.btnOK.Name = "btnOK";
+            this.btnOK.Size = new System.Drawing.Size(169, 22);
+            this.btnOK.StyleController = this.layoutControl1;
+            this.btnOK.TabIndex = 12;
+            this.btnOK.Text = "确定";
+            this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
+            // 
+            // txtCapTime
+            // 
+            this.txtCapTime.EditValue = null;
+            this.txtCapTime.Location = new System.Drawing.Point(2, 64);
+            this.txtCapTime.Margin = new System.Windows.Forms.Padding(2);
+            this.txtCapTime.MaximumSize = new System.Drawing.Size(0, 22);
+            this.txtCapTime.MinimumSize = new System.Drawing.Size(0, 22);
+            this.txtCapTime.Name = "txtCapTime";
+            this.txtCapTime.Properties.AutoHeight = false;
+            this.txtCapTime.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+            this.txtCapTime.Properties.CalendarTimeProperties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+            this.txtCapTime.Size = new System.Drawing.Size(341, 22);
+            this.txtCapTime.StyleController = this.layoutControl1;
+            this.txtCapTime.TabIndex = 8;
+            // 
+            // txtStationLocation1
+            // 
+            this.txtStationLocation1.EditValue = "";
+            this.txtStationLocation1.Location = new System.Drawing.Point(2, 108);
+            this.txtStationLocation1.Margin = new System.Windows.Forms.Padding(2);
+            this.txtStationLocation1.MaximumSize = new System.Drawing.Size(0, 22);
+            this.txtStationLocation1.MinimumSize = new System.Drawing.Size(0, 22);
+            this.txtStationLocation1.Name = "txtStationLocation1";
+            this.txtStationLocation1.Properties.AutoHeight = false;
+            this.txtStationLocation1.Size = new System.Drawing.Size(341, 22);
+            this.txtStationLocation1.StyleController = this.layoutControl1;
+            this.txtStationLocation1.TabIndex = 11;
+            this.txtStationLocation1.ToolTip = "经度纬度之间用英文逗号隔开";
+            // 
+            // txtRefLocation1
+            // 
+            this.txtRefLocation1.EditValue = "";
+            this.txtRefLocation1.Location = new System.Drawing.Point(2, 152);
+            this.txtRefLocation1.Margin = new System.Windows.Forms.Padding(2);
+            this.txtRefLocation1.MaximumSize = new System.Drawing.Size(0, 22);
+            this.txtRefLocation1.MinimumSize = new System.Drawing.Size(0, 22);
+            this.txtRefLocation1.Name = "txtRefLocation1";
+            this.txtRefLocation1.Properties.AutoHeight = false;
+            this.txtRefLocation1.Size = new System.Drawing.Size(341, 22);
+            this.txtRefLocation1.StyleController = this.layoutControl1;
+            this.txtRefLocation1.TabIndex = 10;
+            this.txtRefLocation1.ToolTip = "经度纬度之间用英文逗号隔开";
+            // 
+            // txtTleMain
+            // 
+            this.txtTleMain.EditValue = "";
+            this.txtTleMain.Location = new System.Drawing.Point(2, 20);
+            this.txtTleMain.Margin = new System.Windows.Forms.Padding(2);
+            this.txtTleMain.MaximumSize = new System.Drawing.Size(0, 22);
+            this.txtTleMain.MinimumSize = new System.Drawing.Size(0, 22);
+            this.txtTleMain.Name = "txtTleMain";
+            this.txtTleMain.Properties.AutoHeight = false;
+            this.txtTleMain.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+            this.txtTleMain.Properties.NullText = "";
+            this.txtTleMain.Properties.PopupSizeable = false;
+            this.txtTleMain.Properties.PopupView = this.searchLookUpEdit1View;
+            this.txtTleMain.Size = new System.Drawing.Size(341, 22);
+            this.txtTleMain.StyleController = this.layoutControl1;
+            this.txtTleMain.TabIndex = 4;
+            this.txtTleMain.ToolTip = "填写卫星的双行根数";
+            // 
+            // searchLookUpEdit1View
+            // 
+            this.searchLookUpEdit1View.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
+            this.searchLookUpEdit1View.Name = "searchLookUpEdit1View";
+            this.searchLookUpEdit1View.OptionsEditForm.PopupEditFormWidth = 430;
+            this.searchLookUpEdit1View.OptionsSelection.EnableAppearanceFocusedCell = false;
+            this.searchLookUpEdit1View.OptionsView.ShowGroupPanel = false;
+            // 
+            // txtDtousErr1
+            // 
+            this.txtDtousErr1.EditValue = "";
+            this.txtDtousErr1.Location = new System.Drawing.Point(2, 196);
+            this.txtDtousErr1.Margin = new System.Windows.Forms.Padding(2);
+            this.txtDtousErr1.MaximumSize = new System.Drawing.Size(0, 22);
+            this.txtDtousErr1.MinimumSize = new System.Drawing.Size(0, 22);
+            this.txtDtousErr1.Name = "txtDtousErr1";
+            this.txtDtousErr1.Properties.AutoHeight = false;
+            this.txtDtousErr1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "us", -1, false, true, false, editorButtonImageOptions1, new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), serializableAppearanceObject1, serializableAppearanceObject2, serializableAppearanceObject3, serializableAppearanceObject4, "", null, null, DevExpress.Utils.ToolTipAnchor.Default)});
+            this.txtDtousErr1.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+            this.txtDtousErr1.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
+            this.txtDtousErr1.Properties.MaskSettings.Set("mask", "f");
+            this.txtDtousErr1.Size = new System.Drawing.Size(341, 22);
+            this.txtDtousErr1.StyleController = this.layoutControl1;
+            this.txtDtousErr1.TabIndex = 6;
+            this.txtDtousErr1.ToolTip = "ECEF坐标X";
+            // 
+            // txtSatLocErr1
+            // 
+            this.txtSatLocErr1.EditValue = "";
+            this.txtSatLocErr1.Location = new System.Drawing.Point(2, 240);
+            this.txtSatLocErr1.Margin = new System.Windows.Forms.Padding(2);
+            this.txtSatLocErr1.MaximumSize = new System.Drawing.Size(0, 22);
+            this.txtSatLocErr1.MinimumSize = new System.Drawing.Size(0, 22);
+            this.txtSatLocErr1.Name = "txtSatLocErr1";
+            this.txtSatLocErr1.Properties.AutoHeight = false;
+            this.txtSatLocErr1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "m", -1, false, true, false, editorButtonImageOptions2, new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), serializableAppearanceObject5, serializableAppearanceObject6, serializableAppearanceObject7, serializableAppearanceObject8, "", null, null, DevExpress.Utils.ToolTipAnchor.Default)});
+            this.txtSatLocErr1.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+            this.txtSatLocErr1.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
+            this.txtSatLocErr1.Properties.MaskSettings.Set("mask", "f");
+            this.txtSatLocErr1.Size = new System.Drawing.Size(341, 22);
+            this.txtSatLocErr1.StyleController = this.layoutControl1;
+            this.txtSatLocErr1.TabIndex = 6;
+            this.txtSatLocErr1.ToolTip = "ECEF坐标X";
+            // 
+            // btnClose
+            // 
+            this.btnClose.Location = new System.Drawing.Point(2, 273);
+            this.btnClose.Margin = new System.Windows.Forms.Padding(2);
+            this.btnClose.Name = "btnClose";
+            this.btnClose.Size = new System.Drawing.Size(168, 22);
+            this.btnClose.StyleController = this.layoutControl1;
+            this.btnClose.TabIndex = 13;
+            this.btnClose.Text = "关闭";
+            this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
+            // 
+            // Root
+            // 
+            this.Root.GroupBordersVisible = false;
+            this.Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] {
+            this.layoutControlItem8,
+            this.layoutControlItem11,
+            this.layoutControlItem14,
+            this.layoutControlItem13,
+            this.layoutControlItem4,
+            this.layoutControlItem5,
+            this.layoutControlItem1,
+            this.emptySpaceItem1,
+            this.layoutControlItem2});
+            this.Root.Name = "Root";
+            this.Root.Size = new System.Drawing.Size(345, 336);
+            this.Root.TextVisible = false;
+            // 
+            // layoutControlItem8
+            // 
+            this.layoutControlItem8.Control = this.txtTleMain;
+            this.layoutControlItem8.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.layoutControlItem8.Location = new System.Drawing.Point(0, 0);
+            this.layoutControlItem8.Name = "layoutControlItem8";
+            this.layoutControlItem8.Size = new System.Drawing.Size(345, 44);
+            this.layoutControlItem8.Text = "主星星历";
+            this.layoutControlItem8.TextLocation = DevExpress.Utils.Locations.Top;
+            this.layoutControlItem8.TextSize = new System.Drawing.Size(72, 14);
+            // 
+            // layoutControlItem11
+            // 
+            this.layoutControlItem11.Control = this.txtCapTime;
+            this.layoutControlItem11.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.layoutControlItem11.Location = new System.Drawing.Point(0, 44);
+            this.layoutControlItem11.Name = "layoutControlItem11";
+            this.layoutControlItem11.Size = new System.Drawing.Size(345, 44);
+            this.layoutControlItem11.Text = "采集时刻";
+            this.layoutControlItem11.TextLocation = DevExpress.Utils.Locations.Top;
+            this.layoutControlItem11.TextSize = new System.Drawing.Size(72, 14);
+            // 
+            // layoutControlItem14
+            // 
+            this.layoutControlItem14.Control = this.txtRefLocation1;
+            this.layoutControlItem14.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.layoutControlItem14.Location = new System.Drawing.Point(0, 132);
+            this.layoutControlItem14.Name = "layoutControlItem14";
+            this.layoutControlItem14.Size = new System.Drawing.Size(345, 44);
+            this.layoutControlItem14.Text = "参考站经纬度";
+            this.layoutControlItem14.TextLocation = DevExpress.Utils.Locations.Top;
+            this.layoutControlItem14.TextSize = new System.Drawing.Size(72, 14);
+            // 
+            // layoutControlItem13
+            // 
+            this.layoutControlItem13.Control = this.txtStationLocation1;
+            this.layoutControlItem13.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.layoutControlItem13.Location = new System.Drawing.Point(0, 88);
+            this.layoutControlItem13.Name = "layoutControlItem13";
+            this.layoutControlItem13.Size = new System.Drawing.Size(345, 44);
+            this.layoutControlItem13.Text = "超短站经纬度";
+            this.layoutControlItem13.TextLocation = DevExpress.Utils.Locations.Top;
+            this.layoutControlItem13.TextSize = new System.Drawing.Size(72, 14);
+            // 
+            // layoutControlItem4
+            // 
+            this.layoutControlItem4.Control = this.txtDtousErr1;
+            this.layoutControlItem4.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.layoutControlItem4.CustomizationFormText = "低轨卫星X";
+            this.layoutControlItem4.Location = new System.Drawing.Point(0, 176);
+            this.layoutControlItem4.Name = "layoutControlItem4";
+            this.layoutControlItem4.Size = new System.Drawing.Size(345, 44);
+            this.layoutControlItem4.Text = "时差误差";
+            this.layoutControlItem4.TextLocation = DevExpress.Utils.Locations.Top;
+            this.layoutControlItem4.TextSize = new System.Drawing.Size(72, 14);
+            // 
+            // layoutControlItem5
+            // 
+            this.layoutControlItem5.Control = this.txtSatLocErr1;
+            this.layoutControlItem5.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.layoutControlItem5.CustomizationFormText = "低轨卫星X";
+            this.layoutControlItem5.Location = new System.Drawing.Point(0, 220);
+            this.layoutControlItem5.Name = "layoutControlItem5";
+            this.layoutControlItem5.Size = new System.Drawing.Size(345, 44);
+            this.layoutControlItem5.Text = "星历位置误差";
+            this.layoutControlItem5.TextLocation = DevExpress.Utils.Locations.Top;
+            this.layoutControlItem5.TextSize = new System.Drawing.Size(72, 14);
+            // 
+            // layoutControlItem1
+            // 
+            this.layoutControlItem1.Control = this.btnOK;
+            this.layoutControlItem1.Location = new System.Drawing.Point(172, 264);
+            this.layoutControlItem1.Name = "layoutControlItem1";
+            this.layoutControlItem1.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 9, 2);
+            this.layoutControlItem1.Size = new System.Drawing.Size(173, 33);
+            this.layoutControlItem1.TextSize = new System.Drawing.Size(0, 0);
+            this.layoutControlItem1.TextVisible = false;
+            // 
+            // emptySpaceItem1
+            // 
+            this.emptySpaceItem1.AllowHotTrack = false;
+            this.emptySpaceItem1.Location = new System.Drawing.Point(0, 297);
+            this.emptySpaceItem1.Name = "emptySpaceItem1";
+            this.emptySpaceItem1.Size = new System.Drawing.Size(345, 39);
+            this.emptySpaceItem1.TextSize = new System.Drawing.Size(0, 0);
+            // 
+            // layoutControlItem2
+            // 
+            this.layoutControlItem2.Control = this.btnClose;
+            this.layoutControlItem2.Location = new System.Drawing.Point(0, 264);
+            this.layoutControlItem2.Name = "layoutControlItem2";
+            this.layoutControlItem2.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 9, 2);
+            this.layoutControlItem2.Size = new System.Drawing.Size(172, 33);
+            this.layoutControlItem2.TextSize = new System.Drawing.Size(0, 0);
+            this.layoutControlItem2.TextVisible = false;
+            // 
+            // X1D1GDOPParam
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.layoutControl1);
+            this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+            this.Name = "X1D1GDOPParam";
+            this.Size = new System.Drawing.Size(345, 336);
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).EndInit();
+            this.layoutControl1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.txtCapTime.Properties.CalendarTimeProperties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtCapTime.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtStationLocation1.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtRefLocation1.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtTleMain.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.searchLookUpEdit1View)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtDtousErr1.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtSatLocErr1.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Root)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem8)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem11)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem14)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem13)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem4)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem5)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+        private DevExpress.XtraLayout.LayoutControl layoutControl1;
+        private DevExpress.XtraEditors.DateEdit txtCapTime;
+        private DevExpress.XtraEditors.TextEdit txtStationLocation1;
+        private DevExpress.XtraEditors.TextEdit txtRefLocation1;
+        private DevExpress.XtraEditors.SearchLookUpEdit txtTleMain;
+        private DevExpress.XtraGrid.Views.Grid.GridView searchLookUpEdit1View;
+        private DevExpress.XtraEditors.ButtonEdit txtDtousErr1;
+        private DevExpress.XtraEditors.ButtonEdit txtSatLocErr1;
+        private DevExpress.XtraLayout.LayoutControlGroup Root;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem8;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem11;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem14;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem13;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
+        private DevExpress.XtraEditors.SimpleButton btnOK;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
+        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
+        private DevExpress.XtraEditors.SimpleButton btnClose;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
+    }
+}

+ 149 - 0
XdCxRhDW.App/UserControl/X1D1GDOPParam.cs

@@ -0,0 +1,149 @@
+using DevExpress.XtraMap;
+using ExtensionsDev;
+using System;
+using System.Data;
+using System.Linq;
+using XdCxRhDW.App.Model;
+using XdCxRhDW.App.EFContext;
+using XdCxRhDW.App.Api.GDOP误差椭圆;
+using System.Collections.Generic;
+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()),
+            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),
+        };
+        public X1D1GDOPParam(DateTime sigTime)
+        {
+            InitializeComponent();
+            txtCapTime.UseDefault();
+            txtTleMain.UseDoubleClickToSelectAll();
+            txtStationLocation1.UseDoubleClickToSelectAll();
+            txtRefLocation1.UseDoubleClickToSelectAll();
+            this.txtCapTime.DateTime = sigTime;
+            this.txtDtousErr1.EditValue = 1;
+            this.txtSatLocErr1.EditValue = 1000;
+            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 list = db.TxInfos.ToList();
+                var mainTx = list.Find(p => p.TxType == EnumTxType.MainSat);
+                var adjaTx = list.Find(p => p.TxType == EnumTxType.AdjaSat);
+                var cdbTx = list.Find(p => p.TxType == EnumTxType.Cdb);
+                if (cdbTx != null)
+                {
+                    this.txtStationLocation1.Text = $"{cdbTx.Lon},{cdbTx.Lat}";
+                }
+                var cxTx = list.Find(p => p.TxType == EnumTxType.Cx);
+                var refLoc = list.Find(p => p.TxType == EnumTxType.Ref);
+                if (refLoc != null)
+                {
+                    this.txtRefLocation1.Text = $"{refLoc.Lon},{refLoc.Lat}";
+                }
+                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 (mainTx != null && xlList.Any(m => m.SatCode == mainTx.SatInfo.SatCode))
+                {
+                    mainTle = xlList.First(m => m.SatCode == mainTx.SatInfo.SatCode).TwoLine;
+                }
+                else
+                {
+                    mainTle = xlList.First().TwoLine;
+                }
+
+                if (adjaTx != null && xlList.Any(m => m.SatCode == adjaTx.SatInfo.SatCode))
+                {
+                    adjaTle = xlList.First(m => m.SatCode == adjaTx.SatInfo.SatCode).TwoLine;
+                }
+                else
+                {
+                    adjaTle = xlList.First().TwoLine;
+                }
+            }
+
+
+            txtTleMain.UseDefault().SetStringData(xlall).Text = mainTle;
+        }
+
+
+
+        private void btnOK_Click(object sender, EventArgs e)
+        {
+            mapControl1.ClearMap();
+            var (listSat, data) = GdopHelper.Gdop2Sat1DRef(Model.TleMain,"", Model.CapTime, new double[] { Model.StationLon, Model.StationLat, 0 },
+                              new double[] { Model.RefLon, Model.RefLat, 0 }, Model.DtousErr, Model.SatLocErr);
+            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>
+        /// 时差误差(单位us)
+        /// </summary>
+        public double DtousErr { get; set; } = 1;
+
+        /// <summary>
+        /// 星历位置误差(单位米)
+        /// </summary>
+        public double SatLocErr { get; set; } = 10000;
+
+    }
+}

+ 120 - 0
XdCxRhDW.App/UserControl/X1D1GDOPParam.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 17 - 29
XdCxRhDW.App/UserControl/X2D1GDOPParam.Designer.cs

@@ -28,16 +28,16 @@
         /// </summary>
         private void InitializeComponent()
         {
+            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions3 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject9 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject10 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject11 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject12 = new DevExpress.Utils.SerializableAppearanceObject();
             DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions1 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
             DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject1 = new DevExpress.Utils.SerializableAppearanceObject();
             DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject2 = new DevExpress.Utils.SerializableAppearanceObject();
             DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject3 = new DevExpress.Utils.SerializableAppearanceObject();
             DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject4 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions2 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject5 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject6 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject7 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject8 = new DevExpress.Utils.SerializableAppearanceObject();
             this.layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
             this.btnOK = new DevExpress.XtraEditors.SimpleButton();
             this.txtCapTime = new DevExpress.XtraEditors.DateEdit();
@@ -60,7 +60,6 @@
             this.layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
             this.layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
             this.emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
-            this.emptySpaceItem2 = new DevExpress.XtraLayout.EmptySpaceItem();
             this.layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).BeginInit();
             this.layoutControl1.SuspendLayout();
@@ -84,7 +83,6 @@
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem5)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem1)).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem2)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).BeginInit();
             this.SuspendLayout();
             // 
@@ -105,7 +103,7 @@
             this.layoutControl1.Name = "layoutControl1";
             this.layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new System.Drawing.Rectangle(993, 379, 650, 400);
             this.layoutControl1.Root = this.Root;
-            this.layoutControl1.Size = new System.Drawing.Size(345, 557);
+            this.layoutControl1.Size = new System.Drawing.Size(345, 390);
             this.layoutControl1.TabIndex = 0;
             this.layoutControl1.Text = "layoutControl1";
             // 
@@ -229,7 +227,7 @@
             this.txtDtousErr1.Name = "txtDtousErr1";
             this.txtDtousErr1.Properties.AutoHeight = false;
             this.txtDtousErr1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
-            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "us", -1, false, true, false, editorButtonImageOptions1, new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), serializableAppearanceObject1, serializableAppearanceObject2, serializableAppearanceObject3, serializableAppearanceObject4, "", null, null, DevExpress.Utils.ToolTipAnchor.Default)});
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "us", -1, false, true, false, editorButtonImageOptions3, new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), serializableAppearanceObject9, serializableAppearanceObject10, serializableAppearanceObject11, serializableAppearanceObject12, "", null, null, DevExpress.Utils.ToolTipAnchor.Default)});
             this.txtDtousErr1.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
             this.txtDtousErr1.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
             this.txtDtousErr1.Properties.MaskSettings.Set("mask", "f");
@@ -248,7 +246,7 @@
             this.txtSatLocErr1.Name = "txtSatLocErr1";
             this.txtSatLocErr1.Properties.AutoHeight = false;
             this.txtSatLocErr1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
-            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "m", -1, false, true, false, editorButtonImageOptions2, new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), serializableAppearanceObject5, serializableAppearanceObject6, serializableAppearanceObject7, serializableAppearanceObject8, "", null, null, DevExpress.Utils.ToolTipAnchor.Default)});
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "m", -1, false, true, false, editorButtonImageOptions1, new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), serializableAppearanceObject1, serializableAppearanceObject2, serializableAppearanceObject3, serializableAppearanceObject4, "", null, null, DevExpress.Utils.ToolTipAnchor.Default)});
             this.txtSatLocErr1.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
             this.txtSatLocErr1.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
             this.txtSatLocErr1.Properties.MaskSettings.Set("mask", "f");
@@ -259,7 +257,7 @@
             // 
             // btnClose
             // 
-            this.btnClose.Location = new System.Drawing.Point(2, 320);
+            this.btnClose.Location = new System.Drawing.Point(2, 317);
             this.btnClose.Margin = new System.Windows.Forms.Padding(2);
             this.btnClose.Name = "btnClose";
             this.btnClose.Size = new System.Drawing.Size(168, 22);
@@ -281,10 +279,9 @@
             this.layoutControlItem5,
             this.layoutControlItem1,
             this.emptySpaceItem1,
-            this.emptySpaceItem2,
             this.layoutControlItem2});
             this.Root.Name = "Root";
-            this.Root.Size = new System.Drawing.Size(345, 557);
+            this.Root.Size = new System.Drawing.Size(345, 390);
             this.Root.TextVisible = false;
             // 
             // layoutControlItem8
@@ -372,32 +369,25 @@
             this.layoutControlItem1.Location = new System.Drawing.Point(172, 308);
             this.layoutControlItem1.Name = "layoutControlItem1";
             this.layoutControlItem1.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 9, 2);
-            this.layoutControlItem1.Size = new System.Drawing.Size(173, 36);
+            this.layoutControlItem1.Size = new System.Drawing.Size(173, 33);
             this.layoutControlItem1.TextSize = new System.Drawing.Size(0, 0);
             this.layoutControlItem1.TextVisible = false;
             // 
             // emptySpaceItem1
             // 
             this.emptySpaceItem1.AllowHotTrack = false;
-            this.emptySpaceItem1.Location = new System.Drawing.Point(0, 344);
+            this.emptySpaceItem1.Location = new System.Drawing.Point(0, 341);
             this.emptySpaceItem1.Name = "emptySpaceItem1";
-            this.emptySpaceItem1.Size = new System.Drawing.Size(345, 213);
+            this.emptySpaceItem1.Size = new System.Drawing.Size(345, 49);
             this.emptySpaceItem1.TextSize = new System.Drawing.Size(0, 0);
             // 
-            // emptySpaceItem2
-            // 
-            this.emptySpaceItem2.AllowHotTrack = false;
-            this.emptySpaceItem2.Location = new System.Drawing.Point(0, 308);
-            this.emptySpaceItem2.Name = "emptySpaceItem2";
-            this.emptySpaceItem2.Size = new System.Drawing.Size(172, 10);
-            this.emptySpaceItem2.TextSize = new System.Drawing.Size(0, 0);
-            // 
             // layoutControlItem2
             // 
             this.layoutControlItem2.Control = this.btnClose;
-            this.layoutControlItem2.Location = new System.Drawing.Point(0, 318);
+            this.layoutControlItem2.Location = new System.Drawing.Point(0, 308);
             this.layoutControlItem2.Name = "layoutControlItem2";
-            this.layoutControlItem2.Size = new System.Drawing.Size(172, 26);
+            this.layoutControlItem2.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 9, 2);
+            this.layoutControlItem2.Size = new System.Drawing.Size(172, 33);
             this.layoutControlItem2.TextSize = new System.Drawing.Size(0, 0);
             this.layoutControlItem2.TextVisible = false;
             // 
@@ -408,7 +398,7 @@
             this.Controls.Add(this.layoutControl1);
             this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
             this.Name = "X2D1GDOPParam";
-            this.Size = new System.Drawing.Size(345, 557);
+            this.Size = new System.Drawing.Size(345, 390);
             ((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).EndInit();
             this.layoutControl1.ResumeLayout(false);
             ((System.ComponentModel.ISupportInitialize)(this.txtCapTime.Properties.CalendarTimeProperties)).EndInit();
@@ -431,7 +421,6 @@
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem5)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem1)).EndInit();
-            ((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem2)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).EndInit();
             this.ResumeLayout(false);
 
@@ -459,7 +448,6 @@
         private DevExpress.XtraEditors.SimpleButton btnOK;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
         private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
-        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem2;
         private DevExpress.XtraEditors.SimpleButton btnClose;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
     }

+ 20 - 0
XdCxRhDW.App/XdCxRhDW.App.csproj

@@ -238,6 +238,7 @@
     <Compile Include="CpuCgTools\FormCpuCg.Designer.cs">
       <DependentUpon>FormCpuCg.cs</DependentUpon>
     </Compile>
+    <Compile Include="DxHelper\EnumExtension.cs" />
     <Compile Include="DxHelper\MsgBoxHelper.cs" />
     <Compile Include="DxHelper\PopupHelper.cs" />
     <Compile Include="DxHelper\SvgHelper.cs" />
@@ -361,6 +362,18 @@
     <Compile Include="UserControl\CtrlXl.Designer.cs">
       <DependentUpon>CtrlXl.cs</DependentUpon>
     </Compile>
+    <Compile Include="UserControl\X1D1GDOPParam.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="UserControl\X1D1GDOPParam.Designer.cs">
+      <DependentUpon>X1D1GDOPParam.cs</DependentUpon>
+    </Compile>
+    <Compile Include="UserControl\GDOPParam.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="UserControl\GDOPParam.Designer.cs">
+      <DependentUpon>GDOPParam.cs</DependentUpon>
+    </Compile>
     <Compile Include="UserControl\X2D1GDOPParam.cs">
       <SubType>UserControl</SubType>
     </Compile>
@@ -407,6 +420,7 @@
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <None Include="packages.config" />
+    <EmbeddedResource Include="Properties\licenses.licx" />
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>
@@ -481,6 +495,12 @@
     <None Include="星历推算\Tle2XYZ.exe">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
+    <EmbeddedResource Include="UserControl\X1D1GDOPParam.resx">
+      <DependentUpon>X1D1GDOPParam.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="UserControl\GDOPParam.resx">
+      <DependentUpon>GDOPParam.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="UserControl\X2D1GDOPParam.resx">
       <DependentUpon>X2D1GDOPParam.cs</DependentUpon>
     </EmbeddedResource>