修改PWV计算
This commit is contained in:
parent
3ff9cbbd50
commit
872f1d21ec
@ -272,7 +272,7 @@ public class TcpRtkServer implements CommandLineRunner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 每10分钟执行一次数据保存
|
// 每10分钟执行一次数据保存
|
||||||
@Scheduled(fixedRate = 600000) // 600000毫秒 = 10分钟
|
@Scheduled(fixedRate = 60000) // 600000毫秒 = 10分钟
|
||||||
public void saveData() {
|
public void saveData() {
|
||||||
try {
|
try {
|
||||||
RtkData currentData = latestData.get();
|
RtkData currentData = latestData.get();
|
||||||
@ -288,7 +288,7 @@ public class TcpRtkServer implements CommandLineRunner {
|
|||||||
|
|
||||||
// 检查是否需要保存(距离上次保存超过10分钟)
|
// 检查是否需要保存(距离上次保存超过10分钟)
|
||||||
if (lastSaveTime == null ||
|
if (lastSaveTime == null ||
|
||||||
ChronoUnit.MINUTES.between(lastSaveTime, now) >= 10) {
|
ChronoUnit.MINUTES.between(lastSaveTime, now) >= 1) {
|
||||||
|
|
||||||
rtkDataRepository.save(currentData);
|
rtkDataRepository.save(currentData);
|
||||||
lastSaveTime = now;
|
lastSaveTime = now;
|
||||||
|
|||||||
@ -32,22 +32,17 @@ public class PwvCalculator {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1. 计算ZHD(静力学延迟),标准Saastamoinen公式
|
// 1. 计算ZHD(静力学延迟)
|
||||||
double lat = Math.toRadians(data.getLatitude()); // 转换为弧度
|
double lat = Math.toRadians(data.getLatitude()); // 转换为弧度
|
||||||
double h = data.getHeight() / 1000.0; // 高度转换为千米
|
double zhd = (0.0022768 * data.getSurfacePressure()) /
|
||||||
double p = data.getSurfacePressure(); // 气压,单位hPa
|
(1 - 0.00266 * Math.cos(2 * lat) - 0.00028 * (data.getHeight() / 1000.0));
|
||||||
|
|
||||||
// 计算ZHD (单位:mm)
|
// 2. 计算ZWD(湿延迟)
|
||||||
// 标准公式:ZHD = (2.2767 * p) / (1 - 0.00266 * cos(2φ) - 0.00028 * h)
|
|
||||||
double f = 1.0 - 0.00266 * Math.cos(2 * lat) - 0.00028 * h;
|
|
||||||
double zhd = (2.2767 * p) / f;
|
|
||||||
|
|
||||||
// 2. 计算ZWD(湿延迟,单位:mm)
|
|
||||||
double zwd = data.getZtd() - zhd;
|
double zwd = data.getZtd() - zhd;
|
||||||
|
|
||||||
// 记录中间计算结果
|
// 记录中间计算结果
|
||||||
logger.info("ZHD计算中间值: 纬度={}°({}rad), 高度={}m({}km), 气压={}hPa, f={}, ZHD={}mm",
|
logger.info("ZHD计算中间值: 纬度={}°({}rad), 高度={}m, 气压={}Pa, ZHD={}mm",
|
||||||
data.getLatitude(), lat, data.getHeight(), h, p, f, zhd);
|
data.getLatitude(), lat, data.getHeight(), data.getSurfacePressure(), zhd);
|
||||||
|
|
||||||
// 3. 计算Tm(加权平均温度)
|
// 3. 计算Tm(加权平均温度)
|
||||||
double ts_K = data.getSurfaceTemp() + 273.15; // 转换为开尔文温度
|
double ts_K = data.getSurfaceTemp() + 273.15; // 转换为开尔文温度
|
||||||
@ -58,7 +53,7 @@ public class PwvCalculator {
|
|||||||
double tao = b / (ROUW * RV * (K2P + K3 / tm));
|
double tao = b / (ROUW * RV * (K2P + K3 / tm));
|
||||||
|
|
||||||
// 5. 计算PWV(以毫米为单位)
|
// 5. 计算PWV(以毫米为单位)
|
||||||
double pwv = zwd * tao;
|
double pwv = zwd * tao * 1000;
|
||||||
data.setPwv(pwv);
|
data.setPwv(pwv);
|
||||||
|
|
||||||
logger.info("PWV计算成功: ZTD={}mm, ZHD={}mm, ZWD={}mm, Tm={}K, PWV={}mm",
|
logger.info("PWV计算成功: ZTD={}mm, ZHD={}mm, ZWD={}mm, Tm={}K, PWV={}mm",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user