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()};
|
double[] xyz = new double[]{gga.getLongitude()*scale, gga.getLatitude()*scale, gga.getAltitude()*1000, gga.getQuality()};
|
||||||
|
|
||||||
if(gga.getQuality() == 4) {
|
if(gga.isFixed()) {
|
||||||
counterFixedResult++;
|
counterFixedResult++;
|
||||||
pointList.add(xyz);
|
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差分
|
* GPS状态,0初始化,1单点定位,2码差分,3无效PPS,4固定解,5浮点解,6正在估算7,人工输入固定值,8模拟模式,9WAAS差分
|
||||||
*/
|
*/
|
||||||
private int quality;
|
private int quality=0;
|
||||||
private int satellitesInUsed;
|
private int satellitesInUsed=0;
|
||||||
|
|
||||||
public Gga() {
|
public Gga() {
|
||||||
}
|
}
|
||||||
@ -152,4 +152,9 @@ public class Gga {
|
|||||||
this.quality = status;
|
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,9 +89,11 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
|
|||||||
|
|
||||||
// 读取惯导
|
// 读取惯导
|
||||||
Tilt tilt = message.getTilt();
|
Tilt tilt = message.getTilt();
|
||||||
focusCalculator.addTilt(tilt);
|
if(tilt != null) {
|
||||||
if (logger.isDebugEnabled()) {
|
focusCalculator.addTilt(tilt);
|
||||||
logger.debug("测站" + deviceId + "惯导单次解析结果:{}", tilt);
|
if (logger.isDebugEnabled()) {
|
||||||
|
logger.debug("测站" + deviceId + "惯导单次解析结果:{}", tilt);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 延迟
|
// 延迟
|
||||||
@ -99,9 +101,11 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
|
|||||||
|
|
||||||
// 单次b562
|
// 单次b562
|
||||||
double[] doubles = message.getB562_loc();//unit: mm
|
double[] doubles = message.getB562_loc();//unit: mm
|
||||||
focusCalculator.addXyz(doubles,message.getCreateTime());
|
if(doubles !=null) {
|
||||||
if (logger.isDebugEnabled()) {
|
focusCalculator.addXyz(doubles, message.getCreateTime());
|
||||||
logger.debug("测站" + deviceId + "的b562单次解析结果:{}", Arrays.toString(doubles));
|
if (logger.isDebugEnabled()) {
|
||||||
|
logger.debug("测站" + deviceId + "的b562单次解析结果:{}", Arrays.toString(doubles));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 单次GGA
|
// 单次GGA
|
||||||
@ -256,4 +260,9 @@ public class SingleLineGNSSCalcService implements GNSSDataCalcService {
|
|||||||
calculatorMap.clear();
|
calculatorMap.clear();
|
||||||
logger.info("group paras changed");
|
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;
|
package com.imdroid.sideslope.executor;
|
||||||
|
|
||||||
|
import com.imdroid.common.util.ThreadManager;
|
||||||
import com.imdroid.secapi.client.BeidouClient;
|
import com.imdroid.secapi.client.BeidouClient;
|
||||||
import com.imdroid.secapi.dto.GnssDevice;
|
import com.imdroid.secapi.dto.GnssDevice;
|
||||||
import com.imdroid.sideslope.bd.Gga;
|
import com.imdroid.sideslope.bd.Gga;
|
||||||
|
import com.imdroid.sideslope.calc.GNSSDataCalcService;
|
||||||
import com.imdroid.sideslope.message.D331RtcmMessage;
|
import com.imdroid.sideslope.message.D331RtcmMessage;
|
||||||
|
import com.imdroid.sideslope.message.D341LocationMessage;
|
||||||
import com.imdroid.sideslope.sal.Device;
|
import com.imdroid.sideslope.sal.Device;
|
||||||
import com.imdroid.sideslope.sal.DeviceService;
|
import com.imdroid.sideslope.sal.DeviceService;
|
||||||
import com.imdroid.sideslope.server.DeviceChannel;
|
import com.imdroid.sideslope.server.DeviceChannel;
|
||||||
@ -31,6 +34,8 @@ public class D331RtcmMessageExecutor implements Executor<D331RtcmMessage, Void>
|
|||||||
private DeviceService deviceService;
|
private DeviceService deviceService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private BeidouClient beidouClient;
|
private BeidouClient beidouClient;
|
||||||
|
@Autowired
|
||||||
|
private GNSSDataCalcService gnssCalcService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Void execute(D331RtcmMessage message) {
|
public Void execute(D331RtcmMessage message) {
|
||||||
@ -68,17 +73,22 @@ public class D331RtcmMessageExecutor implements Executor<D331RtcmMessage, Void>
|
|||||||
Gga gga = message.getGga();
|
Gga gga = message.getGga();
|
||||||
if(gga != null) {
|
if(gga != null) {
|
||||||
device1.updateSatelitesNum(gga.getSatellitesInUsed());
|
device1.updateSatelitesNum(gga.getSatellitesInUsed());
|
||||||
if(gga.getQuality()>0 && gga.getQuality()<6) {
|
if(gga.isFixed()) {
|
||||||
device1.setLatitude(gga.getLatitude());
|
device1.setLatitude(gga.getLatitude());
|
||||||
device1.setLongitude(gga.getLongitude());
|
device1.setLongitude(gga.getLongitude());
|
||||||
device1.setAltitude(gga.getAltitude());
|
device1.setAltitude(gga.getAltitude());
|
||||||
}
|
}
|
||||||
/*logger.info(message.getId()+
|
// 借D341做GGA的统计分析
|
||||||
" lat: "+gga.getLatitude()+
|
D341LocationMessage d341Message = new D341LocationMessage();
|
||||||
" lon:"+gga.getLongitude()+
|
d341Message.setGga(gga);
|
||||||
" alt: "+gga.getAltitude()+
|
d341Message.setId(message.getId());
|
||||||
" sat: "+gga.getSatellitesInUsed()+
|
d341Message.setTenantId(message.getTenantId());
|
||||||
" quality: "+gga.getQuality());*/
|
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();
|
Gga gga = message.getGga();
|
||||||
if(gga != null) {
|
if(gga != null) {
|
||||||
device.updateSatelitesNum(gga.getSatellitesInUsed());
|
device.updateSatelitesNum(gga.getSatellitesInUsed());
|
||||||
if(gga.getQuality()>0 && gga.getQuality()<6) {
|
if(gga.isFixed()) {
|
||||||
device.setLatitude(gga.getLatitude());
|
device.setLatitude(gga.getLatitude());
|
||||||
device.setLongitude(gga.getLongitude());
|
device.setLongitude(gga.getLongitude());
|
||||||
device.setAltitude(gga.getAltitude());
|
device.setAltitude(gga.getAltitude());
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.imdroid.sideslope.message;
|
package com.imdroid.sideslope.message;
|
||||||
|
|
||||||
import com.imdroid.sideslope.bd.Gga;
|
import com.imdroid.sideslope.bd.Gga;
|
||||||
|
import com.imdroid.sideslope.bd.Tilt;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
@ -12,6 +13,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper=true)
|
@EqualsAndHashCode(callSuper=true)
|
||||||
public class D331RtcmMessage extends BaseMessage {
|
public class D331RtcmMessage extends BaseMessage {
|
||||||
|
Tilt tilt;
|
||||||
Gga gga;
|
Gga gga;
|
||||||
int packetNum;
|
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);
|
String msg = String.format("id[%s],长度字段值[%s]效益包的消息体长度[%s]", id, this.len, src.readableBytes() - 4);
|
||||||
WrongMessageRecorder.INSTANCE.append("receive wrong message," + msg);
|
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);
|
gga = Gga.getFrom(src);
|
||||||
this.srcData = new byte[src.readableBytes()];
|
this.srcData = new byte[src.readableBytes()];
|
||||||
src.readBytes(this.srcData);
|
src.readBytes(this.srcData);
|
||||||
|
|||||||
@ -74,6 +74,7 @@ public class ApiController {
|
|||||||
public HttpResp deviceParamChanged(String deviceId) {
|
public HttpResp deviceParamChanged(String deviceId) {
|
||||||
// 更新设备缓存
|
// 更新设备缓存
|
||||||
localDeviceService.refresh(deviceId);
|
localDeviceService.refresh(deviceId);
|
||||||
|
calcService.refreshGroupCalc(deviceId);
|
||||||
|
|
||||||
HttpResp resp = new HttpResp();
|
HttpResp resp = new HttpResp();
|
||||||
resp.setResponseMessage("succeed");
|
resp.setResponseMessage("succeed");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user