0. 码字不易,点赞加关注(公众号:WZZHHH,部分资料在公众号可以下载),使用请注明出处(根据我的研究方向,我会不断更新代码)。
1.使用GNSS反演PWV是缺少温度和气压,我使用ERA5数据集获得这些气象数据。
2.由于GNSS站点和ERA5格网位置不并址,因此需要水平和垂直方向的补偿
2.1使用反距离加权水平内插方式获得GNSS站点的垂直方向的ERA5数据集。
2.2垂直方向进行相应的补偿即可得到GNSS站点位置的温度和气压。
4.下面是我的部分代码,具体获取请关注咸鱼:WZZHHH123
% 利用ERA5解算出GNSS站点位置出温度、气压
% 根据ERA5最底层高于或者低于GNSS站点,温度和气压内插或者外推
% 前置数据需要下载ERA5的位势、温度。下载方法在CSDN,账号:WZZHHH
% -----------------------------------------------------------------------
% 你也可以把数据下载好打包发我,我来负责处理,不过费用贵
% 需要ERA5、站点经纬度名称海拔的excel表等,具体需要商量
%% --------------------------需要修改的参数-----------------------------
clc;clear;
% 计算的年份以2020年为例的路径
nc_path = 'D:\paper_write\paper_code\2\ERA5\2020\'; % 原始ERA5的存放地址
Edata_path = 'D:\paper_write\paper_code\2\mat\ERA5'; % ERA5读取后数据存放
[station_x,~] = xlsread('D:\paper_write\paper_code\2\xls\station.xlsx'); % GNSS站点经纬度坐标
% ERA5边界选定的边界
lon_t = 100; lat_t = 40; % 例如lon_t = 100(经度最小);lat_t = 40(纬度最大)
resolution = 0.25; % ERA5分辨率0.25;ERAinterm分辨率0.75
%% ----------------------------NC数据读取-------------------------------
% 读取原始ERA5文件夹下所有nc数据
List = dir(fullfile(nc_path,'*.nc'));
% pwvera5:gnss站点积分得到的PWV
ERA_P=[];ERA_T=[];
for I = 1:size(List,1)
% nc的具体路径
filen = [nc_path List(I).name];
% 用ncinfo读取nc数据里面的元素,找到我们下载数据的缩写
% aa = ncinfo(filen);
% 例如:z:位势、t:温度、r:相对湿度、q:比湿度、levels:气压
z = ncread(filen,'z');
t = ncread(filen,'t');
levels = ncread(filen,'level');
Time_num = ncread(filen,'time');