使用matlab对探空站IGRAv2数据进行提取

目录

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});
```


 

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

WZZHHH

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

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

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

打赏作者

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

抵扣说明:

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

余额充值