wyq 1 рік тому
батько
коміт
24c92eca31

+ 1 - 1
XdCxRhDW.App/ExtensionsDev/MapControlEx.cs

@@ -89,7 +89,7 @@ public static class MapControlEx
     private static GoogleMapType mMapType = GoogleMapType.Normal;
     private static List<MapControl> listMapCtrl = new List<MapControl>();
     private const int _dotSize = 8;
-    private const int _selectedDotSize = 12;
+    private const int _selectedDotSize = 18;
 
     /// <summary>
     /// <para>设置地图通用属性并创建4个Layer.</para>

+ 6 - 1
XdCxRhDW.App/UserControl/CtrlHome.cs

@@ -82,7 +82,7 @@ namespace XdCxRhDW.App.UserControl
             gridView1.BestFitColumns();
             gridHomePosRes.UseDefault(new List<ModelPosRes>()).UseMultiSelect().UseRowNumber().UseNullValueText()
                 .AddRowMenu<ModelPosRes>("绘制时差线", SvgHelper.CreateDtoLine(), DrawDtoLine)
-                .AddRowMenu<ModelPosRes>("GDOP分析", SvgHelper.CreateGDOP(), DrawGdopLine, item => item.PosResType != EnumPosResType.RH)
+                .AddRowMenu<ModelPosRes>("GDOP分析", SvgHelper.CreateGDOP(), DrawGdopLine)//, item => item.PosResType != EnumPosResType.RH
                 .AddRowMenu<ModelPosRes>("查看参估", SvgHelper.CreateShowCafRes(), ShowCafRes)
                 .AddRowMenu<ModelPosRes>("查看测向", SvgHelper.CreateShowCxRes(), ShowCxRes)
                 .AddRowMenu<ModelPosRes>("查看检测", SvgHelper.CreateShowCheckRes(), ShowCheckRes)
@@ -1021,6 +1021,11 @@ namespace XdCxRhDW.App.UserControl
                         x2DFGdopParam.mapControl1 = mapControl1;
                         DxHelper.PopupHelper.ShowPopup(x2DFGdopParam, layoutControl1, 600);
                         break;
+                    case EnumPosResType.RH:
+                        RHGDOPParam rhGdopParam = new RHGDOPParam(item);
+                        rhGdopParam.mapControl1 = mapControl1;
+                        DxHelper.PopupHelper.ShowPopup(rhGdopParam, layoutControl1, 600);
+                        break;
                     default:
                         break;
                 }

+ 462 - 0
XdCxRhDW.App/UserControl/RHGDOPParam.Designer.cs

