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