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