matlab画风场图+航迹路径

clc;
clear all;
close all;
%% 读取数据
path1='C:\Users\86180\Desktop\NC数据\2022.1.nc'; 
v10=double(ncread(path1,'v10'));  %读取v10类型的nc文件
u10=double(ncread(path1,'u10'));  %读取u10类型的nc文件
nlon=double(ncread(path1,'longitude')); %读取经度变量
nlat=double(ncread(path1,'latitude')); %读取纬度变量

%% 可视化
[mlat,mlon]=meshgrid(nlat,nlon);
day=24; %展示第24天的数据
v_day = v10(:,:,day);
u_day = u10(:,:,day);
P = sqrt(v_day.^2 + u_day.^2);
%投影类型 'Miller','hammer-aitoff','Equidistant Cylindrical'
m_proj('Equidistant Cylindrical','lat',[-40 50],'lon',[-20 160]);

% m_contourf(mlon,mlat,P,'linestyle','none'); %等值线 ---类似于插值后的效果


colormap(flipud(m_colmap('jet')));%设置颜色legend
colormap(m_colmap('jet',10));        % colorbar
hold on;
shading flat;
m_coast('line','Color', [.0 .0 .0]);% 只保留大陆轮廓线line;轮廓线的颜色
m_coast('patch',[0.5 0.5 0.5]);%m_coast('color','k');
% m_quiver(mlon,mlat,u_day,v_day,'color','k');   % 添加风场矢量的方向箭头
% 格网格式设置
m_grid('linestyle','none','box','fancy','tickdir','out','LineWidth',0.5);

%% 添加事故路线(并插值)
% 读取数据
% data1=xlsread('E:\新任务\数据\三航线.xlsx','烟台-印尼');
% lat1=data1(:,1);
% lon1=data1(:,2);
data2=xlsread('E:\新任务\数据\三航线.xlsx','烟台-澳大利亚');
lat2=data2(:,1);
lon2=data2(:,2);
% data3=xlsread('E:\新任务\数据\三航线.xlsx','青岛-乌克兰');
% lat3=data3(:,1);
% lon3=data3(:,2);


% 插值
% lon1_interp = linspace(min(lon1), max(lon1), 100);
% lat1_interp = interp1(lon1, lat1, lon1_interp, 'linear');
% G1=[];
% 
% 
%     for i=1:100
% 
% 
%         % 找到最接近指定经纬度坐标的网格点
%         [~, lon1_idx] = min(abs(nlon - lon1_interp(i)));
%         [~, lat1_idx] = min(abs(nlat - lat1_interp(i)));
% 
%         % 提取对应的风险值
% 
%         G1 = [G1 P(lon1_idx, lat1_idx)];
%     end
% 
% % 在地图上绘制所选择的点
% m_scatter(lon1_interp, lat1_interp,[],G1,'filled');
% hold on
% m_plot(lon1_interp, lat1_interp, 'linewidth', 0.5, 'color', 'k');
% hold on


%     % 插值
lon2_interp = linspace(min(lon2), max(lon2), 400);
lat2_interp = interp1(lon2, lat2, lon2_interp, 'spline');
G2=[];


    for i=1:400


        % 找到最接近指定经纬度坐标的网格点
        [~, lon2_idx] = min(abs(nlon - lon2_interp(i)));
        [~, lat2_idx] = min(abs(nlat - lat2_interp(i)));

        % 提取对应的风险值

        G2 = [G2 P(lon2_idx, lat2_idx)];
    end

% 在地图上绘制所选择的点    
m_scatter(lon2_interp, lat2_interp,[],G2,'filled');
hold on
m_plot(lon2_interp, lat2_interp, 'linewidth', 0.5, 'color', 'k');
hold on
% 
    % 插值
% lon3_interp = linspace(min(lon3), max(lon3), 400);
% lat3_interp = interp1(lon3, lat3, lon3_interp, 'linear');
% G3=[];
% 
% 
%     for i=1:400
% 
% 
%         % 找到最接近指定经纬度坐标的网格点
%         [~, lon3_idx] = min(abs(nlon - lon3_interp(i)));
%         [~, lat3_idx] = min(abs(nlat - lat3_interp(i)));
% 
%         % 提取对应的风险值
% 
%         G3 = [G3 P(lon3_idx, lat3_idx)];
%     end
% 
% 
% m_scatter(lon3_interp, lat3_interp,[],G3,'filled');
% hold on
% % 在地图上绘制所选择的点
% 
% hold on
% m_plot(lon3_interp, lat3_interp, 'linewidth', 0.5, 'color', 'k');


title({'2022年1月三条航线风场图',''},'fontsize',14,'fontweight','bold');
hh=colorbar('h');
set(hh,'tickdir','out');
xlabel(hh,'Wind m/s');
hold off;

现在根据这个代码,插值出来数据有错误,请求大神帮我看看如何修改一下,数据文件见下一个博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值