利用探空站数据(怀俄明和IGRA)和ERA5计算ZTD、ZHD和ZWD

 1.有关 Matlab 获取代码关注咸鱼获取:

怀俄明探空站数据解算PWV和Tm

怀俄明多线程下载探空站数据(包括检查和下载遗漏数据的代码)

对IGRAv2进行质量控制得到PWV和Tm的 matlab 代码

算 IGRAv2 探空站的 Tm 和 PWV

提取探空站 IGRAv2 全部数据:

ERA5 解算合集(温度、气压、PWV、水汽压和 Tm)代码获取

2.计算ZWD

    计算ZWD使用温度、水汽压、高程,利用下面公式进行计算。

     水汽压的计算方法使用ECMWF里面的公式进行计算(ECMWF, 2007. IFS Documentation CY31R1 - Part II: Data Assimilation. https://doi.org/10.21957/m46uhsu4q.),它是把温度分为三个区间:

3.计算ZHD

    计算ZHD使用气压、纬度和海拔,利用Saastamoinen模型得到。

参考文献:Saastamoinen, J., 1972. Atmospheric Correction for the Troposphere and Stratosphere in Radio Ranging Satellites. In: Henriksen, S.W., Mancini, A., Chovitz, B.H. (Eds.), Geophysical Monograph Series. American Geophysical Union, Washington, D.C., pp. 247–251. https://doi.org/10.1029/GM015p0247.

4.计算ZTD

    使用ZHD+ZWD=ZTD。

5.代码获取

关注上面的咸鱼,里面有三种方法计算,怀俄明探空站点、IGRAv2探空站点和ERA5格网计算

### 获取处理 ERA5 大气可降水量 (PWV) 数据 ERA5 是欧洲中期天气预报中心(ECMWF)提供的一种再分析数据集,广泛用于气象学研究其他领域。通过 ERA5 数据可以获得大气中的多种变量,其中包括大气可降水量(Precipitable Water Vapor, PWV)。以下是关于如何获取处理 ERA5 的 PWV 数据的具体方法。 #### 1. 使用 ERA5 合集计算 PWV ERA5 提供了多个层次的大气参数,例如温度、气压以及水汽压等。这些参数可以通过特定算法组合来估算 PWV 值。一种常见的方法基于分层积分法: \[ \text{PWV} = g^{-1} \sum_{i=1}^{n} e_i h_i / T_m \] 其中 \(e_i\) 表示第 \(i\) 层的大气水汽压,\(h_i\) 表示该层的高度差,而 \(T_m\) 则代表平均温度[^1]。此公式适用于多层模型,并且能够较为精确地反映实际条件下的 PWV 数值。 对于 GNSS 测量点而言,通常会选取靠近目标区域的四个网格节点并应用反距离权重插值技术来进行空间上的调整[^3]。这一步骤有助于提高局部精度,使得最终获得的结果更加贴近真实情况。 #### 2. 访问 ECMWF 官方资源下载原始资料 为了直接取得包含所需物理量在内的高分辨率全球数值模拟成果文件,访问 ECMWF 的气候数据中心(Climate Data Store, CDS)是最推荐的方式之一。在这里可以根据需求定制时间范围、地理边界以及其他筛选选项从而提取出适合进一步加工使用的原始记录集合。 具体操作流程如下所示: - 注册账户登录至 https://cds.climate.copernicus.eu/ ; - 寻找对应产品类别下标记为 “reanalysis-era5-pressure-levels” 或者其他关联标签项; - 设置查询过滤器以限定输出字段仅保留必要的几个要素比如 geopotential height , specific humidity etc.; - 下载所得压缩包形式档案后按照说明文档指示完成本地解析工作. #### Python 实现案例 下面给出一段简单的 python 脚本作为示范用途展示怎样读取 netCDF 类型格式存储下来的 era5 数据并且执行基本运算得出 pwv 结果: ```python import numpy as np from netCDF4 import Dataset def calculate_pwv(file_path): dataset = Dataset(file_path) levels = dataset.variables['level'][:] # Pressure level values in Pa q = dataset.variables['q'][:].data # Specific humidity [kg/kg] t = dataset.variables['t'][:].data # Temperature [K] R_d = 287.05 # Gas constant dry air J/(kg·K) g = 9.8 # Gravitational acceleration m/s² # Convert pressure from Pa to hPa and compute layer thicknesses. p_top = np.append(levels[1:], 0.) dp = -(levels - p_top)*100 # Layer thickness dP in Pascals # Compute water vapor partial pressures using the ideal gas law. e = q * levels[:, None]*100 / ((R_d*t)/g + q*levels[:,None]) # Integrate over all layers to get total columnar PWV. pwv = np.trapz(e[::-1], x=np.log(dp)[::-1]) return pwv.mean() pwv_value = calculate_pwv('path_to_your_file.nc') print(f'Calculated PWV value is {round(pwv_value, 2)} mm.') ``` 上述脚本定义了一个函数 `calculate_pwv` 来加载指定路径处保存好的 nc 文件进而调用内部逻辑实现逐层累加直至返回全局均值意义上的 pwv 数字表达式. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WZZHHH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值