更新:
仅使用Matlab实现Holland圆对称风场,不考虑热带气旋的移动速度和前进方位角。
主要的参数设定:
生成0.25°分辨率的风场:
附Matlab代码:
其中,basetif.tif是一个0.25°的影像
中心经纬度以及中心气压:
Pc=995hPaP_c = 995 hPaPc=995hPa
Latc=10.125°Lat_c = 10.125 °Latc=10.125°
Lonc=120.125°Lon_c = 120.125 °Lonc=120.125°
%%clc;clear;%%fullpath = mfilename('fullpath');[path, name] = fileparts(fullpath);%%%basetif = strcat(path, '\basetif.tif');[A_M, R_M] = geotiffread(basetif);info = geotiffinfo(basetif);A_I = zeros(size(A_M));A_J = zeros(size(A_M));for i = 1 : size(A_I, 1)A_I(i, :) = i;endfor j = 1 : size(A_J, 2)A_J(:, j) = j;end[A_Lat, A_Lon] = pix2latlon(info.RefMatrix, A_I, A_J);%%P_c = 995; % hPaLat_c = 10.125; % °Lon_c = 120.125; % °%%%rou_air = 1.15; % kg m-3%P_n = 1010.0;dertP = P_n - P_c;Rm = -18.18 * log(dertP) + 112.2; % R2 = 0.84B = 1.881 - 0.00557 * Rm - 0.01295 * abs(Lat_c);f = 2 * 7.292 * 0.00001 * sin(Lat_c * pi / 180.0);% great cricle arcR_earth = 6371;arcLAT1 = A_Lat * pi / 180.0;arcLAT2 = Lat_c * pi / 180.0;arcLON1 = A_Lon * pi / 180.0;arcLON2 = Lon_c * pi / 180.0;cos_sita = sin(arcLAT1) .* sin(arcLAT2) + ...cos(arcLAT1) .* cos(arcLAT2) .* cos(arcLON1 - arcLON2);sita = acos(cos_sita);r = R_earth * sita + 0.001;P_r = P_c + dertP * exp(-(Rm ./ r) .^ B);Vg_Holland1 = 100 * dertP * B / rou_air * (Rm ./ r) .^ B .* exp(-(Rm ./ r) .^ B);Vg_Holland2 = r * abs(f) / 2 * 1000;Vg_Holland = (Vg_Holland1 + Vg_Holland2 .^ 2) .^ 0.5 - Vg_Holland2;%%Vg = Vg_Holland;Km = zeros(size(Vg_Holland));Km(Vg < 6) = 0.81;Km(Vg >= 6 & Vg < 19.5) = 0.81 - 2.96 * 10 ^ (-3) * (Vg(Vg >= 6 & Vg < 19.5) - 6);Km(Vg >= 19.5 & Vg < 45) = 0.77 - 4.31 * 10 ^ (-3) * (Vg(Vg >= 19.5 & Vg < 45) - 19.5);Km(Vg >= 45) = 0.66;V_10m = Km .* Vg;outfile = strcat(path, '\V_10m.tif');geotiffwrite(outfile, single(V_10m), R_M);
如果觉得《Matlab实现Holland风场》对你有帮助,请点赞、收藏,并留下你的观点哦!