数 据 下 载 网 址 :
中国气象局热带气旋资料中心|最佳路径数据:
https://tcdata.typhoon.org.cn/zjljsjj_zlhq.html
台风等级分类标准:
中国气象局热带气旋资料中心|蒲福风力等级表:
https://tcdata.typhoon.org.cn/zy_wind.html
%% 本脚本用于读取.txt 的台风路径% 并筛选出来经过某一重点海域的台风% 并给台风强
度按照国家台风强度标识进行标记颜色% by burger of ouc on
20220312clear;clc;close all;num_ty_track=0;% 用于统计十年间通过此海域台风
数目的起始数值;inter_y=10;% 几年统计一次 for year=1950:inter_y:2015% 台风
数据从 1950-2019 年的,% 每十年(可以更改)画在一张图片上面; for
year_i=1:inter_y%%一年一年进行查找循环
filename=['F:/RMatlab/data20211219/CMABSTdata/','CH',num2str(year),'BST
.txt'];% 用于读取.txt 文本的数据路径;
fid=fopen(filename,'r');%open file eng1='000000000';% 用于储
存.txt 的变量,初始值定为字符串,可用于储存.txt 的数据; row=0;%row at
start is zero. while ~feof(fid) %if eixt file ,then run
row=row+1; % read file according row a=fgetl(fid);% data
give a; num=length(a);% 每一行多长
eng1(row,1:num)=a;% 列数循环读取,放进每一行中; end
fclose(fid);%close file ;读取完毕; num_i=0;%储存一年有几个台风;因
为.txt 是把一年内的台风都放在一个.txt 中; ty_j=[];% 用于计算一个.txt
内部台风开始的行数; for ty_i=1:length(eng1(:,1))% 行循环
read_a=eng1(ty_i,1);% 读取行的第一个字符, if read_a=='6'% 判断
是否是一个台风的开始,你可以仔细观察,一个台风开始是 6666666
num_i=num_i+1; ty_j=[ty_j ty_i]; end
end ty_j=[ty_j length(eng1(:,1))+1]; ty_jj=[];num_j=0;
for ty_ii=1:length(ty_j)-1 loc_a=ty_j(ty_ii)+1;% 一个台风的起
始位置 loc_b=ty_j(ty_ii+1)-1;% 一个台风的终止位置
ty_num=eng1(loc_a:loc_b,:);% 从总共的内容 eng1 中取出台风的数据:包含经纬度,
强度等信息 lon=str2num(ty_num(:,18:21))./10;%读取 lon;
lat=str2num(ty_num(:,14:17))./10;% 读取 lat; % 判断是否经过你的
重点海域,以 15-25,105-115 为例; for lon_i=1:length(lon)%15-
25,105-115 if lon(1)>=120% 登陆广州的西太
平洋台风 if
(105<lon(lon_i)&lon(lon_i)<115)&(20<lat(lon_i)&lat(lon_i)<25)
ty_jj=[ty_jj ty_ii];% 是记住台风位置方便读取相应台风数据;
num_j=num_j+1; end end end
end %% find only ty :找到上面满足登陆广州的西太平洋台风
ty_jjj=[]; ty_jj=[ty_jj 0]; for num_ii=1:length(ty_jj)-1
if ty_jj(num_ii)==ty_jj(num_ii+1) else
ty_jjj=[ty_jjj ty_jj(num_ii)]; end end % %
figure(1); m_proj('Equidistant','lon',[80 160],'lat',[0 60])
hold on area1=[105 115;15 25];lined=1.5;
m_line([area1(1,1) area1(1,2)],[area1(2,1)
area1(2,1)],'color','k','linewidth',lined); m_line([area1(1,1)
area1(1,2)],[area1(2,2) area1(2,2)],'color','k','linewidth',lined);
m_line([area1(1,1) area1(1,1)],[area1(2,1)
area1(2,2)],'color','k','linewidth',lined); m_line([area1(1,2)
area1(1,2)],[area1(2,1) area1(2,2)],'color','k','linewidth',lined);
hold on% m_coast('color',[.7 .7 .7],'linewidth',2) hold
on for num_iii=1:length(ty_jjj)
loc_aa=(ty_j(ty_jjj(num_iii)))+1;
loc_bb=(ty_j(ty_jjj(num_iii)+1))-1;
ty_numm=eng1(loc_aa:loc_bb,:);
lon_1=str2num(ty_numm(:,18:21))./10;
lat_1=str2num(ty_numm(:,14:17))./10;
wind=str2num(ty_numm(:,33:34));% 风速
size_num=8;lind=0.3;clor='k'; hold on
m_plot(lon_1,lat_1,'-','LineWidth',2,'Color','k'); for
wind_i=1:length(wind) if
wind(wind_i)>=0&wind(wind_i)<17.1% 热带低压,.根据定义用风速判断,这里把 0 包
含进去
m_plot(lon_1(wind_i),lat_1(wind_i),'o','LineWidth',lind,'MarkerFaceColo
r', 'y','Color',clor,'MarkerSize',size_num); elseif
wind(wind_i)>17.2&wind(wind_i)<24.4 % 热带风暴
- 1
- 2
前往页