From 872f1d21ecbf397422d396266b2ccef6af857949 Mon Sep 17 00:00:00 2001 From: fengyarnom Date: Tue, 20 May 2025 11:51:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9PWV=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/rtklib/TcpRtkServer.java | 6 +++--- .../java/com/rtklib/util/PwvCalculator.java | 21 +++++++------------ 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/ntrip_load-main/src/main/java/com/rtklib/TcpRtkServer.java b/ntrip_load-main/src/main/java/com/rtklib/TcpRtkServer.java index d6dca62..318aa35 100644 --- a/ntrip_load-main/src/main/java/com/rtklib/TcpRtkServer.java +++ b/ntrip_load-main/src/main/java/com/rtklib/TcpRtkServer.java @@ -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); } } -} \ No newline at end of file +} diff --git a/ntrip_load-main/src/main/java/com/rtklib/util/PwvCalculator.java b/ntrip_load-main/src/main/java/com/rtklib/util/PwvCalculator.java index f06bd07..a66a384 100644 --- a/ntrip_load-main/src/main/java/com/rtklib/util/PwvCalculator.java +++ b/ntrip_load-main/src/main/java/com/rtklib/util/PwvCalculator.java @@ -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; } } -} \ No newline at end of file +} \ No newline at end of file