m_map导入本地地形数据

m_map绘制地形图时,虽然自带有1°的地形图以及从NOAA下载的1分的地形图(详见:Matlab下地形图绘图包m_map安装与使用),但有时需要对地形图分辨率的要求更高,便无法满足。

此时,需要导入本地地形数据文件,例如多波束测深。

这里以从https://www.ncei.noaa.gov/maps/grid-extract/下载的15秒地形数据为例,展示如何导入本地地形数据并绘图。

关键函数为m_shadedrelief

1. 1分的分辨率地图

m_proj('mercator','long',[118 124],'lat',[20 24]);

caxis([-6000 6000]) 
colormap(slanCM('terrain')) 
hc=colorbar;
set(get(hc,'title'),'string','Elevation(m)')	
set(hc,'tickdir','out')

m_etopo2('shadedrelief','lightangle',45,'gradient',5);

m_gshhs('ic','color','k')
m_grid('box','on','tickdir','out','gridlines','no')

set(gcf,'position',[10 10 1200 800])

figname='test1'
print('-dpng','-r1000',[figname,'.png'])  % 导出png图片

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

2. 15秒的分辨率地图

load('scs_elevation.mat')
elev=flipud(elev);
lonlim=[extent(1:2)]
latlim=[extent(3:4)]
[nlat,nlon]=size(elev);
Lon=[linspace(lonlim(1),lonlim(2),nlon)];
Lat=[linspace(latlim(1),latlim(2),nlat)]';

m_proj('mercator','long',[118 124],'lat',[20 24]);
caxis([-6000 6000]) 

colormap(slanCM('terrain')) 
hc=colorbar;
set(get(hc,'title'),'string','Elevation(m)')	
set(hc,'tickdir','out')
m_shadedrelief(Lon,Lat,elev,'lightangle',45,'gradient',5) 

m_gshhs('ic','color','k')

m_grid('box','on','tickdir','out','gridlines','no')

set(gcf,'position',[10 10 1200 800])

figname='test2'
print('-dpng','-r600',[figname,'.png'])  % 导出png图片

在这里插入图片描述

  • 可见15秒分辨率地图比1分地图能显示更多细节。

注:绘图色标参考自:https://blog.csdn.net/slandarer/article/details/127719784