码迷,mamicode.com
首页 > 其他好文 > 详细

Matlab——m_map指南(4)——实例

时间:2017-10-31 18:40:04      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:lam   alt   data   image   dataset   世界   读取数据   .com   grid   

1、 全球/地区温度图

(1)读取数据

clear all
setup_nctoolbox %调用工具包
tic %计时
%% 
nc=ncgeodataset(‘tmpsfc.gdas.199401.grb2‘);   %读文件
tem_1=nc.variables   %浏览数据类型
%% 
a1=nc.geovariable(tem_1(1));%取得数据类型为Temperature_surface的数据
b1=a1.data(1,:,:); %第一个时间点温度数据
c1=squeeze(b1)-273.16;%删除单一维度,换为摄氏温度
%% 
a2=nc.geovariable(tem_1(2));%取得数据类型为lat的数据,纬度
b2=a2.data(:,1)%提取数据
%% 
a3=nc.geovariable(tem_1(3));%经度
b3=a3.data(:,1)%
%% 
a4=nc.geovariable(tem_1(4));%取得数据类型为time的数据
b4=a4.data(:,1)%
%% 
save A b2 b3 c1
toc

读取的是NCEP/CFSR数据,1994年1月的温度数据。

技术分享

该数据一共四项。温度,纬度,经度,时间。

技术分享

时间数据

技术分享

经度数据

技术分享

纬度数据

技术分享

可以看出该数据集的数据组织形式,经度纬度构成世界地图,记录了744个时间点的温度数据。约等于1小时采集一次数据。

温度数据

技术分享

保存为mat格式数据,为画图做准备。

(2)画图

clear all
load A

[Plg,Plt]=meshgrid(b3‘,b2‘);%形成网格

 m_proj(‘hammer-aitoff‘,‘clongitude‘,-150);%投影模式

m_pcolor(Plg,Plt,c1);
shading flat;
colormap(‘jet‘);%颜色选择
hold on;
m_pcolor(Plg-360,Plt,c1);
shading flat; %着色模式
colormap(‘jet‘);

m_coast();
m_grid(‘xaxis‘,‘middle‘);

% h=colorbar(‘h‘);
% set(get(h,‘title‘),‘string‘,‘1991年1月全球温度‘);

c=colorbar(‘southoutside‘,‘fontsize‘,12)
c.Label.String = ‘1994年1月全球温度‘;
c.Label.FontSize = 15;

技术分享

(3)找出最大、最小温度的经纬度

clear all
load C
Max_col=max(c1);%列最大值
Max_row=max(c1,[],2)%行最大值
Max=max(max(c1));
[x1,y1]=find(c1==max(max(c1)));%x 行,y 列
T_1=Plt(x1,y1)%纬度
T_2=Plg(x1,y1)%经度

Min_col=min(c1);%列最大值
Min_row=min(c1,[],2)%行最大值
Min=min(min(c1));
[x,y]=find(c1==min(min(c1)));%x 行,y 列
T_x=Plt(x,y)%纬度
T_y=Plg(x,y)%经度

 技术分享

可以看出最热52度,在澳大利亚那块(142.8123E,23.2610S);最冷-62度,在北极圈那块(89.9999E,66.3486N)。

(4)中国(地区)温度图

clear all
load A

LATLIMS=[3 54];
LONLIMS=[72 134];%选定边界范围

[Plg,Plt]=meshgrid(b3‘,b2‘);%形成网格

 m_proj(‘lambert‘,‘lon‘,LONLIMS,‘lat‘,LATLIMS);%投影模式

m_pcolor(Plg,Plt,c1);
shading flat;
colormap(‘jet‘);%颜色选择
hold on;
m_pcolor(Plg-360,Plt,c1);
shading flat; %着色模式
colormap(‘jet‘);

m_coast();
m_grid(‘box‘,‘fancy‘,‘tickdir‘,‘in‘);

% h=colorbar(‘h‘);
% set(get(h,‘title‘),‘string‘,‘1991年1月全球温度‘);

c=colorbar(‘southoutside‘,‘fontsize‘,12)
c.Label.String = ‘1994年1月中国温度‘;
c.Label.FontSize = 15;

技术分享

该方法是读取全球数据,只展示部分

(5)

改进的区域方法,读取该区域的数据数据,

clear all
setup_nctoolbox %调用工具包
tic %计时
%% 
min_lat=115;
max_lat=279;
min_lon=231;
max_lon=430;  %区域经纬度范围,在数据中的位置

%% 
nc=ncgeodataset(‘tmp2m.gdas.199401.grb2‘);   %读文件
tem_1=nc.variables   %浏览数据类型
%% 
N1=nc.size(tem_1(1));%读取数据大小,可以看出数据的组织形式
a1=nc.geovariable(tem_1(1));%取得数据类型为Temperature_surface的数据
b1=a1.data(1,1,min_lat:max_lat,min_lon:max_lon); %第一个时间点温度数据
c1=squeeze(b1)-273.16;%删除单一维度,换为摄氏温度
%% 
N2=nc.size(tem_1(2));
a2=nc.geovariable(tem_1(2));%取得数据类型为lat的数据,纬度
b2=a2.data(min_lat:max_lat,1);%提取数据
%% 
N3=nc.size(tem_1(3))
a3=nc.geovariable(tem_1(3));%经度
b3=a3.data(min_lon:max_lon,1);%
%% 
N4=nc.size(tem_1(4))
a4=nc.geovariable(tem_1(4));%取得数据类型为time的数据
b4=a4.data(:,1);%
%% 
N5=nc.size(tem_1(5));%读取数据大小
a5=nc.geovariable(tem_1(5));%取得数据类型为time的数据
b5=a5.data(:,1);%
%% 
save tem b2 b3 c1
toc

技术分享

clear all
load tem

LATLIMS=[3 54];
LONLIMS=[72 134];%选定边界范围

[Plg,Plt]=meshgrid(b3‘,b2‘);%形成网格

 m_proj(‘lambert‘,‘lon‘,LONLIMS,‘lat‘,LATLIMS);%投影模式

m_pcolor(Plg,Plt,c1);
shading flat;
colormap(‘jet‘);%颜色选择
hold on;
m_pcolor(Plg-360,Plt,c1);
shading flat; %着色模式
colormap(‘jet‘);

m_coast();
m_grid(‘box‘,‘fancy‘,‘tickdir‘,‘in‘);

% h=colorbar(‘h‘);
% set(get(h,‘title‘),‘string‘,‘1991年1月全球温度‘);

c=colorbar(‘southoutside‘,‘fontsize‘,12)
c.Label.String = ‘1994年1月中国温度‘;
c.Label.FontSize = 15;

技术分享

技术分享

2、读取方式的改变

  

  

  

 

Matlab——m_map指南(4)——实例

标签:lam   alt   data   image   dataset   世界   读取数据   .com   grid   

原文地址:http://www.cnblogs.com/ruo-li-suo-yi/p/7762721.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!