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