@@ -0,0 +1,462 @@
+namespace XdCxRhDW.App.UserControl
+{
+    partial class RHGDOPParam
+    {
+        /// <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()
+        {
+            this.components = new System.ComponentModel.Container();
+            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.ucEphXYZAdja = new XdCxRhDW.App.UserControl.UCEphXYZParam();
+            this.ucEphXYZMain = new XdCxRhDW.App.UserControl.UCEphXYZParam();
+            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.txtDtousErr1 = new DevExpress.XtraEditors.ButtonEdit();
+            this.txtSatLocErr1 = new DevExpress.XtraEditors.ButtonEdit();
+            this.btnClose = new DevExpress.XtraEditors.SimpleButton();
+            this.btnEphCalc = new DevExpress.XtraEditors.SimpleButton();
+            this.Root = new DevExpress.XtraLayout.LayoutControlGroup();
+            this.itemSigTime = 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.emptySpaceItem2 = new DevExpress.XtraLayout.EmptySpaceItem();
+            this.layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.dxErrorProvider = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(this.components);
+            ((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.txtDtousErr1.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtSatLocErr1.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Root)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.itemSigTime)).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.emptySpaceItem2)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem6)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem7)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.dxErrorProvider)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // layoutControl1
+            // 
+            this.layoutControl1.Controls.Add(this.ucEphXYZAdja);
+            this.layoutControl1.Controls.Add(this.ucEphXYZMain);
+            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.txtDtousErr1);
+            this.layoutControl1.Controls.Add(this.txtSatLocErr1);
+            this.layoutControl1.Controls.Add(this.btnClose);
+            this.layoutControl1.Controls.Add(this.btnEphCalc);
+            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(484, 530);
+            this.layoutControl1.TabIndex = 0;
+            this.layoutControl1.Text = "layoutControl1";
+            // 
+            // ucEphXYZAdja
+            // 
+            this.ucEphXYZAdja.Location = new System.Drawing.Point(2, 94);
+            this.ucEphXYZAdja.Name = "ucEphXYZAdja";
+            this.ucEphXYZAdja.Size = new System.Drawing.Size(480, 88);
+            this.ucEphXYZAdja.TabIndex = 15;
+            // 
+            // ucEphXYZMain
+            // 
+            this.ucEphXYZMain.Location = new System.Drawing.Point(2, 2);
+            this.ucEphXYZMain.Name = "ucEphXYZMain";
+            this.ucEphXYZMain.Size = new System.Drawing.Size(480, 88);
+            this.ucEphXYZMain.TabIndex = 14;
+            // 
+            // btnOK
+            // 
+            this.btnOK.Location = new System.Drawing.Point(330, 410);
+            this.btnOK.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+            this.btnOK.Name = "btnOK";
+            this.btnOK.Size = new System.Drawing.Size(150, 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(4, 203);
+            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(476, 22);
+            this.txtCapTime.StyleController = this.layoutControl1;
+            this.txtCapTime.TabIndex = 8;
+            // 
+            // txtStationLocation1
+            // 
+            this.txtStationLocation1.EditValue = "";
+            this.txtStationLocation1.Location = new System.Drawing.Point(4, 246);
+            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(476, 22);
+            this.txtStationLocation1.StyleController = this.layoutControl1;
+            this.txtStationLocation1.TabIndex = 11;
+            this.txtStationLocation1.ToolTip = "经度纬度之间用英文逗号隔开";
+            // 
+            // txtRefLocation1
+            // 
+            this.txtRefLocation1.EditValue = "";
+            this.txtRefLocation1.Location = new System.Drawing.Point(4, 289);
+            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(476, 22);
+            this.txtRefLocation1.StyleController = this.layoutControl1;
+            this.txtRefLocation1.TabIndex = 10;
+            this.txtRefLocation1.ToolTip = "经度纬度之间用英文逗号隔开";
+            // 
+            // txtDtousErr1
+            // 
+            this.txtDtousErr1.EditValue = "";
+            this.txtDtousErr1.Location = new System.Drawing.Point(4, 332);
+            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.Size = new System.Drawing.Size(476, 22);
+            this.txtDtousErr1.StyleController = this.layoutControl1;
+            this.txtDtousErr1.TabIndex = 6;
+            this.txtDtousErr1.ToolTip = "时差误差";
+            // 
+            // txtSatLocErr1
+            // 
+            this.txtSatLocErr1.EditValue = "";
+            this.txtSatLocErr1.Location = new System.Drawing.Point(4, 376);
+            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.Size = new System.Drawing.Size(476, 22);
+            this.txtSatLocErr1.StyleController = this.layoutControl1;
+            this.txtSatLocErr1.TabIndex = 6;
+            this.txtSatLocErr1.ToolTip = "星历位置误差";
+            // 
+            // btnClose
+            // 
+            this.btnClose.Location = new System.Drawing.Point(173, 410);
+            this.btnClose.Margin = new System.Windows.Forms.Padding(2);
+            this.btnClose.Name = "btnClose";
+            this.btnClose.Size = new System.Drawing.Size(153, 22);
+            this.btnClose.StyleController = this.layoutControl1;
+            this.btnClose.TabIndex = 13;
+            this.btnClose.Text = "关闭";
+            this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
+            // 
+            // btnEphCalc
+            // 
+            this.btnEphCalc.Location = new System.Drawing.Point(4, 410);
+            this.btnEphCalc.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+            this.btnEphCalc.Name = "btnEphCalc";
+            this.btnEphCalc.Size = new System.Drawing.Size(165, 22);
+            this.btnEphCalc.StyleController = this.layoutControl1;
+            this.btnEphCalc.TabIndex = 12;
+            this.btnEphCalc.Text = "星历推算";
+            this.btnEphCalc.Click += new System.EventHandler(this.btnEphCalc_Click);
+            // 
+            // Root
+            // 
+            this.Root.GroupBordersVisible = false;
+            this.Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] {
+            this.itemSigTime,
+            this.layoutControlItem14,
+            this.layoutControlItem13,
+            this.layoutControlItem4,
+            this.layoutControlItem5,
+            this.layoutControlItem1,
+            this.emptySpaceItem1,
+            this.emptySpaceItem2,
+            this.layoutControlItem3,
+            this.layoutControlItem6,
+            this.layoutControlItem7,
+            this.layoutControlItem2});
+            this.Root.Name = "Root";
+            this.Root.Size = new System.Drawing.Size(484, 530);
+            this.Root.TextVisible = false;
+            // 
+            // itemSigTime
+            // 
+            this.itemSigTime.Control = this.txtCapTime;
+            this.itemSigTime.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.itemSigTime.Location = new System.Drawing.Point(0, 184);
+            this.itemSigTime.Name = "itemSigTime";
+            this.itemSigTime.Size = new System.Drawing.Size(484, 43);
+            this.itemSigTime.Spacing = new DevExpress.XtraLayout.Utils.Padding(2, 2, 0, 0);
+            this.itemSigTime.Text = "信号时间";
+            this.itemSigTime.TextLocation = DevExpress.Utils.Locations.Top;
+            this.itemSigTime.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, 270);
+            this.layoutControlItem14.Name = "layoutControlItem14";
+            this.layoutControlItem14.Size = new System.Drawing.Size(484, 43);
+            this.layoutControlItem14.Spacing = new DevExpress.XtraLayout.Utils.Padding(2, 2, 0, 0);
+            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, 227);
+            this.layoutControlItem13.Name = "layoutControlItem13";
+            this.layoutControlItem13.Size = new System.Drawing.Size(484, 43);
+            this.layoutControlItem13.Spacing = new DevExpress.XtraLayout.Utils.Padding(2, 2, 0, 0);
+            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, 313);
+            this.layoutControlItem4.Name = "layoutControlItem4";
+            this.layoutControlItem4.Size = new System.Drawing.Size(484, 44);
+            this.layoutControlItem4.Spacing = new DevExpress.XtraLayout.Utils.Padding(2, 2, 0, 0);
+            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, 357);
+            this.layoutControlItem5.Name = "layoutControlItem5";
+            this.layoutControlItem5.Size = new System.Drawing.Size(484, 44);
+            this.layoutControlItem5.Spacing = new DevExpress.XtraLayout.Utils.Padding(2, 2, 0, 0);
+            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(328, 401);
+            this.layoutControlItem1.Name = "layoutControlItem1";
+            this.layoutControlItem1.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 9, 2);
+            this.layoutControlItem1.Size = new System.Drawing.Size(156, 33);
+            this.layoutControlItem1.Spacing = new DevExpress.XtraLayout.Utils.Padding(0, 2, 0, 0);
+            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, 434);
+            this.emptySpaceItem1.Name = "emptySpaceItem1";
+            this.emptySpaceItem1.Size = new System.Drawing.Size(484, 72);
+            this.emptySpaceItem1.TextSize = new System.Drawing.Size(0, 0);
+            // 
+            // emptySpaceItem2
+            // 
+            this.emptySpaceItem2.AllowHotTrack = false;
+            this.emptySpaceItem2.Location = new System.Drawing.Point(0, 506);
+            this.emptySpaceItem2.MaxSize = new System.Drawing.Size(0, 24);
+            this.emptySpaceItem2.MinSize = new System.Drawing.Size(104, 24);
+            this.emptySpaceItem2.Name = "emptySpaceItem2";
+            this.emptySpaceItem2.Size = new System.Drawing.Size(484, 24);
+            this.emptySpaceItem2.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            this.emptySpaceItem2.TextSize = new System.Drawing.Size(0, 0);
+            // 
+            // layoutControlItem3
+            // 
+            this.layoutControlItem3.Control = this.ucEphXYZMain;
+            this.layoutControlItem3.Location = new System.Drawing.Point(0, 0);
+            this.layoutControlItem3.MaxSize = new System.Drawing.Size(0, 92);
+            this.layoutControlItem3.MinSize = new System.Drawing.Size(190, 92);
+            this.layoutControlItem3.Name = "layoutControlItem3";
+            this.layoutControlItem3.Size = new System.Drawing.Size(484, 92);
+            this.layoutControlItem3.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            this.layoutControlItem3.TextSize = new System.Drawing.Size(0, 0);
+            this.layoutControlItem3.TextVisible = false;
+            // 
+            // layoutControlItem6
+            // 
+            this.layoutControlItem6.Control = this.ucEphXYZAdja;
+            this.layoutControlItem6.Location = new System.Drawing.Point(0, 92);
+            this.layoutControlItem6.MaxSize = new System.Drawing.Size(0, 92);
+            this.layoutControlItem6.MinSize = new System.Drawing.Size(190, 92);
+            this.layoutControlItem6.Name = "layoutControlItem6";
+            this.layoutControlItem6.Size = new System.Drawing.Size(484, 92);
+            this.layoutControlItem6.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            this.layoutControlItem6.TextSize = new System.Drawing.Size(0, 0);
+            this.layoutControlItem6.TextVisible = false;
+            // 
+            // layoutControlItem7
+            // 
+            this.layoutControlItem7.Control = this.btnEphCalc;
+            this.layoutControlItem7.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
+            this.layoutControlItem7.CustomizationFormText = "layoutControlItem1";
+            this.layoutControlItem7.Location = new System.Drawing.Point(0, 401);
+            this.layoutControlItem7.Name = "layoutControlItem7";
+            this.layoutControlItem7.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 9, 2);
+            this.layoutControlItem7.Size = new System.Drawing.Size(171, 33);
+            this.layoutControlItem7.Spacing = new DevExpress.XtraLayout.Utils.Padding(2, 0, 0, 0);
+            this.layoutControlItem7.Text = "layoutControlItem1";
+            this.layoutControlItem7.TextSize = new System.Drawing.Size(0, 0);
+            this.layoutControlItem7.TextVisible = false;
+            // 
+            // layoutControlItem2
+            // 
+            this.layoutControlItem2.Control = this.btnClose;
+            this.layoutControlItem2.Location = new System.Drawing.Point(171, 401);
+            this.layoutControlItem2.Name = "layoutControlItem2";
+            this.layoutControlItem2.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 9, 2);
+            this.layoutControlItem2.Size = new System.Drawing.Size(157, 33);
+            this.layoutControlItem2.TextSize = new System.Drawing.Size(0, 0);
+            this.layoutControlItem2.TextVisible = false;
+            // 
+            // dxErrorProvider
+            // 
+            this.dxErrorProvider.ContainerControl = this;
+            // 
+            // X2D1GDOPParam
+            // 
+            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 = "X2D1GDOPParam";
+            this.Size = new System.Drawing.Size(484, 530);
+            ((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.txtDtousErr1.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtSatLocErr1.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Root)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.itemSigTime)).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.emptySpaceItem2)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem6)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem7)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.dxErrorProvider)).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.ButtonEdit txtDtousErr1;
+        private DevExpress.XtraEditors.ButtonEdit txtSatLocErr1;
+        private DevExpress.XtraLayout.LayoutControlGroup Root;
+        private DevExpress.XtraLayout.LayoutControlItem itemSigTime;
+        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;
+        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem2;
+        private UCEphXYZParam ucEphXYZMain;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
+        private UCEphXYZParam ucEphXYZAdja;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
+        private DevExpress.XtraEditors.SimpleButton btnEphCalc;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
+        private DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider dxErrorProvider;
+    }
+}

