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