ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-10-21

2021-10-22 16:03:01  阅读:230  来源: 互联网

标签:10 00 21 nc longitude flux heat 2021 name


Heat flux的Matlab绘图(熟悉m_map

相关知识介绍

我由于海洋科学的课程原因需要进行物理海洋的学习,此博客对于课程中的常见问题进行记录和总结,同时熟练自己的编程能力,其中本次内容主要包括以下方面:

  1. 数据库:
    本次的热通量数据来源于ECMWF,网站链接
    通过该数据集中forecast的datasets选择相关的public datasets。本次采用的是其中的ERA-Interim的再分析数据,以某一年度为例,提取相关的数据信息,需要注意要提前注册相关的账号。
  2. m_map的使用:
    (1)m_map的安装:安装链接
    在下载相关的zip文件解压之后,将其中的m_map文件夹移动到matlab的工具箱(toolbox)的文件夹中。
    D:\matlab\toolbox

    随后点击设置路径并添加文件夹,保存后完成安装在这里插入图片描述
    (2)m_map函数初步介绍:
    本次使用的主要由:
    m_proj;
    m_coast;
    m_grid;
    m_contourf;
    其中:
>> m_proj('set')%获取投影类型
 
Available projections are:
     Stereographic
     Orthographic
     Azimuthal Equal-area
     Azimuthal Equidistant
     Gnomonic
     Satellite

进一步获取指定类型的信息

>> m_proj('set','Robinson')

返回的代码为

'Robinson'                      
     <,'lon<gitude>',[min max]>      
     <,'lat<itude>',[min max]>       
     <,'clo<ngitude>',value>         
     <,'rec<tbox>', ( 'on' | 'off' )>

通过

>> m_grid get

获取相关的信息,如下:

      'axes',( gca | axis handle)
      'box',( 'on' | 'fancy' | 'off' )
      'xtick',( num | [value1 value2 ...])
      'ytick',( num | [value1 value2 ...])
      'xticklabels',[label1;label2 ...]
      'yticklabels',[label1;label2 ...]
      'xlabeldir', ( 'middle' | 'end' )
      'ylabeldir', ( 'end' | 'middle' )
      'ticklength',value
      'tickdir',( 'in' | 'out' )
      'tickstyle',('dm' | 'da' | 'dd'  )
      'color',colorspec
      'gridcolor',colorspec
      'backgroundcolor',colorspec
      'linewidth', value
      'linestyle', ( linespec | 'none' )
      'fontsize',value
      'fontname',name
      'XaxisLocation',( 'bottom' | 'middle' | 'top' ) 
      'YaxisLocation',( 'left' | 'middle' | 'right' ) 

其余函数可以通过相关的网站进行查找网站链接
3. nc文件的读取:
通过ncdisp进行文件的提取,

ncdisp('F:\sea\nc—heat flux\2019.nc');

提取的文件信息如下

Format:
           netcdf4_classic
Global Attributes:
           _NCProperties = 'version=1|netcdflibversion=4.6.1|hdf5libversion=1.10.4'
           Conventions   = 'COARDS'
           title         = '4x daily NMC reanalysis (2014)'
           history       = 'created 2017/12 by Hoop (netCDF2.3)'
           description   = 'Data is from NMC initialized reanalysis
                           (4x/day).  It consists of T62 variables interpolated to
                           pressure surfaces from model (sigma) surfaces.'
           platform      = 'Model'
           dataset_title = 'NCEP-NCAR Reanalysis 1'
           References    = 'http://www.psl.noaa.gov/data/gridded/data.ncep.reanalysis.html'
Dimensions:
           lat  = 94
           lon  = 192
           time = 1460  (UNLIMITED)
Variables:
    lat  
           Size:       94x1
           Dimensions: lat
           Datatype:   single
           Attributes:
                       units         = 'degrees_north'
                       actual_range  = [88.542      -88.542]
                       long_name     = 'Latitude'
                       standard_name = 'latitude'
                       axis          = 'Y'
    lon  
           Size:       192x1
           Dimensions: lon
           Datatype:   single
           Attributes:
                       units         = 'degrees_east'
                       long_name     = 'Longitude'
                       actual_range  = [0       358.125]
                       standard_name = 'longitude'
                       axis          = 'X'
    time 
           Size:       1460x1
           Dimensions: time
           Datatype:   double
           Attributes:
                       long_name     = 'Time'
                       delta_t       = '0000-00-00 06:00:00'
                       avg_period    = '0000-00-00 06:00:00'
                       standard_name = 'time'
                       axis          = 'T'
                       units         = 'hours since 1800-01-01 00:00:0.0'
                       actual_range  = [1919712  1928466]
    shtfl
           Size:       192x94x1460
           Dimensions: lon,lat,time
           Datatype:   single
           Attributes:
                       long_name               = '4xDaily Sensible Heat Net Flux at surface'
                       units                   = 'W/m^2'
                       precision               = 0
                       least_significant_digit = 0
                       GRIB_id                 = 122
                       GRIB_name               = 'SHTFL'
                       var_desc                = 'Sensible Heat Net Flux'
                       level_desc              = 'Surface'
                       statistic               = 'Mean'
                       parent_stat             = 'Individual Obs'
                       missing_value           = -9.969209968386869e+36
                       valid_range             = [-2000  7000]
                       dataset                 = 'NCEP Reanalysis'
                       actual_range            = [-761  1812]

在Variables的变量中找出所需要的信息,通过ncread进行赋值

longitude=ncread('F:\物理海洋课程课件与作业\相关资料\nc—heat flux\2019.nc','longitude');

即可完成对相关信息的提取
在这里插入图片描述

绘制全球latent heat flux的代码演示

clc;
clear;
ncdisp('F:\物理海洋课程课件与作业\相关资料\nc—heat flux\qianre.2019.nc');
longitude=ncread('F:\物理海洋课程课件与作业\相关资料\nc—heat flux\qianre.2019.nc','lon');
latitude = ncread('F:\物理海洋课程课件与作业\相关资料\nc—heat flux\qianre.2019.nc','lat');
time=ncread('F:\物理海洋课程课件与作业\相关资料\nc—heat flux\qianre.2019.nc','time');
lhtfl=ncread('F:\物理海洋课程课件与作业\相关资料\nc—heat flux\qianre.2019.nc','lhtfl');
a=zeros(length(longitude),length(latitude));
for i=1:(length(time))
    a=a+lhtfl (:,:,i);
end
a=a/(length(time));
[x,y]=meshgrid(latitude,longitude);
N=8*(max(longitude)-min(longitude));
M=8*(max(latitude)-min(latitude));
lon=linspace(min(longitude),max(longitude),N);
lat=linspace(min(latitude),max(latitude),M);
[X,Y]=meshgrid(lat,lon);
A=interp2(x,y,a,X,Y);%二次插值
hold on 
m_contourf(Y,X,A);%画出等高线图
m_proj('robinson','long',[0 360],'lat',[-90 90]);%叠加世界地图
m_coast('patch',[0.3 0.3 0.3],'edgecolor','k');%填充陆地
m_grid('box','fancy','linestyle','-','gridcolor','w','backcolor',[1 1 1]);%网格绘制
colormap(cool);%更改颜色区间
h = colorbar;
h.Label.String = 'W/m^2';%获得colorbar的handel并添加单位
xlabel('Longitude');
ylabel('Latitude') ;
set(gca,'fontsize',12);
title('2019年度全球平均潜热辐射通量','FontName','宋体','fontsize',12);

结果如下:在这里插入图片描述

标签:10,00,21,nc,longitude,flux,heat,2021,name
来源: https://blog.csdn.net/weixin_58091307/article/details/120896590

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有