目录
1.IGRA的下载
2.以CHM00050527-data.txt数据为例:
3.使用matlab进行数据提取:
4.mat文件的构成如下图:
5. Matlab 获取代码可关注微信公众号WZZHHH,或者咸鱼关注:WZZHHH123
6.部分代码展示:
1.IGRA的下载
[IGRA下载介绍,我使用的是普通数据,并非衍生数据!!!],具体下载方法在前面博文当中IGRAv2(探空站)数据介绍二(附txt翻译下载链接和如何下载)_igra数据下载-CSDN博客。
基于matlab进行编写,可以将IGRA数据全部进行提取。
2.以CHM00050527-data.txt数据为例:
下图是原始数据,从1956年开始到2023年,假设我们只需要2020年-2021年。
3.使用matlab进行数据提取:
使用matlab提取数据存到"v2data.mat"中,按照时间进行排列。
每个站点的每年存一个mat文件,名称为:站点名字-年份.mat,如下图所示。
4.提取后的mat文件的构成如下图:
% --------------mat中v2data数据的含义如下所示---------------
v2data.year:时间(包括年月日小时)
v2data.datanum:日期数字;
v2data.release_time: 探测释放时间;
v2data.elapsed_time: 发射后的经过时间;
v2data.level_type: 主要的级别类型指示器;
v2data.minor_level_type:次要级别类型指示器;
v2data.pressure: 气压;
v2data.press_flag: 气压处理标志;
v2data.geo: 位势;
v2data.geo_flag: 位势高度处理标志;
v2data.temp: 温度;
v2data.temp_flag: 温度处理标志;
v2data.rh: 相对湿度;
v2data.dp: 露点温度;
v2data.wind_dir: 风向;
v2data.wind_spd: 风速;
v2data.latitude: 纬度;
v2data.longitude: 经度;
v2data.stationID: 站点名称;
5. Matlab 获取代码可关注微信公众号WZZHHH,或者咸鱼关注:WZZHHH123
6.部分代码展示:
```java
%% -----------------------------需要修改的参数--------------------------
% IGRA路径
path_igra = 'D:\DATA\IGRA2\data\';% 数据存放路径
save_igra = 'D:\DATA\';% IGRA数据包含了建站以来数据,挑选所需年份
year = [2020 2021]; % 以2020-2021年为例%% ------------------------------------------------------------------------
% 路径下所有的IGRA的txt文件
igra_d = dir([path_igra,'*.txt']);% 对txt文件逐个读取
for i = 1:size(igra_d,1)% 读取txt文件importIGRA([path_igra igra_d(i).name],save_igra,year);
end%% importIGRAv2%将IGRA v2探测数据文件导入到MATLAB数据结构中;%所有数据均进行了提取%========================================================================%Outputs:% ------输出结构% 结构在我的公众号有详细介绍(没用的俺也懒得写了,反正数据全部都提出来了)% 年、月、日、小时、level_type、minor_level_type:、气压、位势、温度% 露点温度、风向、风速、相对湿度、纬度 、经度% ==================================================================%Input:% filename:IGRA v2数据txt文件的文件名和路径% save_igra: 数据保存地址% year:所需要数据的年份function importIGRA(filename,save_igra,year)% 读取头文件
dataForLength = fileread(filename); % 通过查找#的所有数据的数量,"#"表示标头,并且位于所有数据的开头
count = length(dataForLength(dataForLength == 35));
clear dataForLength; %清空数据块
header = cell(count,1); % 预分配头数组
raw = cell(1,count); % 预分配原始数据数组fid = fopen(filename); % 打开文件
for r = 1:count header{r} = textscan(fid,'#%3c%8c%4c%2c%2c%2c%4f%4f%8c%8c%7f%8f', 1);%这是头文件的介绍,根据字符的具体位置判定它是什么。
%例如:#USM00072501 1994 09 03 00 2314 166 ncdc6301 ncdc6301 408656 -728647
% #%#%3c%8f%4f%2f%2f%2f%4f%4f%8c%8c%7f%8f
% #-开始头注
%1: %3c-标识符:国家代码+站点网络代码(3个字符)
%2: %8c-工作站ID(8个字符)
%3: %4f - 年 (4位数字)
%4: %2f - 月 (2位数字)
%5: %2f - 日 (2位数字)
%6: %2f - 小时 (2位数字)
%7: %4f - release time (4位数字)
%8: %4f - number of levels (4位数字)
%9: %8c - pressure level source (8个字符)是探空站压力等级的数据源代码。
%10: %8c - other level source (8个字符)
%11: %7f 纬度(7位数字)
%12: %8f 经度(8位数字)% 在文本末尾输入1可以调用读取标题的次数raw{r} = textscan(fid, '%51c', header{r}{8});
```