+ 231 - 0
XdCxRhDW.App/UserControl/RHGDOPParam.cs

@@ -0,0 +1,231 @@
+using DevExpress.XtraMap;
+using ExtensionsDev;
+using System;
+using System.Data;
+using System.Linq;
+using System.Collections.Generic;
+using DxHelper;
+using XdCxRhDW.Repostory;
+using XdCxRhDW.Entity;
+using XdCxRhDW.Api;
+using System.Drawing;
+using DevExpress.Utils.About;
+using DevExpress.XtraEditors.DXErrorProvider;
+using XdCxRhDW.Dto;
+using System.Configuration;
+
+namespace XdCxRhDW.App.UserControl
+{
+    public partial class RHGDOPParam : DevExpress.XtraEditors.XtraUserControl
+    {
+        public MapControl mapControl1;
+        public GDOP融合接口 Model => new GDOP融合接口()
+        {
+            EphMain = ucEphXYZMain.EphParam(),
+            EphAdja = ucEphXYZAdja.EphParam(),
+            CapTime = txtCapTime.DateTime,
+            CDBStation = txtStationLocation1.GetLonLat(),
+            RefStation = txtRefLocation1.GetLonLat(),
+            DtousErr = Convert.ToDouble(txtDtousErr1.Text),
+            SatLocErr = Convert.ToDouble(txtSatLocErr1.Text),
+        };
+
+        private EnumPosResType PosResType;
+        public RHGDOPParam(PosRes item)
+        {
+            InitializeComponent();
+            this.layoutControl1.UseDefault();
+            txtCapTime.UseDefault();
+            txtStationLocation1.UseDoubleClickToSelectAll();
+            txtRefLocation1.UseDoubleClickToSelectAll();
+            this.txtCapTime.DateTime = item.SigTime;
+            this.txtDtousErr1.EditValue = 1;
+            this.txtSatLocErr1.EditValue = 10000;
+            PosResType = item.PosResType;
+
+            using (RHDWPartContext db = RHDWPartContext.GetContext(item.SigTime))
+            {
+                var cg = db?.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefault();
+                var station = db?.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefault();
+                if (station != null)
+                {
+                    this.txtStationLocation1.Text = $"{station.CdbTxLon},{station.CdbTxLat}";
+                    this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
+                }
+
+                if (cg != null)
+                {
+                    var mainEph = (cg.MainX, cg.MainY, cg.MainZ, cg.MainVx, cg.MainVy, cg.MainVz);
+                    ucEphXYZMain.SetParam($"主星", cg.MainCode, mainEph, Color.Black);
+
+                    var adjaEph = (cg.Adja1X, cg.Adja1Y, cg.Adja1Z, cg.Adja1Vx, cg.Adja1Vy, cg.Adja1Vz);
+                    ucEphXYZAdja.SetParam($"邻星", cg.Adja1Code, adjaEph, Color.Black);
+
+                }
+            }
+
+        }
+
+
+        private bool ParamValidate()
+        {
+            dxErrorProvider.ClearErrors();
+            if (!ucEphXYZMain.CheckEph(dxErrorProvider))
+            {
+                return false;
+            }
+            if (!ucEphXYZAdja.CheckEph(dxErrorProvider))
+            {
+                return false;
+            }
+            if (!txtStationLocation1.CheckLonLat(dxErrorProvider, "超短波"))
+            {
+                return false;
+            }
+            if (!txtRefLocation1.CheckLonLat(dxErrorProvider, "参考站"))
+            {
+                return false;
+            }
+            if (!txtDtousErr1.CheckDouble(dxErrorProvider, "时差误差"))
+            {
+                return false;
+            }
+            if (!txtSatLocErr1.CheckDouble(dxErrorProvider, "星历位置误差"))
+            {
+                return false;
+            }
+            return true;
+        }
+
+        private void btnOK_Click(object sender, EventArgs e)
+        {
+            if (!ParamValidate()) { return; }
+            try
+            {
+
+                mapControl1.ClearMap();
+                string useNewGDOP = ConfigurationManager.AppSettings["UseNewGDOP"];
+                if (useNewGDOP == null || useNewGDOP == "0")
+                {
+                    var data = GdopHelper.Gdop2Sat1DByXyz(Model.EphMain, Model.EphAdja, Model.CDBStation
+                             , Model.DtousErr, Model.SatLocErr, Model.RefStation);
+                    foreach (var errLins in data)//画GDOP
+                    {
+                        mapControl1.DrawGdopLineTwo(errLins.ErrDistanceKm, errLins.MapDots, 1);
+                    }
+                }
+                else
+                {
+
+                    var data = GdopHelper.Gdop2Sat1DByXyzNew(Model.EphMain, Model.EphAdja, Model.CDBStation
+                      , Model.DtousErr, Model.SatLocErr,  Model.RefStation);
+
+                    List<MapPolyline> polylines = new List<MapPolyline>();
+                    for (int i = 0; i < data.Count; i++)
+                    {
+                        var errLins = data[i];
+                        var mapline = mapControl1.GetLine(errLins.ErrDistanceKm, errLins.MapDots);
+                        if (mapline == null)
+                        {
+                            continue;
+                        }
+                        polylines.Add(mapline);
+                    }
+                    mapControl1.DrawDtoLine(polylines);
+                }
+
+            }
+            catch (Exception ex)
+            {
+                DxHelper.MsgBoxHelper.ShowError($"绘制{PosResType.GetEnumDisplayName()}GDOP失败,{ex.Message}");
+            }
+        }
+        private void btnClose_Click(object sender, EventArgs e)
+        {
+            DxHelper.PopupHelper.HidePopup(this);
+        }
+        private async void btnEphCalc_Click(object sender, EventArgs e)
+        {
+            dxErrorProvider.ClearErrors();
+            if (txtCapTime.DateTime == DateTime.MinValue)
+            {
+                dxErrorProvider.SetError(txtCapTime, "信号时间不能为空!");
+                return;
+            }
+            var sigTime = txtCapTime.DateTime;
+            try
+            {
+                var mainCode = ucEphXYZMain.GetSatCode();
+                var adjaCode = ucEphXYZAdja.GetSatCode();
+
+                var mainxlInfo = await XlRepository.GetLatestAsync(mainCode, sigTime);
+                if (mainxlInfo == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"卫星:{mainCode}未找到对应的星历信息,请导入星历");
+                    return;
+                }
+                var XlCalcDto = new XlCalcDto() { tleStr = mainxlInfo.TwoLine, SigTime = sigTime };
+                var maineph = await HttpHelper.PostRequestAsync<SatEphResDto>(SysConfig.GetUrl("Xl/Calc"), XlCalcDto);
+                ucEphXYZMain.SetParam("主星", mainCode, (maineph.data.X, maineph.data.Y, maineph.data.Z, maineph.data.VX, maineph.data.VY, maineph.data.VZ), Color.Red);
+
+                var adjaxlInfo = await XlRepository.GetLatestAsync(adjaCode, sigTime);
+                if (adjaxlInfo == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"卫星:{adjaCode}未找到对应的星历信息,请导入星历");
+                    return;
+                }
+                XlCalcDto = new XlCalcDto() { tleStr = adjaxlInfo.TwoLine, SigTime = sigTime };
+                var adjaeph = await HttpHelper.PostRequestAsync<SatEphResDto>(SysConfig.GetUrl("Xl/Calc"), XlCalcDto);
+                ucEphXYZAdja.SetParam("邻星", adjaCode, (adjaeph.data.X, adjaeph.data.Y, adjaeph.data.Z, adjaeph.data.VX, adjaeph.data.VY, adjaeph.data.VZ), Color.Red);
+            }
+            catch (Exception ex)
+            {
+                Serilog.Log.Error(ex, $"手动推算{PosResType.GetEnumDisplayName()}星历失败,SigTime={sigTime}");
+                DxHelper.MsgBoxHelper.ShowError($"手动推算{PosResType.GetEnumDisplayName()}星历失败,{ex.Message}");
+            }
+        }
+    }
+    public class GDOP融合接口
+    {
+        /// <summary>
+        /// 主星x y z vx vy vz
+        /// </summary>
+        public double[] EphMain { get; set; }
+
+        /// <summary>
+        /// 邻星x y z vx vy vz
+        /// </summary>
+        public double[] EphAdja { get; set; }
+
+        /// <summary>
+        /// 采集时刻
+        /// </summary>
+        public DateTime CapTime { get; set; }
+
+        /// <summary>
+        /// 超短接收站-经度 纬度 高度
+        /// </summary>
+        public double[] CDBStation { get; set; }
+
+        /// <summary>
+        /// 参考站位置-经度 纬度 高度
+        /// </summary>
+        public double[] RefStation { get; set; }
+
+        /// <summary>
+        /// 时差误差(单位us)
+        /// </summary>
+        public double DtousErr { get; set; } = 1;
+
+        /// <summary>
+        /// 星历位置误差(单位米)
+        /// </summary>
+        public double SatLocErr { get; set; } = 10000;
+
+        /// <summary>
+        /// 定位类型
+        /// </summary>
+        public EnumPosResType PosResType { get; set; }
+
+    }
+}

