【保姆级教程/代码】利用IGS站对流层ZTD数据反演GNSS水汽(PWV)

1 下载IGS ZTD数据

打开以下链接
https://cddis.nasa.gov/archive/gnss/products/troposphere/zpd/
注册个账号,选择你要的数据年份点进去
在这里插入图片描述

再选择天数
在这里插入图片描述

选择要下的站,红线处就是站的名字
在这里插入图片描述

2 提取IGS ZTD数据

IGS站的数据是一天一个,我写了个批量提取、合并多天的MATLAB代码:

%% 处理ZTD
filepath='C:\Users\Administrator\Desktop\新建文件夹\原始ZTD';
station='WUHN';year='2025';begin=52;last=69;
IgsZTD=ReadIgsZTD(filepath,station,year,begin,last);
IGS_ZTD=IgsZTD(:,2);%ZTD
IgsZTD_TIME=datevec(IgsZTD(:,1));%时间
figure;
scatter(IgsZTD(:,1),IGS_ZTD,10,'filled');
dateaxis('x',6);ylabel('ZTD (m)');xlabel('日期');grid on;box on;
set(gca,'LineWidth',1,'FontSize',12);set(gcf,'color','white')

在这里插入图片描述

3 下载ERA5气象数据

下载测站附近ERA5数据,ERA5的数据是格网,我写了个批量提取、插值到IGS测站处的MATLAB代码(以气温为例):

%% 处理ERA5
[Lon,Lat,H]=xyz2blh(-2267750.127,5009154.167,3221290.537);
ncFilePath1='C:\Users\Administrator\Desktop\新建文件夹\原始ERA5\2.nc';
ncFilePath2='C:\Users\Administrator\Desktop\新建文件夹\原始ERA5\3.nc';
A2=readERA5(ncFilePath1,Lat,Lon,H);
A3=readERA5(ncFilePath2,Lat,Lon,H);
TEMP=[A2(:,2);A3(:,2)];%气温
ERA5_TIME=[A2(:,1);A3(:,1)];ERA5_TIME2=datevec(ERA5_TIME(:,1));%时间
figure;
plot(ERA5_TIME,TEMP,LineWidth=2);
dateaxis('x',6);ylabel('气温 (K)');xlabel('日期');grid on;box on;
set(gca,'LineWidth',1,'FontSize',12);set(gcf,'color','white')

在这里插入图片描述

4 反演GNSS PWV

提取完测站处的ERA5数据后,就可以反演GNSS PWV了。

[GNSS_PWV,Tm]=calculatePWV(ZTDc,ZHDc,Ts)

在这里插入图片描述
完整代码可以上我的咸鱼号:GNSS_MET

### 对流层天顶总延迟 (ZTD) 的概念 对流层天顶总延迟是指电磁波信号通过大气对流层时产生的路径延长效应,在垂直方向上的投影。这一参数对于GNSS定位精度至关重要,因为对流层延迟会显著影响卫星信号传播的时间。 #### 干延迟与湿延迟 对流层天顶总延迟由两部分组成: - **干延迟(Dry Delay, ZHD)**:主要受大气中干燥成分的影响,如氮气和氧气。这部分延迟相对稳定,可以通过气象模型精确预测[^1]。 - **湿延迟(Wet Delay, ZWD)**:取决于空气中水汽含量的变化,具有较大的时空变异性。由于水汽分布复杂多变,因此湿延迟难以准确预报,通常需要实测数据来估计。 #### 总延迟计算公式 对流层天顶总延迟可以表示为这两者的叠加: \[ \text{ZTD} = \text{ZHD} + \text{ZWD} \] 其中, - \( \text{ZHD} \approx 2.3e^{-6}\frac{\rho_0}{T_0}(H+\Delta H)\cdot P_s\ ) - \( \text{ZWD}=k_1\frac{T_e}{P_v}- k_2\ln(P_v/T_e)+k_3(T-T_{std}) \) 这里\( T_e,e,P_v,T,\rho_0,H\)分别代表地面温度、饱和水汽压、实际水汽压、观测时刻气温、海平面空气密度以及高度差;而\( k_i(i=1,2,3)\ )是经验常数。 #### 实际应用中的获取方式 为了提高GNSS测量精度,国际GNSS服务(IGS)提供了全球范围内的对流层天顶延迟(ZPD)产品,这些数据可以从指定服务器上下载并解析使用。例如,利用MATLAB脚本每隔一定时间间隔读取一次ZPD文件中的信息,从而实现连续监测点处的大气状态变化情况[^2]。 ```matlab % MATLAB代码片段用于读取IGS提供的ZPD文件 url = 'ftp://cddis.gsfc.nasa.gov/gps/products/trop_zpd'; year = 2015; doy = sprintf('%03d', 1); % Day of Year as string with leading zeros station_code = 'lhaz'; filename = fullfile(url, num2str(year), doy, ... [lower(station_code), '_', num2str(year), doy, '.zpd']); data = urlread(filename); disp(data); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值