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 a6caaba9..2b2fb541 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 @@ -337,14 +337,14 @@ public class GNSSCalcFilterService { public double[] calcFilterValueByLastDay(GnssCalcData curCalcData, GnssGroupCalc groupCalc, double xyCompressRate, double zCompressRate){ LocalDateTime now = curCalcData.getCreatetime(); - LocalDateTime beginTime = now.minusHours(25); + LocalDateTime beginTime = now.minusHours(48); QueryWrapper query = new QueryWrapper<>(); query.eq("deviceid", curCalcData.getDeviceid()); query.ge("createtime", beginTime); query.orderByAsc("createtime"); List calcDataList = repository.selectList(query); - if(calcDataList.size()<16*6) return null; //至少有2/3的时间有固定解 + if(calcDataList.size()<24*6) return null; //至少有2/3的时间有固定解 else{//周期至少24小时 if(calcDataList.get(0).getCreatetime().isAfter(now.minusHours(24))) return null; } @@ -353,18 +353,7 @@ public class GNSSCalcFilterService { double e = avgPoint(calcDataList, GnssCalcData::getB562e); double n = avgPoint(calcDataList, GnssCalcData::getB562n); double u = avgPoint(calcDataList, GnssCalcData::getB562d); - - // 比较是否是好点 - if(Math.abs(e-curCalcData.getB562e())*xyCompressRate<=groupCalc.getXy_threshold() && - Math.abs(n-curCalcData.getB562n())*xyCompressRate<=groupCalc.getXy_threshold()&& - Math.abs(u-curCalcData.getB562d())*zCompressRate<=groupCalc.getZ_threshold()){ - curCalcData.setEnabled(true); - curCalcData.setRpose(NumberUtils.scaleTwo(e)); - curCalcData.setRposn(NumberUtils.scaleTwo(n)); - curCalcData.setRposd(NumberUtils.scaleTwo(u)); - return new double[]{e,n,u}; - } - return null; + return new double[]{e,n,u}; } double avgPoint(List points, Function getFunction){ diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/SingleLineGNSSCalcService.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/SingleLineGNSSCalcService.java index 72ee3bcc..ecad7ec2 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/SingleLineGNSSCalcService.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/calc/SingleLineGNSSCalcService.java @@ -244,10 +244,13 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService { } //检查过去24小时是否有有效解,如果没有,用24小时固定解求一个均值作为 else if(focusCalculator.getReferPoint() == null){ - double[] avgEnu = gnssCalcFilterService.calcFilterValueByLastDay(locationRecord, groupCalc,0.2,0.1); - logger.info("{} calc 24 hours filtered pos",deviceId); - if(avgEnu != null){ - ((FocusCalculator6)focusCalculator).setOriginalReferPoint(avgEnu); + if(latestRpos != null) focusCalculator.setReferPoint(latestRpos); + else { + double[] avgEnu = gnssCalcFilterService.calcFilterValueByLastDay(locationRecord, groupCalc, 0.2, 0.1); + logger.info("{} calc 24 hours filtered pos", deviceId); + if (avgEnu != null) { + ((FocusCalculator6) focusCalculator).setOriginalReferPoint(avgEnu); + } } } }