|
@@ -16,10 +16,8 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
{
|
|
|
private readonly string baseUrl;
|
|
|
CancellationTokenSource cts;
|
|
|
-
|
|
|
string DetectDir;
|
|
|
string CapDir;
|
|
|
- string DdcDir;
|
|
|
string PosResDir;
|
|
|
string StateDir;
|
|
|
int MainSatCode, Adja1SatCode;
|
|
@@ -40,7 +38,6 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
|
|
|
DetectDir = ConfigurationManager.AppSettings["DetectDir"].Trim();
|
|
|
CapDir = ConfigurationManager.AppSettings["CapDir"].Trim();
|
|
|
- DdcDir = ConfigurationManager.AppSettings["DdcDir"].Trim();
|
|
|
PosResDir = ConfigurationManager.AppSettings["PosResDir"].Trim();
|
|
|
StateDir = ConfigurationManager.AppSettings["StateRptDir"].Trim();
|
|
|
var PosDtoFactorstr = ConfigurationManager.AppSettings["PosDtoFactor"].Trim();
|
|
@@ -50,7 +47,6 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
double.TryParse(DtoErrusstr, out DtoErrus);
|
|
|
var EphErrmstr = ConfigurationManager.AppSettings["EphErrm"].Trim();
|
|
|
double.TryParse(EphErrmstr, out EphErrm);
|
|
|
-
|
|
|
string useGpuStr = ConfigurationManager.AppSettings["UseGpuCg"];
|
|
|
if (useGpuStr != null && useGpuStr.Trim() == "1")
|
|
|
useGpuCg = true;
|
|
@@ -63,7 +59,6 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
LogHelper.Info($"【任务{dto.ID}】开始执行...");
|
|
|
LogHelper.Info($"【任务{dto.ID}】检测结果目录[{DetectDir}]");
|
|
|
LogHelper.Info($"【任务{dto.ID}】AD采集目录[{CapDir}]");
|
|
|
- LogHelper.Info($"【任务{dto.ID}】DDC输出目录[{DdcDir}]");
|
|
|
LogHelper.Info($"【任务{dto.ID}】状态上报输出目录[{StateDir}]");
|
|
|
//点击定位平台右上角查看接口可以在浏览器中查看平台提供的所有接口详细信息
|
|
|
while (!cts.IsCancellationRequested)
|
|
@@ -81,7 +76,7 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
await StopTask(dto.ID, EnumTaskStopType.Error, $"AD采集目录[{CapDir}]不存在");
|
|
|
return;
|
|
|
}
|
|
|
- Directory.CreateDirectory(DdcDir);
|
|
|
+ Directory.CreateDirectory("DdcDir");
|
|
|
Directory.CreateDirectory(PosResDir);
|
|
|
|
|
|
try
|
|
@@ -103,6 +98,7 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
#endregion
|
|
|
|
|
|
#region 第2步,扫描检测结果目录
|
|
|
+ //同一个AD文件得到的不同频点的检测文件FlagNo相同
|
|
|
var groupFiles = Directory.EnumerateFiles(DetectDir, "*.dat", SearchOption.TopDirectoryOnly).Select(p => StringToCheckResFile(p))
|
|
|
.GroupBy(m => Convert.ToInt64(m.DayTime.ToString("yyyyMMdd") + m.FlagNo)).OrderBy(m => m.Key);
|
|
|
if (!groupFiles.Any())
|
|
@@ -113,21 +109,43 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
foreach (var groupFile in groupFiles)//每一组文件代表同一个时刻的
|
|
|
{
|
|
|
if (cts.IsCancellationRequested) break;
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】正在解析序号为{groupFile.First().FlagNo}的检测引导文件");
|
|
|
List<SlotsInfo> listSlotsInfo = new List<SlotsInfo>();//多个频点的时隙结果
|
|
|
+ int idx = 0;
|
|
|
+ DateTime adTime = DateTime.MinValue;
|
|
|
foreach (var item in groupFile)
|
|
|
{
|
|
|
+ if (cts.IsCancellationRequested) break;
|
|
|
var slotsInfo = SlotHelper.GetFileSlots(item.File);//某个频点的所有时隙
|
|
|
- if (!Debugger.IsAttached)
|
|
|
- File.Delete(item.File);//检测检测结果文件
|
|
|
+ adTime = slotsInfo.AdTime;
|
|
|
+ if (idx == 0)
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】序号为{groupFile.First().FlagNo}的检测引导文件对应采集时刻{slotsInfo.AdTime:yyyyMMddHHmmss}");
|
|
|
+ idx++;
|
|
|
if (slotsInfo.Slots.Any())
|
|
|
listSlotsInfo.Add(slotsInfo);
|
|
|
+ else
|
|
|
+ File.Delete(item.File);//删除没有信号的检测引导文件
|
|
|
}
|
|
|
- if (!listSlotsInfo.Any()) continue;
|
|
|
var adFiles = Directory.EnumerateFiles(CapDir, "*.dat", SearchOption.TopDirectoryOnly).Select(p => StringToAdFile(p))
|
|
|
.Where(p => p.AdTime == listSlotsInfo.First().AdTime);
|
|
|
- if (!adFiles.Any())
|
|
|
+ if (!listSlotsInfo.Any())
|
|
|
{
|
|
|
- LogHelper.Warning($"【任务{dto.ID}】{listSlotsInfo.First().AdTime:yyyyMMddHHmmss}时刻找不到原始AD文件,跳过此组文件");
|
|
|
+ //没有突发信号,删除所有对应时刻的采集文件
|
|
|
+ foreach (var item in adFiles)
|
|
|
+ {
|
|
|
+ File.Delete(item.File);
|
|
|
+ }
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (adFiles.Count() != 3)
|
|
|
+ {
|
|
|
+ LogHelper.Warning($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻原始AD文件个数不为3,跳过此组文件");
|
|
|
+ //AD数据不全,删除所有对应时刻的采集文件
|
|
|
+ foreach (var item in adFiles)
|
|
|
+ {
|
|
|
+ File.Delete(item.File);
|
|
|
+ }
|
|
|
continue;
|
|
|
}
|
|
|
var first = listSlotsInfo.First();
|
|
@@ -141,7 +159,7 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
{
|
|
|
var task = Task.Run(() =>
|
|
|
{
|
|
|
- var ddcRes = DDCHelper.DDC(adFile.File, adFile.AdTime, adFile.ChNo, (long)(first.FsampleM * 1e6), (long)(227 * 1e6), DdcDir, sigs);
|
|
|
+ var ddcRes = DDCHelper.DDC(adFile.File, adFile.AdTime, adFile.ChNo, (long)(first.FsampleM * 1e6), (long)(227 * 1e6), "DdcDir", sigs);
|
|
|
chDDCFiles.AddRange(StringToDDCFile(ddcRes));
|
|
|
if (!Debugger.IsAttached)
|
|
|
File.Delete(adFile.File);//删除AD文件
|
|
@@ -149,11 +167,12 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
listTask.Add(task);
|
|
|
}
|
|
|
await Task.WhenAll(listTask);
|
|
|
+ if (cts.IsCancellationRequested) break;
|
|
|
sw.Stop();
|
|
|
- LogHelper.Info($"【任务{dto.ID}】{listSlotsInfo.First().AdTime:yyyyMMddHHmmss}时刻DDC处理完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】{listSlotsInfo.First().AdTime:yyyyMMddHHmmss}时刻3路AD文件DDC处理完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
if (!chDDCFiles.Any())
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{listSlotsInfo.First().AdTime:yyyyMMddHHmmss}时刻DDC处理无结果");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】{listSlotsInfo.First().AdTime:yyyyMMddHHmmss}时刻3路AD文件DDC处理无结果");
|
|
|
continue;
|
|
|
}
|
|
|
var groupDDCFiles = chDDCFiles.GroupBy(p => p.FreqDownMHz);
|
|
@@ -163,23 +182,22 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
//group:同一个时刻同一个频点的多个通道数据
|
|
|
var task = Task.Run(async () =>
|
|
|
{
|
|
|
- var capTime = group.First().AdTime;
|
|
|
var ch0File = group.Where(p => p.ChNo == 0).FirstOrDefault();
|
|
|
var ch1File = group.Where(p => p.ChNo == 1).FirstOrDefault();
|
|
|
var ch2File = group.Where(p => p.ChNo == 2).FirstOrDefault();
|
|
|
if (ch0File == null)
|
|
|
{
|
|
|
- LogHelper.Warning($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-未找到主星信号ch0文件,跳过此组数据");
|
|
|
+ LogHelper.Warning($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-未找到主星信号ch0文件,跳过此组数据");
|
|
|
return;
|
|
|
}
|
|
|
if (ch1File == null)
|
|
|
{
|
|
|
- LogHelper.Warning($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-未找到邻星信号ch1文件,跳过此组数据");
|
|
|
+ LogHelper.Warning($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-未找到邻星信号ch1文件,跳过此组数据");
|
|
|
return;
|
|
|
}
|
|
|
if (ch2File == null)
|
|
|
{
|
|
|
- LogHelper.Warning($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-未找到超短信号ch2文件,跳过此组数据");
|
|
|
+ LogHelper.Warning($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-未找到超短信号ch2文件,跳过此组数据");
|
|
|
return;
|
|
|
}
|
|
|
var sig = sigs.FirstOrDefault(p => p.FreqDownHz == (int)(group.Key * 1e6));
|
|
@@ -187,7 +205,7 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
if (cts.IsCancellationRequested) return;
|
|
|
if (useGpuCg)
|
|
|
{
|
|
|
- LogHelper.Info($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-GPU参估开始,共{sig.Slots.Slots.Count}个突发...");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-GPU参估开始,共{sig.Slots.Slots.Count}个突发...");
|
|
|
sw.Start();
|
|
|
List<GpuCgResponseDto> data1 = new List<GpuCgResponseDto>();
|
|
|
List<GpuCgResponseDto> data2 = new List<GpuCgResponseDto>();
|
|
@@ -236,7 +254,7 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
var result1 = await HttpHelper.PostRequestAsync<List<GpuCgResponseDto>>(baseUrl + "DetectCg/GpuCgCalc", gpudto, token: cts.Token);
|
|
|
if (result1.code != 200)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星邻1星GPU参估出错.{result1.msg}.突发位置{item.StartPoint}-{item.Len}");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星邻1星GPU参估出错.{result1.msg}.突发位置{item.StartPoint}-{item.Len}");
|
|
|
continue;
|
|
|
}
|
|
|
var data1First = result1.data.First();
|
|
@@ -255,7 +273,7 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
var result2 = await HttpHelper.PostRequestAsync<List<GpuCgResponseDto>>(baseUrl + "DetectCg/GpuCgCalc", gpudto, token: cts.Token);
|
|
|
if (result2.code != 200)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星邻2星GPU参估出错.{result2.msg}.突发位置{item.StartPoint}-{item.Len}");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星邻2星GPU参估出错.{result2.msg}.突发位置{item.StartPoint}-{item.Len}");
|
|
|
continue;
|
|
|
}
|
|
|
var data2First = result2.data.First();
|
|
@@ -263,7 +281,7 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
data2.Add(data2First);
|
|
|
}
|
|
|
sw.Stop();
|
|
|
- LogHelper.Info($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-GPU参估完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-GPU参估完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
|
|
|
string mainFile = await HttpHelper.UploadFileAsync(ch0File.File, baseUrl, token: cts.Token);//主星文件
|
|
|
var smpPositions = sig.Slots.Slots.Select(p => new SmpPosition() { TimeSeconds = p.TimeSeconds, smpStart = p.StartPoint, smpCount = p.Len }).ToList();
|
|
@@ -276,20 +294,20 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
var signalResult = await HttpHelper.PostRequestAsync<List<SignalProcResDto>>(baseUrl + "DetectCg/SignalProc", signaldto);
|
|
|
if (signalResult.code != 200)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星信号识别出错.{signalResult.msg}");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星信号识别出错.{signalResult.msg}");
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
- LogHelper.Info($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-GPU参估完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-GPU参估完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
if (data1.Count != data2.Count || data1.Count != sig.Slots.Slots.Count)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-参估结果个数和检测结果个数不匹配");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-参估结果个数和检测结果个数不匹配");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (data1.Count != data2.Count || data1.Count != signalResult.data.Count)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-信号识别结果个数和检测结果个数不匹配");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-信号识别结果个数和检测结果个数不匹配");
|
|
|
return;
|
|
|
}
|
|
|
sw.Start();
|
|
@@ -301,8 +319,8 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
X2D1NoParPosDto x21d = new X2D1NoParPosDto()
|
|
|
{
|
|
|
TaskID = dto.ID,
|
|
|
- //SigTime = capTime.AddSeconds(data1[i].Smpstart / (double)ch0File.Fs),
|
|
|
- SigTime = capTime.AddSeconds(data1[i].TimeSeconds),
|
|
|
+ //SigTime = adTime.AddSeconds(data1[i].Smpstart / (double)ch0File.Fs),
|
|
|
+ SigTime = adTime.AddSeconds(data1[i].TimeSeconds),
|
|
|
MainCode = MainSatCode,
|
|
|
AdjaCode = Adja1SatCode,
|
|
|
MainX = MainSatXYZ[0],
|
|
@@ -322,7 +340,7 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
CdbTxLon = dto.CdbLon,
|
|
|
CdbTxLat = dto.CdbLat,
|
|
|
FreqDown = ch0File.FreqDownMHz * 1e6,
|
|
|
- FreqUp = (ch0File.FreqDownMHz+44) * 1e6,
|
|
|
+ FreqUp = (ch0File.FreqDownMHz + 44) * 1e6,
|
|
|
CheckRes = new CheckResDto()
|
|
|
{
|
|
|
FileName = Path.GetFileName(ch0File.File),
|
|
@@ -334,7 +352,7 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX2D1NoParAsync", x21d);
|
|
|
if (result.code != 200)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】-信号{group.Key}MHz-{capTime:yyyyMMddHHmmss}时刻第{i + 1}个突发定位异常.{result.msg}");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】-信号{group.Key}MHz-{adTime:yyyyMMddHHmmss}时刻第{i + 1}个突发定位异常.{result.msg}");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -346,22 +364,31 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
posLon = 0;
|
|
|
posLat = 0;
|
|
|
}
|
|
|
- double longAxis = 0, shortAxis = 0, dipAngle = 0;
|
|
|
+ ErrEllipseResDto errRes = new ErrEllipseResDto();
|
|
|
if (posLon != 0 && posLat != 0 && posLon != 999 && posLat != 999)
|
|
|
{
|
|
|
- double[] cdbPos = new double[] { dto.CdbLon, dto.CdbLat, 0 };
|
|
|
- double[] refGeod = new double[] { 0, 0, 0 };
|
|
|
#warning 误差椭圆没有提供无参算法 暂时使用有参
|
|
|
- double[] errorEllipse = ErrEllipseHepler.ErrorEllipse2X1D(posLon, posLat, MainSatXYZ, Adja1SatXYZ, cdbPos, refGeod, DtoErrus, EphErrm);
|
|
|
- if (errorEllipse.Length == 3)
|
|
|
+ var errDto = new ErrEllipseX2D1Dto()
|
|
|
{
|
|
|
- longAxis = errorEllipse[0];
|
|
|
- shortAxis = errorEllipse[1];
|
|
|
- dipAngle = errorEllipse[2];
|
|
|
- }
|
|
|
+ MainX = MainSatXYZ[0],
|
|
|
+ MainY = MainSatXYZ[1],
|
|
|
+ MainZ = MainSatXYZ[2],
|
|
|
+ AdjaX = Adja1SatXYZ[0],
|
|
|
+ AdjaY = Adja1SatXYZ[1],
|
|
|
+ AdjaZ = Adja1SatXYZ[2],
|
|
|
+ CdbLon = dto.CdbLon,
|
|
|
+ CdbLat = dto.CdbLat,
|
|
|
+ RefLon = 0,
|
|
|
+ RefLat = 0,
|
|
|
+ PosLon = posLon,
|
|
|
+ PosLat = posLat,
|
|
|
+ OutputErrPoint = false,
|
|
|
+ DtoErrus = DtoErrus,
|
|
|
+ EphErr = EphErrm,
|
|
|
+ };
|
|
|
+ var errResRsp = await HttpHelper.PostRequestAsync<ErrEllipseResDto>(baseUrl + "DetectCg/ErrorEllipse2X1D", errDto);
|
|
|
+ errRes = errResRsp.data;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
sb.Append($"{x21d.SigTime:yyyy}\t");
|
|
|
sb.Append($"{x21d.SigTime:MM}\t");
|
|
@@ -388,9 +415,9 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");
|
|
|
sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");
|
|
|
sb.Append($"{Convert.ToInt64(0 * 1e2):D6}\t");
|
|
|
- sb.Append($"{(long)longAxis:D8}\t");//长轴
|
|
|
- sb.Append($"{(long)shortAxis:D8}\t");//短轴
|
|
|
- sb.Append($"{(long)dipAngle:D7}\t");//倾角
|
|
|
+ sb.Append($"{(long)errRes.LongRadius:D8}\t");//长轴m
|
|
|
+ sb.Append($"{(long)errRes.ShortRadius:D8}\t");//短轴m
|
|
|
+ sb.Append($"{(long)errRes.DipAngle:D7}\t");//倾角°
|
|
|
sb.Append($"{data1.Count:D2}\t");//时隙属性
|
|
|
sb.Append($"{1}\t");//所属卫星
|
|
|
sb.Append($"{950:D3}\t");//置信度
|
|
@@ -403,16 +430,16 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-第{i + 1}个突发定位异常", ex);
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-第{i + 1}个突发定位异常", ex);
|
|
|
}
|
|
|
}
|
|
|
sw.Stop();
|
|
|
- LogHelper.Info($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-定位完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-定位完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
|
|
|
- LogHelper.Info($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-CPU参估开始,共{sig.Slots.Slots.Count}个突发...");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-CPU参估开始,共{sig.Slots.Slots.Count}个突发...");
|
|
|
sw.Start();
|
|
|
string mainFile = await HttpHelper.UploadFileAsync(ch0File.File, baseUrl, token: cts.Token);//主星文件
|
|
|
string adja1File = await HttpHelper.UploadFileAsync(ch1File.File, baseUrl, token: cts.Token);//邻1星文件
|
|
@@ -432,7 +459,7 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
var result1 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
|
|
|
if (result1.code != 200)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻主星邻星CPU参估出错.{result1.msg}");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻主星邻星CPU参估出错.{result1.msg}");
|
|
|
return;
|
|
|
}
|
|
|
cgDto = new CpuCgMultiDto()
|
|
@@ -448,11 +475,11 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
var result2 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
|
|
|
if (result2.code != 200)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星超短CPU参估出错.{result2.msg}");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星超短CPU参估出错.{result2.msg}");
|
|
|
return;
|
|
|
}
|
|
|
sw.Stop();
|
|
|
- LogHelper.Info($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-CPU参估完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-CPU参估完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
var signaldto = new SignalProcDto()
|
|
|
{
|
|
|
File = mainFile,
|
|
@@ -462,22 +489,22 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
var signalResult = await HttpHelper.PostRequestAsync<List<SignalProcResDto>>(baseUrl + "DetectCg/SignalProc", signaldto);
|
|
|
if (signalResult.code != 200)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星信号识别出错.{signalResult.msg}");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星信号识别出错.{signalResult.msg}");
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
- LogHelper.Info($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星超短CPU参估完成");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-主星超短CPU参估完成");
|
|
|
var data1 = result1.data;
|
|
|
var data2 = result2.data;
|
|
|
if (data1.Count != data2.Count || data1.Count != cgDto.smpPositions.Count)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-参估结果个数和检测结果个数不匹配");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-参估结果个数和检测结果个数不匹配");
|
|
|
return;
|
|
|
}
|
|
|
if (data1.Count != signalResult.data.Count)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-信号识别结果个数和检测结果个数不匹配");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-信号识别结果个数和检测结果个数不匹配");
|
|
|
return;
|
|
|
}
|
|
|
sw.Start();
|
|
@@ -489,8 +516,8 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
X2D1NoParPosDto x21d = new X2D1NoParPosDto()
|
|
|
{
|
|
|
TaskID = dto.ID,
|
|
|
- //SigTime = capTime.AddSeconds(data1[i].Smpstart / (double)ch0File.Fs),
|
|
|
- SigTime = capTime.AddSeconds(data1[i].TimeSeconds),
|
|
|
+ //SigTime = adTime.AddSeconds(data1[i].Smpstart / (double)ch0File.Fs),
|
|
|
+ SigTime = adTime.AddSeconds(data1[i].TimeSeconds),
|
|
|
MainCode = MainSatCode,
|
|
|
AdjaCode = Adja1SatCode,
|
|
|
MainX = MainSatXYZ[0],
|
|
@@ -510,7 +537,7 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
CdbTxLon = dto.CdbLon,
|
|
|
CdbTxLat = dto.CdbLat,
|
|
|
FreqDown = ch0File.FreqDownMHz * 1e6,
|
|
|
- FreqUp = (ch0File.FreqDownMHz+44) * 1e6,
|
|
|
+ FreqUp = (ch0File.FreqDownMHz + 44) * 1e6,
|
|
|
CheckRes = new CheckResDto()
|
|
|
{
|
|
|
FileName = Path.GetFileName(ch0File.File),
|
|
@@ -522,7 +549,7 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosX2D1NoParAsync", x21d);
|
|
|
if (result.code != 200)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-时隙位置{data1[i].Smpstart}定位异常.{result.msg}");
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-时隙位置{data1[i].Smpstart}定位异常.{result.msg}");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -534,19 +561,30 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
posLon = 0;
|
|
|
posLat = 0;
|
|
|
}
|
|
|
- double longAxis = 0, shortAxis = 0, dipAngle = 0;
|
|
|
+ ErrEllipseResDto errRes = new ErrEllipseResDto();
|
|
|
if (posLon != 0 && posLat != 0 && posLon != 999 && posLat != 999)
|
|
|
{
|
|
|
- double[] cdbPos = new double[] { dto.CdbLon, dto.CdbLat, 0 };
|
|
|
- double[] refGeod = new double[] { 0, 0, 0 };
|
|
|
#warning 误差椭圆没有提供无参算法 暂时使用有参
|
|
|
- double[] errorEllipse = ErrEllipseHepler.ErrorEllipse2X1D(posLon, posLat, MainSatXYZ, Adja1SatXYZ, cdbPos, refGeod, DtoErrus, EphErrm);
|
|
|
- if (errorEllipse.Length == 3)
|
|
|
+ var errDto = new ErrEllipseX2D1Dto()
|
|
|
{
|
|
|
- longAxis = errorEllipse[0];
|
|
|
- shortAxis = errorEllipse[1];
|
|
|
- dipAngle = errorEllipse[2];
|
|
|
- }
|
|
|
+ MainX = MainSatXYZ[0],
|
|
|
+ MainY = MainSatXYZ[1],
|
|
|
+ MainZ = MainSatXYZ[2],
|
|
|
+ AdjaX = Adja1SatXYZ[0],
|
|
|
+ AdjaY = Adja1SatXYZ[1],
|
|
|
+ AdjaZ = Adja1SatXYZ[2],
|
|
|
+ CdbLon = dto.CdbLon,
|
|
|
+ CdbLat = dto.CdbLat,
|
|
|
+ RefLon = 0,
|
|
|
+ RefLat = 0,
|
|
|
+ PosLon = posLon,
|
|
|
+ PosLat = posLat,
|
|
|
+ OutputErrPoint = false,
|
|
|
+ DtoErrus = DtoErrus,
|
|
|
+ EphErr = EphErrm,
|
|
|
+ };
|
|
|
+ var errResRsp = await HttpHelper.PostRequestAsync<ErrEllipseResDto>(baseUrl + "DetectCg/ErrorEllipse2X1D", errDto);
|
|
|
+ errRes = errResRsp.data;
|
|
|
}
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
sb.Append($"{x21d.SigTime:yyyy}\t");
|
|
@@ -574,9 +612,9 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");
|
|
|
sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");
|
|
|
sb.Append($"{Convert.ToInt64(0 * 1e2):D6}\t");
|
|
|
- sb.Append($"{(long)longAxis:D8}\t");//长轴
|
|
|
- sb.Append($"{(long)shortAxis:D8}\t");//短轴
|
|
|
- sb.Append($"{(long)dipAngle:D7}\t");//倾角
|
|
|
+ sb.Append($"{(long)errRes.LongRadius:D8}\t");//长轴m
|
|
|
+ sb.Append($"{(long)errRes.ShortRadius:D8}\t");//短轴m
|
|
|
+ sb.Append($"{(long)errRes.DipAngle:D7}\t");//倾角°
|
|
|
sb.Append($"{data1.Count:D2}\t");//时隙属性
|
|
|
sb.Append($"{1}\t");//所属卫星
|
|
|
sb.Append($"{950:D3}\t");//置信度
|
|
@@ -589,11 +627,11 @@ namespace X2D1NoRefTaskServer54.Service
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
- LogHelper.Error($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-时隙位置{data1[i].Smpstart}定位异常", ex);
|
|
|
+ LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-时隙位置{data1[i].Smpstart}定位异常", ex);
|
|
|
}
|
|
|
}
|
|
|
sw.Stop();
|
|
|
- LogHelper.Info($"【任务{dto.ID}】{capTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-定位完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
+ LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{group.Key}MHz-定位完成,耗时{sw.ElapsedMilliseconds}ms");
|
|
|
}
|
|
|
//删除DDC文件
|
|
|
File.Delete(ch0File.File);
|