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,
|
public double[] calcFilterValueByLastDay(GnssCalcData curCalcData, GnssGroupCalc groupCalc,
|
||||||
double xyCompressRate, double zCompressRate){
|
double xyCompressRate, double zCompressRate){
|
||||||
LocalDateTime now = curCalcData.getCreatetime();
|
LocalDateTime now = curCalcData.getCreatetime();
|
||||||
LocalDateTime beginTime = now.minusHours(25);
|
LocalDateTime beginTime = now.minusHours(48);
|
||||||
QueryWrapper<GnssCalcData> query = new QueryWrapper<>();
|
QueryWrapper<GnssCalcData> query = new QueryWrapper<>();
|
||||||
query.eq("deviceid", curCalcData.getDeviceid());
|
query.eq("deviceid", curCalcData.getDeviceid());
|
||||||
query.ge("createtime", beginTime);
|
query.ge("createtime", beginTime);
|
||||||
query.orderByAsc("createtime");
|
query.orderByAsc("createtime");
|
||||||
|
|
||||||
List<GnssCalcData> calcDataList = repository.selectList(query);
|
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小时
|
else{//周期至少24小时
|
||||||
if(calcDataList.get(0).getCreatetime().isAfter(now.minusHours(24))) return null;
|
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 e = avgPoint(calcDataList, GnssCalcData::getB562e);
|
||||||
double n = avgPoint(calcDataList, GnssCalcData::getB562n);
|
double n = avgPoint(calcDataList, GnssCalcData::getB562n);
|
||||||
double u = avgPoint(calcDataList, GnssCalcData::getB562d);
|
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 new double[]{e,n,u};
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
double avgPoint(List<GnssCalcData> points, Function<GnssCalcData, Double> getFunction){
|
double avgPoint(List<GnssCalcData> points, Function<GnssCalcData, Double> getFunction){
|
||||||
if(points.size() == 0) return 0;
|
if(points.size() == 0) return 0;
|
||||||
|
|||||||
@ -244,6 +244,8 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
|
|||||||
}
|
}
|
||||||
//检查过去24小时是否有有效解,如果没有,用24小时固定解求一个均值作为
|
//检查过去24小时是否有有效解,如果没有,用24小时固定解求一个均值作为
|
||||||
else if(focusCalculator.getReferPoint() == null){
|
else if(focusCalculator.getReferPoint() == null){
|
||||||
|
if(latestRpos != null) focusCalculator.setReferPoint(latestRpos);
|
||||||
|
else {
|
||||||
double[] avgEnu = gnssCalcFilterService.calcFilterValueByLastDay(locationRecord, groupCalc, 0.2, 0.1);
|
double[] avgEnu = gnssCalcFilterService.calcFilterValueByLastDay(locationRecord, groupCalc, 0.2, 0.1);
|
||||||
logger.info("{} calc 24 hours filtered pos", deviceId);
|
logger.info("{} calc 24 hours filtered pos", deviceId);
|
||||||
if (avgEnu != null) {
|
if (avgEnu != null) {
|
||||||
@ -251,6 +253,7 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if(focusCalculator.getVer()==4) {
|
else if(focusCalculator.getVer()==4) {
|
||||||
if(locationRecord.getRpose()!=null) {
|
if(locationRecord.getRpose()!=null) {
|
||||||
focusCalculator.setReferPoint(
|
focusCalculator.setReferPoint(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user