1、增加算法6
This commit is contained in:
parent
8404942dd8
commit
20fdbfff8a
@ -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<GnssCalcData> query = new QueryWrapper<>();
|
||||
query.eq("deviceid", curCalcData.getDeviceid());
|
||||
query.ge("createtime", beginTime);
|
||||
query.orderByAsc("createtime");
|
||||
|
||||
List<GnssCalcData> 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,19 +353,8 @@ 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;
|
||||
}
|
||||
|
||||
double avgPoint(List<GnssCalcData> points, Function<GnssCalcData, Double> getFunction){
|
||||
if(points.size() == 0) return 0;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user