1、算法3增加对基站的GGA的处理
This commit is contained in:
parent
fd2b4632ed
commit
3e94ac253a
@ -36,7 +36,7 @@ public class FocusCalculator3 extends FocusCalculator1{
|
||||
|
||||
double[] xyz = new double[]{gga.getLongitude()*scale, gga.getLatitude()*scale, gga.getAltitude()*1000, gga.getQuality()};
|
||||
|
||||
if(gga.getQuality() == 4) {
|
||||
if(gga.isFixed()) {
|
||||
counterFixedResult++;
|
||||
pointList.add(xyz);
|
||||
}
|
||||
|
||||
@ -17,23 +17,23 @@ public class Gga {
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private double latitude;
|
||||
private double latitude=0;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private double longitude;
|
||||
private double longitude=0;
|
||||
|
||||
/**
|
||||
* 海拔
|
||||
*/
|
||||
private double altitude;
|
||||
private double altitude=0;
|
||||
|
||||
/**
|
||||
* GPS状态,0初始化,1单点定位,2码差分,3无效PPS,4固定解,5浮点解,6正在估算7,人工输入固定值,8模拟模式,9WAAS差分
|
||||
*/
|
||||
private int quality;
|
||||
private int satellitesInUsed;
|
||||
private int quality=0;
|
||||
private int satellitesInUsed=0;
|
||||
|
||||
public Gga() {
|
||||
}
|
||||
@ -152,4 +152,9 @@ public class Gga {
|
||||
this.quality = status;
|
||||
}
|
||||
|
||||
public boolean isFixed(){
|
||||
//Possible values for quality: 0 = No fix, 1 = autonomous GNSS fix, 2 = differential GNSS fix, 4 = RTK fixed, 5 = RTK float, 6 =
|
||||
//estimated/dead reckoning fix
|
||||
return (quality==1 || quality==2 || quality==4);
|
||||
}
|
||||
}
|
||||
|
||||
@ -89,20 +89,24 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
|
||||
|
||||
// 读取惯导
|
||||
Tilt tilt = message.getTilt();
|
||||
if(tilt != null) {
|
||||
focusCalculator.addTilt(tilt);
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("测站" + deviceId + "惯导单次解析结果:{}", tilt);
|
||||
}
|
||||
}
|
||||
|
||||
// 延迟
|
||||
focusCalculator.addDelayMs(message.getPps());
|
||||
|
||||
// 单次b562
|
||||
double[] doubles = message.getB562_loc();//unit: mm
|
||||
if(doubles !=null) {
|
||||
focusCalculator.addXyz(doubles, message.getCreateTime());
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("测站" + deviceId + "的b562单次解析结果:{}", Arrays.toString(doubles));
|
||||
}
|
||||
}
|
||||
|
||||
// 单次GGA
|
||||
Gga gga = message.getGga();
|
||||
@ -256,4 +260,9 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
|
||||
calculatorMap.clear();
|
||||
logger.info("group paras changed");
|
||||
}
|
||||
|
||||
public void refreshGroupCalc(String deviceId){
|
||||
calculatorMap.remove(deviceId);
|
||||
logger.info("device paras changed");
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,9 +1,12 @@
|
||||
package com.imdroid.sideslope.executor;
|
||||
|
||||
import com.imdroid.common.util.ThreadManager;
|
||||
import com.imdroid.secapi.client.BeidouClient;
|
||||
import com.imdroid.secapi.dto.GnssDevice;
|
||||
import com.imdroid.sideslope.bd.Gga;
|
||||
import com.imdroid.sideslope.calc.GNSSDataCalcService;
|
||||
import com.imdroid.sideslope.message.D331RtcmMessage;
|
||||
import com.imdroid.sideslope.message.D341LocationMessage;
|
||||
import com.imdroid.sideslope.sal.Device;
|
||||
import com.imdroid.sideslope.sal.DeviceService;
|
||||
import com.imdroid.sideslope.server.DeviceChannel;
|
||||
@ -31,6 +34,8 @@ public class D331RtcmMessageExecutor implements Executor<D331RtcmMessage, Void>
|
||||
private DeviceService deviceService;
|
||||
@Autowired
|
||||
private BeidouClient beidouClient;
|
||||
@Autowired
|
||||
private GNSSDataCalcService gnssCalcService;
|
||||
|
||||
@Override
|
||||
public Void execute(D331RtcmMessage message) {
|
||||
@ -68,17 +73,22 @@ public class D331RtcmMessageExecutor implements Executor<D331RtcmMessage, Void>
|
||||
Gga gga = message.getGga();
|
||||
if(gga != null) {
|
||||
device1.updateSatelitesNum(gga.getSatellitesInUsed());
|
||||
if(gga.getQuality()>0 && gga.getQuality()<6) {
|
||||
if(gga.isFixed()) {
|
||||
device1.setLatitude(gga.getLatitude());
|
||||
device1.setLongitude(gga.getLongitude());
|
||||
device1.setAltitude(gga.getAltitude());
|
||||
}
|
||||
/*logger.info(message.getId()+
|
||||
" lat: "+gga.getLatitude()+
|
||||
" lon:"+gga.getLongitude()+
|
||||
" alt: "+gga.getAltitude()+
|
||||
" sat: "+gga.getSatellitesInUsed()+
|
||||
" quality: "+gga.getQuality());*/
|
||||
// 借D341做GGA的统计分析
|
||||
D341LocationMessage d341Message = new D341LocationMessage();
|
||||
d341Message.setGga(gga);
|
||||
d341Message.setId(message.getId());
|
||||
d341Message.setTenantId(message.getTenantId());
|
||||
d341Message.setPps(message.getPps());
|
||||
d341Message.setTilt(message.getTilt());
|
||||
d341Message.setB562_loc(null);
|
||||
ThreadManager.getFixedThreadPool().submit(() -> {
|
||||
gnssCalcService.calcSingle(d341Message,true);
|
||||
});
|
||||
}
|
||||
|
||||
// 收到第一个数据包,如果控制通道没连接,也通知上线
|
||||
|
||||
@ -47,7 +47,7 @@ public class D341LocationMessageExecutor implements Executor<D341LocationMessage
|
||||
Gga gga = message.getGga();
|
||||
if(gga != null) {
|
||||
device.updateSatelitesNum(gga.getSatellitesInUsed());
|
||||
if(gga.getQuality()>0 && gga.getQuality()<6) {
|
||||
if(gga.isFixed()) {
|
||||
device.setLatitude(gga.getLatitude());
|
||||
device.setLongitude(gga.getLongitude());
|
||||
device.setAltitude(gga.getAltitude());
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.imdroid.sideslope.message;
|
||||
|
||||
import com.imdroid.sideslope.bd.Gga;
|
||||
import com.imdroid.sideslope.bd.Tilt;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@ -12,6 +13,7 @@ import lombok.EqualsAndHashCode;
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper=true)
|
||||
public class D331RtcmMessage extends BaseMessage {
|
||||
Tilt tilt;
|
||||
Gga gga;
|
||||
int packetNum;
|
||||
|
||||
@ -38,6 +40,8 @@ public class D331RtcmMessage extends BaseMessage {
|
||||
String msg = String.format("id[%s],长度字段值[%s]效益包的消息体长度[%s]", id, this.len, src.readableBytes() - 4);
|
||||
WrongMessageRecorder.INSTANCE.append("receive wrong message," + msg);
|
||||
}*/
|
||||
this.pps = src.getUnsignedShort(pos);pos+=2;
|
||||
tilt = new Tilt(src.getFloat(pos), src.getFloat(pos+4),src.getFloat(pos+8),src.getFloat(pos+12));
|
||||
gga = Gga.getFrom(src);
|
||||
this.srcData = new byte[src.readableBytes()];
|
||||
src.readBytes(this.srcData);
|
||||
|
||||
@ -74,6 +74,7 @@ public class ApiController {
|
||||
public HttpResp deviceParamChanged(String deviceId) {
|
||||
// 更新设备缓存
|
||||
localDeviceService.refresh(deviceId);
|
||||
calcService.refreshGroupCalc(deviceId);
|
||||
|
||||
HttpResp resp = new HttpResp();
|
||||
resp.setResponseMessage("succeed");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user