+ 123 - 0
XdCxRhDW.App/UserControl/RHGDOPParam.resx

@@ -0,0 +1,123 @@
+<?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>
+  <metadata name="dxErrorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>

+ 13 - 1
XdCxRhDW.App/UserControl/X3GDOPParam.cs

@@ -53,7 +53,19 @@ namespace XdCxRhDW.App.UserControl
                 }
                 if (cg != null)
                 {
-
+                    /*
+                    cg.MainX = 14134595.9416663;
+                    cg.MainY = 39728560.9832403;
+                    cg.MainZ = -21797.4303592971;
+
+                    cg.Adja1X = 17189204.6561764;
+                    cg.Adja1Y = 38508305.0902672;
+                    cg.Adja1Z = 12338.5166550109;
+
+                    cg.Adja2X = 25377964.3839722;
+                    cg.Adja2Y = 33675447.9787357;
+                    cg.Adja2Z = 3106.70347014127;
+                    */
                     var mainEph = (cg.MainX, cg.MainY, cg.MainZ, cg.MainVx, cg.MainVy, cg.MainVz);
                     ucEphXYZMain.SetParam($"主星", cg.MainCode, mainEph, Color.Black);
 

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

@@ -417,6 +417,12 @@
     <Compile Include="UserControl\X1D1GDOPParam.Designer.cs">
       <DependentUpon>X1D1GDOPParam.cs</DependentUpon>
     </Compile>
+    <Compile Include="UserControl\RHGDOPParam.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="UserControl\RHGDOPParam.Designer.cs">
+      <DependentUpon>RHGDOPParam.cs</DependentUpon>
+    </Compile>
     <Compile Include="UserControl\X2DFGDOPParam.cs">
       <SubType>UserControl</SubType>
     </Compile>
@@ -611,6 +617,10 @@
       <DependentUpon>X1D1GDOPParam.cs</DependentUpon>
       <SubType>Designer</SubType>
     </EmbeddedResource>
+    <EmbeddedResource Include="UserControl\RHGDOPParam.resx">
+      <DependentUpon>RHGDOPParam.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
     <EmbeddedResource Include="UserControl\X2DFGDOPParam.resx">
       <DependentUpon>X2DFGDOPParam.cs</DependentUpon>
     </EmbeddedResource>