第一步:m_map导入matlab,安装。
到https://www.eoas.ubc.ca/~rich/private/mapug.html上下载m_map压缩包,解压到matlab安装的目录下,例如我的是:D:\Matlab\toolbox\m_map;然后在matlab 的界面上找到set,添加你解压m_map的路径,再在toolbox的目录下找到local文件,在里面找到pathdef文件,在%%% BEGIN ENTRIES %%%后面 输入:matlabroot,'\toolbox\m_map;'然后在matlab命令窗口中输入rehash toolboxcache 重新加载工具箱,这时候m_map已经安装完成,再在命令窗口中输入 what m_map命令,如果出现一大堆字符,说明安装成功,如果出现‘not found’等字样 说明安装不成功;
第二步:学习m_map的基本知识
m_proj('oblique mercator');
m_coast;
m_grid;
m_ll2xy;
m_line;
m_text;
m_proj('set');%选择映射的模型
Stereographic
Orthographic
Azimuthal Equal-area
Azimuthal Equidistant
Gnomonic
Satellite
Albers Equal-Area Conic
Lambert Conformal Conic
Mercator
Miller Cylindrical
Equidistant Cylindrical
Oblique Mercator
Transverse Mercator
Sinusoidal
Gall-Peters
Hammer-Aitoff
Mollweide
Robinson
m_map一共有这么多模型可以选择,那现在看看这些模型怎么用他们的效果是什么:
m_proj('stereographic','lat',90,'long',30,'radius',25);%选择‘Stereographic’模型,纬度中心选择90,经度中心选择30度,球星半径25
m_coast('patch',[.7 .7 .7],'edgecolor','r');%画海岸线,【.7.7.7】是设置海岸线的颜色,‘r’设置为红色
m_elev('contour',[-3500:1000:-500],'edgecolor','b');%画海拔线,从-3500到-500,每隔1000画等高线‘contour’是等高线的意思,颜色选择‘b’蓝色
m_grid('xtick',12,'tickdir','out','ytick',[70 80],'linest','-');%画坐标线~
效果图如下:
m_proj('ortho','lat',48','long',-123');
m_coast('patch','r');
m_grid('linest','-','xticklabels',[],'yticklabels',[]);
patch(.55*[-1 1 1 -1],.25*[-1 -1 1 1]-.55,'w');
text(0,-.55,'M\_Map','fontsize',25,'color','b',...
'vertical','middle','horizontal','center');
set(gcf,'units','inches','position',[2 2 3 3]);%设置图像在scree中的位置
set(gcf,'paperposition',[3 3 3 3]);%设置screen的位置
Orthographic 的效果图:
第三步:根据自己的需要实现
lon = [-179:2:179];
lat = [-89:2:89]; %选择经纬度分布范围,我的数据分布经纬度分辨率分别是2℃
m_proj('robinson','clongtitude');%选择投影模型
[lon,lat] = meshgrid(lon, lat); %生成经纬度网格
m_pcolor(lon,lat,BC);shading interp;colormap('jet'); %着色
hold on;
m_coast('linewidth',1); %画海岸线
%m_coast('patch',[.7 .7 .7],'edgecolor','none');
shading interp; %颜色过渡更自然
colormap('jet'); %选择colormap,这个可以在画图时候 在edit进行调试和选择
%hold on;
m_coast('patch',[.7 .7 .7],'edgecolor','none'); %将陆地部分着色
m_grid('xaxis','middle');
h = colorbar('h');