11 - matlab m_map地學繪圖工具基礎函數 - 繪制航跡、橢圓、風向玫瑰圖和特定的圓形區域的有關函數及其用法
- 0. 引言
- 1. 關于m_track
- 2. 關于m_range_ring
- 3. 關于m_ellipse
- 4. 關于m_windrose
- 5. 結語

0. 引言
?? 本篇介紹下m_map
中繪制航跡圖函數(m_track
)、繪制特定半徑的范圍的函數(m_range_ring
)、繪制橢圓的函數(m_ellipse
)、繪制風玫瑰圖的函數(m_windrose
)。
1. 關于m_track
??m_track函數
用于在地圖上繪制航跡。這個函數可以用來可視化航行路徑或飛行路徑等。航跡圖上可以標注時間和日期。
??m_track 函數
的一般形式為:
m_track(lon,lat,varargin)
其中:
lon 和 lat
:航跡點的經度和緯度坐標。varargin
:可選參數,控制航跡線的刻度樣式、日期和時間標簽樣式。主要包括下面內容:
??ticks
刻度間隔以分鐘為單位,默認為60分;
??times
時間標簽間隔以分鐘為單位,默認為240分鐘;
??dates
日期標簽間隔以分鐘為單位,默認為720分鐘;
??timef[ormat]
時間在刻度線上的顯示樣式;
??datef[ormat]
日期在刻度線上的顯示樣式;
??color
航跡線和標簽顏色設置,默認為黑色;
??linew[idth]
航跡線線寬設置;
??lines[tyle]
航跡線線形設置;
??fonts[ize]
標簽字體尺寸設置;
??fontn[ame]
標簽字體設置;
??clip
是否進行裁剪(on/off)
??orien[t]
標簽方向(true/upright)
示例(利用官網示例):
m_proj('UTM','long',[-72 -68],'lat',[40 44]);
m_gshhs_i('color','k');
m_grid('box','fancy','tickdir','in');
m_ruler(1.2,[.5 .8]);% fake up a trackline
lons=[-71:.1:-67];
lats=60*cos((lons+115)*pi/180);
dates=datenum(1997,10,23,15,1:41,zeros(1,41));m_track(lons,lats,dates,'ticks',0,'times',4,'dates',8,...'clip','off','color','r','orient','upright');m_northarrow(-68.5,43.4,.4,'type',2);
??下圖紅色部分即為m_track
命令加載的內容,可以使用上面提到的屬性進行繪圖樣式的調整;

2. 關于m_range_ring
??m_range_ring 函數
用于在地圖上繪制指定半徑的范圍圈。這在航海、航空和地理信息系統中很常見,用于表示某一點周圍的特定半徑范圍。
??m_range_ring 函數
的基本語法如下:
m_range_ring(lon, lat, radius, varargin)
??其中,lon 和 lat
是范圍的中心點投影坐標;radius
是范圍的半徑,以與地圖坐標系統相匹配的距離單位(例如公里或海里)表示;varargin
可選參數,用于指定范圍線條的樣式、顏色等信息,不做展開,可以參照其他繪圖命令;
官網示例:
%% 官網示例
close all;clc;clear;
m_proj('hammer','clong',170); % 定義投影
m_grid('xtick',[],'ytick',[],'linestyle','-'); % 不顯示坐標軸
m_coast('patch','g'); % 陸地填充
m_line(100.5,13.5,'marker','square','color','r'); % 在當前坐標處繪制了一個紅色矩形
m_range_ring(100.5,13.5,[1000:1000:15000],'color','b','linewi',2); % 以當前坐標為原點,半徑間隔為1000繪制15個藍色范圍圈
xlabel('1000km range rings from Bangkok'); % 添加圖示

自建示例:
%% 自建
close all;clc;clear;
m_proj('mercator', 'lon', [69.5 105.5], 'lat', [24.5 40.5]);
%
m_line(80.5,32.5,'marker','square','color','r'); % 在當前坐標處繪制了一個紅色矩形
m_range_ring(80.5,32.5,[500],'color','b','linewi',2); % 以當前坐標為遠點,向量值為半徑繪制15個藍色范圍圈
%
m_gshhs('ic','color',[.5 .5 .5]) % 中等分辨率海岸線
m_gshhs('ir2','color','b') % 中等分辨率河流
m_grid('box','fancy','tickdir','in','gridlines','no','fontsize',12)

3. 關于m_ellipse
??m_ellipse 函數
用于在地圖上繪制橢圓。
??m_ellipse函數
的一般形式為:
[h,varargout]=m_ellipse(long,lat,fmaj,fmin,finc,fpha,scale,type ,varargin)
??其中,long和lat
為繪制橢圓的中心點經緯坐標;fmaj和fmin
為橢圓的半長軸/半短軸長度;finc和fpha
為橢圓傾角、相位角,以度為單位;scale
為比例因子;type
為類型用于設置線或填充;varargin
為可選參數,用于控制繪圖邊緣的顏色、寬度等屬性,這里不做展示。
??m_ellipse函數
示例如下:
clf;
m_proj('lambert','long',[-130 -121.5],'lat',[47 51.5],'rectbox','on');
m_grid('linewi',2,'linest','none','tickdir','out','fontsize',12);[H]=m_ellipse(-125,49,20,10,30,30,200,'line');
[H]=m_ellipse(-125,49,30,10,80,90,200,'line','color','r','LineWidth',3,'LineStyle','--');

4. 關于m_windrose
??m_windrose函數
用于繪制風向玫瑰圖。風向玫瑰圖通常用來顯示風的方向和頻率分布,適合氣象學和地理學的應用。
??m_windrose函數
的一般形式為:
N=m_windrose(long,lat,thet,spd,varargin)
??其中,long,lat
為繪制風向玫瑰圖的投影坐標;thet
為風向數據;spd
為風速數據;varargin
為可選參數,主要包括以下內容:
??nspeeds
: 速度劃分區間數量,默認值為[0:4:24];
??ndirs
: 方向劃分區間數量,默認是36個;
??size
: 風向玫瑰圖尺寸占背景圖的長寬比例;
??nrings
: 背景環數,標量或向量(默認值[2 4 6])。如果是標量,則設置為間隔2%的環數;
??labelrings
: logical or angle;
??barstyle
: 默認顏色和紋路;
??alpha
: 風向玫瑰圖的透明度(0到1,默認為0.4);
??m_windrose函數
繪圖示例,示例數據可從資源中獲取:
clc;clear;% 加載風速和風向
[data]=xlsread('wind data.xlsx');
clf;set(gcf,'color','w');
m_proj('lambert','lon',[77 82],'lat',[27 32] )
levels=[0:4:24]; % Binning for speedsm_windrose({80},{30},{data(:,1)},{data(:,2)},...'size',.17,'nspeed',levels,'alpha',1);colormap(m_colmap('jet'));
caxis([0 24]);
m_gridaxb=m_contfbar(.8,[.6 .9],levels,levels);
axb.YLabel.String='Wind speeds m/s';
axb.YTick=levels;

5. 結語
?? 本篇介紹了m_map
中繪制航跡圖的函數(m_track
)、繪制特定半徑范圍的函數(m_range_ring
)、繪制橢圓的函數(m_ellipse
)、繪制風玫瑰圖的函數(m_windrose
)通過示例展示了各函數的基本用法,對于繪制常見地學圖已經夠用了,后面若發現還有其它相關函數再進行補充。希望對繪圖的你有所幫助
😜
😜😜
😜😜😜😜