台风轨迹数据获取及MATLAB读取

台风轨迹数据获取及MATLAB读取


文章目录


在研究一个有问题的时候,发现了一个有趣的现象,因此需要相应的台风数据加以佐证,下面将介绍数据来源及MATLAB数据读取


数据来源:

中国气影局热带气旋资中心,最佳路径数据集
数据截止目前更新到1949-2019年数据
数据使用需要进行引文:

  • Ying, M., W. Zhang, H. Yu, X. Lu, J. Feng, Y. Fan, Y. Zhu, and D. Chen, 2014: An overview of the China Meteorological Administration
    tropical cyclone database. J. Atmos. Oceanic Technol., 31, 287-301.
    doi: 10.1175/JTECH-D-12-00119.1
  • Lu, X. Q., H. Yu, M. Ying, B. K. Zhao, S. Zhang, L. M. Lin, L. N. Bai, and R. J. Wan, 2021: Western North Pacific tropical cyclone
    database created by the China Meteorological Administration. Adv.
    Atmos. Sci. doi: 10.1007/s00376-020-0211-7 (in press)

数据格式如下所示:

台风轨迹数据获取及MATLAB读取
台风轨迹数据获取及MATLAB读取

MATLAB 读取程序

读取文件保存于MAT

程序将数据从数据集.txt格式文件中读取,以结构体数组形式保存于.mat 文件中

clear;close all;clc;

%%  Control Panal 

ctrl.year = 2016;

%%  OpenFile

file_path = ['.\CMABSTdata\CH',num2str(ctrl.year),'BST.txt'];
fid = fopen(file_path); % Open File

item = 1;

while 1
    newLine = fgetl(fid);
    if feof(fid)
        break;
    end
    if newLine(1:5) == '66666'
        typhoonData(item).international_ID = strtrim(newLine(6:10));
        typhoonData(item).traceLine     = str2num(newLine(11:15));  %路径数据的行数
        typhoonData(item).tcNumber      = strtrim(newLine(16:20));  % tropical cyclone number 热带气旋编号
        typhoonData(item).typhoonID     = strtrim(newLine(21:25)); % 台风编号
        typhoonData(item).tcEndRecord   = str2num(newLine(27));   % 热带气旋终结记录
        % 0表示消散,1表示移出西太合风委员会的责任海区,2表示合并,3表示准静止
        typhoonData(item).sampleInterval= str2num(newLine(29));    % 每行路径间隔小时数
        typhoonData(item).typhoonName   = strtrim(newLine(31:50));
        typhoonData(item).dataSetDate   = newLine(66:73);
        item = item + 1;
    end
    for num = 1:1:typhoonData(item-1).traceLine
        dataLine = fgetl(fid);
        typhoonData(item-1).data(num).year  = dataLine(1:4);
        typhoonData(item-1).data(num).month = dataLine(5:6);
        typhoonData(item-1).data(num).day   = dataLine(7:8);
        typhoonData(item-1).data(num).hour  = dataLine(9:10);
        typhoonData(item-1).data(num).strength = dataLine(12);
        typhoonData(item-1).data(num).Lat   = str2double(dataLine(14:16))*0.1;
        typhoonData(item-1).data(num).Long  = str2double(dataLine(18:21))*0.1;
        typhoonData(item-1).data(num).pres  = str2num(dataLine(23:26));
        typhoonData(item-1).data(num).Wnd   = str2num(dataLine(31:34));
        % typhoonData(item-1).data(num).Owd   = str2num(dataLine(37:39));
    end
    disp(['Finished reading: ',typhoonData(item-1).typhoonName]);
end
disp('=============Finished reading all data!=============')

fileName = ['TF',num2str(ctrl.year),'.mat'];
save(fileName,'typhoonData');
disp('=============Successfully Saved Filed=============')

编写程序水平有限,如有不正确请见谅!

MAT数据格式组成

以2016年数据为例,数据存放于typhoonData变量中,为 1 × 29 1\times29 1×29 struct。包含9个字段
台风轨迹数据获取及MATLAB读取
单个台风的数据存放于data中
台风轨迹数据获取及MATLAB读取

上一篇:解决nuxt.js新建项目报错的问题


下一篇:515. 在每个树行中找最大值