|
@@ -45,7 +45,7 @@ namespace XzXdDw.App.UserControl
|
|
|
/// 时差初值 范围计算
|
|
|
/// </summary>
|
|
|
DtSXLParam dtsxlctrl = null;
|
|
|
- XZGDOPParam xzGdopParam=null;
|
|
|
+ XZGDOPParam xzGdopParam = null;
|
|
|
double MBfu;
|
|
|
double CKfu;
|
|
|
private TxInfo refTx;
|
|
@@ -141,7 +141,7 @@ namespace XzXdDw.App.UserControl
|
|
|
var model = ctrl.Model;
|
|
|
double[] main_sat = Tle2XYZ.GetXyz(model.TleMain, model.CapTime);
|
|
|
double[] adja_sat = Tle2XYZ.GetXyz(model.TleAdja, model.CapTime);
|
|
|
- DrawErrorEllipseDTFO(main_sat, adja_sat, new double[] { model.RefLon, model.RefLat, 0 }, model.DtousErr, model.DfoErr, model.SatLocErr, model.EphVelErr, model.fu1, model.fu2);
|
|
|
+ DrawErrorEllipseDTFO(item.PosLon, item.PosLat, main_sat, adja_sat, new double[] { model.RefLon, model.RefLat, 0 }, model.DtousErr, model.DfoErr, model.SatLocErr, model.EphVelErr, model.fu1, model.fu2);
|
|
|
});
|
|
|
})
|
|
|
.AddMenu("停止加载", SvgHelper.LoadFromFile("Image\\Stop.svg"), () => stoped = true);
|
|
@@ -181,16 +181,26 @@ namespace XzXdDw.App.UserControl
|
|
|
})
|
|
|
.AddPosMenu<XZPosRes>("误差椭圆", SvgHelper.LoadFromFile("Image\\误差椭圆.svg"), item =>
|
|
|
{
|
|
|
- var ctrl = new XZErrEllipseParam(refTx,item.SigTime, MBfu, CKfu);
|
|
|
+ var ctrl = new XZErrEllipseParam(refTx, item.SigTime, MBfu, CKfu);
|
|
|
PopupHelper.ShowPopup(ctrl, mapControl1, mapControl1.Width / 4, onHide: hideReason =>
|
|
|
{
|
|
|
if (hideReason == HideReason.Defalut) return;
|
|
|
var model = ctrl.Model;
|
|
|
double[] main_sat = Tle2XYZ.GetXyz(model.TleMain, model.CapTime);
|
|
|
double[] adja_sat = Tle2XYZ.GetXyz(model.TleAdja, model.CapTime);
|
|
|
- DrawErrorEllipseDTFO(main_sat, adja_sat, new double[] { model.RefLon, model.RefLat, 0 }, model.DtousErr, model.DfoErr, model.SatLocErr, model.EphVelErr, model.fu1, model.fu2);
|
|
|
+ DrawErrorEllipseDTFO(item.PosLon, item.PosLat, main_sat, adja_sat, new double[] { model.RefLon, model.RefLat, 0 }, model.DtousErr, model.DfoErr, model.SatLocErr, model.EphVelErr, model.fu1, model.fu2);
|
|
|
});
|
|
|
})
|
|
|
+
|
|
|
+ .AddPosMenu<XZPosRes>("绘制时差线", SvgHelper.LoadFromFile("Image\\DrawLine.svg"), item =>
|
|
|
+ {
|
|
|
+ DrawDtoLine(item);
|
|
|
+ })
|
|
|
+ .AddPosMenu<XZPosRes>("绘制频差线", SvgHelper.LoadFromFile("Image\\DfoLine.svg"), item =>
|
|
|
+ {
|
|
|
+ DrawDfoLine(item);
|
|
|
+ })
|
|
|
+
|
|
|
.AddRectMenu<XZPosRes>("时差初值预估", SvgHelper.LoadFromFile("Image\\初值预估.svg"), items =>
|
|
|
{
|
|
|
var rect = mapControl1.GetCurrentRect();
|
|
@@ -200,6 +210,11 @@ namespace XzXdDw.App.UserControl
|
|
|
}
|
|
|
dtsxlctrl.rect = rect;
|
|
|
PopupHelper.ShowPopup(dtsxlctrl, mapControl1, mapControl1.Width / 4);
|
|
|
+ })
|
|
|
+ .AddPosMenu<XZPosRes>("手动定位", SvgHelper.LoadFromFile("Image\\Pos.svg"), item =>
|
|
|
+ {
|
|
|
+ X2Pos(item);
|
|
|
+
|
|
|
});
|
|
|
|
|
|
|
|
@@ -231,7 +246,7 @@ namespace XzXdDw.App.UserControl
|
|
|
bool stoped = false;
|
|
|
private async void LoadSimulationData()
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
SimulationEditor editor = new SimulationEditor("Simulation_Data_SX20240115.dat");
|
|
|
if (editor.ShowDialog() != DialogResult.OK)
|
|
|
{
|
|
@@ -251,10 +266,10 @@ namespace XzXdDw.App.UserControl
|
|
|
foreach (var item in lines)
|
|
|
{
|
|
|
if (stoped) break;
|
|
|
- var items = item.Split(new string[] { " ","\"" }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
+ var items = item.Split(new string[] { " ", "\"" }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
if (items.Length != 18) continue;
|
|
|
int index = 0;
|
|
|
- string sigtimeStr = items[index++] +" "+items[index++];
|
|
|
+ string sigtimeStr = items[index++] + " " + items[index++];
|
|
|
var SigTime = DateTime.ParseExact(sigtimeStr, "yyyy-MM-dd HH:mm:ss", null);
|
|
|
var target_dto = Convert.ToDouble(items[index++]);
|
|
|
var target_dfo = Convert.ToDouble(items[index++]);
|
|
@@ -342,17 +357,25 @@ namespace XzXdDw.App.UserControl
|
|
|
tcpServer.SendData(setings.ServerIp, setings.Port, json);
|
|
|
}
|
|
|
private async void X2Pos()
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ var ids = gridView1.GetSelectedRows();
|
|
|
+ if (ids.Length <= 0)
|
|
|
+ {
|
|
|
+ XtraMessageBox.Show("请选择需要手动定位的数据信息!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var item = gridView1.GetRow(ids[0]) as XZPosRes;
|
|
|
+ await Task.Run(() =>
|
|
|
+ {
|
|
|
+ X2Pos(item);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ private async void X2Pos(XZPosRes item)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
-
|
|
|
- var ids = gridView1.GetSelectedRows();
|
|
|
- if (ids.Length <= 0)
|
|
|
- {
|
|
|
- XtraMessageBox.Show("请选择需要手动定位的数据信息!");
|
|
|
- return;
|
|
|
- }
|
|
|
- var item = gridView1.GetRow(ids[0]) as XZPosRes;
|
|
|
List<TxInfo> listTx = new List<TxInfo>();
|
|
|
CgRes cg;
|
|
|
using (RHDWContext db = new RHDWContext())
|
|
@@ -388,16 +411,26 @@ namespace XzXdDw.App.UserControl
|
|
|
}
|
|
|
}
|
|
|
private async void DrawDtoLine()
|
|
|
+ {
|
|
|
+
|
|
|
+ var ids = gridView1.GetSelectedRows();
|
|
|
+ if (ids.Length <= 0)
|
|
|
+ {
|
|
|
+ XtraMessageBox.Show("请选择需要绘制时差线的定位数据信息!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var item = gridView1.GetRow(ids[0]) as XZPosRes;
|
|
|
+ await Task.Run(() =>
|
|
|
+ {
|
|
|
+ DrawDtoLine(item);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private async void DrawDtoLine(XZPosRes item)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- var ids = gridView1.GetSelectedRows();
|
|
|
- if (ids.Length <= 0)
|
|
|
- {
|
|
|
- XtraMessageBox.Show("请选择需要绘制时差线的定位数据信息!");
|
|
|
- return;
|
|
|
- }
|
|
|
- var item = gridView1.GetRow(ids[0]) as XZPosRes;
|
|
|
+
|
|
|
List<TxInfo> listTx = new List<TxInfo>();
|
|
|
List<Model.SatInfo> listSat = new List<Model.SatInfo>();
|
|
|
CgRes cg;
|
|
@@ -436,16 +469,21 @@ namespace XzXdDw.App.UserControl
|
|
|
}
|
|
|
}
|
|
|
private async void DrawDfoLine()
|
|
|
+ {
|
|
|
+
|
|
|
+ var ids = gridView1.GetSelectedRows();
|
|
|
+ if (ids.Length <= 0)
|
|
|
+ {
|
|
|
+ XtraMessageBox.Show("请选择需要绘制频差线的定位数据信息!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var item = gridView1.GetRow(ids[0]) as XZPosRes;
|
|
|
+ await Task.Run(() => { DrawDfoLine(item); });
|
|
|
+ }
|
|
|
+ private async void DrawDfoLine(XZPosRes item)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- var ids = gridView1.GetSelectedRows();
|
|
|
- if (ids.Length <= 0)
|
|
|
- {
|
|
|
- XtraMessageBox.Show("请选择需要绘制频差线的定位数据信息!");
|
|
|
- return;
|
|
|
- }
|
|
|
- var item = gridView1.GetRow(ids[0]) as XZPosRes;
|
|
|
List<TxInfo> listTx = new List<TxInfo>();
|
|
|
List<Model.SatInfo> listSat = new List<Model.SatInfo>();
|
|
|
CgRes cg;
|
|
@@ -484,22 +522,15 @@ namespace XzXdDw.App.UserControl
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void DrawErrorEllipseDTFO(double[] main_sat, double[] neigh_sat, double[] Ref_Station_LLH, double DtoErr, double DfoErr, double EphPosErr, double EphVelErr, double fu1, double fu2)
|
|
|
+ private void DrawErrorEllipseDTFO(double posLon, double posLat, double[] main_sat, double[] neigh_sat, double[] Ref_Station_LLH, double DtoErr, double DfoErr, double EphPosErr, double EphVelErr, double fu1, double fu2)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- var ids = gridView1.GetSelectedRows();
|
|
|
- if (ids.Length <= 0)
|
|
|
- {
|
|
|
- XtraMessageBox.Show("请选择需要绘制误差椭圆线的定位数据信息!");
|
|
|
- return;
|
|
|
- }
|
|
|
- var item = gridView1.GetRow(ids[0]) as XZPosRes;
|
|
|
ErrorEllipseDTFOTSOption twoStartOption = new ErrorEllipseDTFOTSOption();
|
|
|
twoStartOption.MsEph = main_sat;
|
|
|
twoStartOption.NsEph = neigh_sat;
|
|
|
twoStartOption.RefGeod = Ref_Station_LLH;
|
|
|
- twoStartOption.SelectPoint = new double[3] { item.PosLon, item.PosLat, 0 };
|
|
|
+ twoStartOption.SelectPoint = new double[3] { posLon, posLat, 0 };
|
|
|
twoStartOption.DtoErr = DtoErr * 1e-6;
|
|
|
twoStartOption.DfoErr = DfoErr;
|
|
|
twoStartOption.EphPosErr = EphPosErr;
|
|
@@ -518,6 +549,6 @@ namespace XzXdDw.App.UserControl
|
|
|
XtraMessageBox.Show($"绘制误差椭圆线失败,失败信息:{ex.Message}");
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
}
|