1、解算数据表增加一个字段:是否稳定。每次滤波时检查滤波窗口内的原始数据时间,当前时间距离最后一条时间超过滤波窗口的2/3时,稳定字段设为true,否则false

2、周跳判断改为东+北的位移之和与门限比较,门限改为800mm
This commit is contained in:
weidong 2025-03-17 13:49:32 +08:00
parent 7bfc7ec610
commit 05a83e33a1

View File

@ -213,6 +213,7 @@ public class GNSSCalcFilterService {
int xyCount = 1; int xyCount = 1;
int zCount = 1; int zCount = 1;
int minCount = 1; int minCount = 1;
LocalDateTime lastRecordTime = null;
for (GnssCalcData record : gnssHistoryRecords) { for (GnssCalcData record : gnssHistoryRecords) {
if (record.getEnabled()) {//只选取好点参与滤波 if (record.getEnabled()) {//只选取好点参与滤波
@ -225,8 +226,10 @@ public class GNSSCalcFilterService {
sumD += record.getB562d(); sumD += record.getB562d();
zCount++; zCount++;
} }
//记录最后一条有效解的时间
lastRecordTime = record.getCreatetime();
// 计算短周期 // 计算短周期
if(record.getCreatetime().isAfter(minCycleTime)){ if(lastRecordTime.isAfter(minCycleTime)){
msumE = sumE; msumE = sumE;
msumN = sumN; msumN = sumN;
msumD = sumD; msumD = sumD;
@ -242,6 +245,8 @@ public class GNSSCalcFilterService {
newRecord.setAuxe(NumberUtils.scaleTwo(msumE / minCount)); newRecord.setAuxe(NumberUtils.scaleTwo(msumE / minCount));
newRecord.setAuxn(NumberUtils.scaleTwo(msumN / minCount)); newRecord.setAuxn(NumberUtils.scaleTwo(msumN / minCount));
newRecord.setAuxd(NumberUtils.scaleTwo(msumD / minCount)); newRecord.setAuxd(NumberUtils.scaleTwo(msumD / minCount));
//滤波窗口里的时间跨度超过滤波时间的2/3才认为稳定
newRecord.setStabled(lastRecordTime.isBefore(newRecordTime.minusHours(filterCycleHour * 2 / 3)));
return true; return true;
} }
} }