当前位置:   article > 正文

11 - matlab m_map地学绘图工具基础函数 - 绘制航迹、椭圆、风向玫瑰图和特定的圆形区域的有关函数及其用法

11 - matlab m_map地学绘图工具基础函数 - 绘制航迹、椭圆、风向玫瑰图和特定的圆形区域的有关函数及其用法

11 - matlab m_map地学绘图工具基础函数 - 绘制航迹、椭圆、风向玫瑰图和特定的圆形区域的有关函数及其用法


0. 引言

   本篇介绍下m_map绘制航迹图函数(m_track)、绘制特定半径的范围的函数(m_range_ring)、绘制椭圆的函数(m_ellipse)、绘制风玫瑰图的函数(m_windrose)。

1. 关于m_track

  m_track函数用于在地图上绘制航迹。这个函数可以用来可视化航行路径或飞行路径等。航迹图上可以标注时间日期

  m_track 函数一般形式为:

m_track(lon,lat,varargin)
  • 1

其中:

  • 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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

  下图红色部分即为m_track命令加载的内容,可以使用上面提到的属性进行绘图样式的调整;


2. 关于m_range_ring

  m_range_ring 函数用于在地图上绘制指定半径的范围圈。这在航海、航空和地理信息系统中很常见,用于表示某一点周围的特定半径范围。

  m_range_ring 函数的基本语法如下:

m_range_ring(lon, lat, radius, varargin)
  • 1

  其中,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'); % 添加图示
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

自建示例

%% 自建
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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3. 关于m_ellipse

  m_ellipse 函数用于在地图上绘制椭圆。

  m_ellipse函数的一般形式为:

[h,varargout]=m_ellipse(long,lat,fmaj,fmin,finc,fpha,scale,type ,varargin)
  • 1

  其中,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','--');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4. 关于m_windrose

  m_windrose函数用于绘制风向玫瑰图。风向玫瑰图通常用来显示风的方向和频率分布,适合气象学和地理学的应用。

  m_windrose函数一般形式为:

N=m_windrose(long,lat,thet,spd,varargin)
  • 1

  其中,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 speeds

m_windrose({80},{30},{data(:,1)},{data(:,2)},...
           'size',.17,'nspeed',levels,'alpha',1);
       
colormap(m_colmap('jet'));
caxis([0 24]);
m_grid

axb=m_contfbar(.8,[.6 .9],levels,levels);
axb.YLabel.String='Wind speeds m/s';
axb.YTick=levels;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

5. 结语

   本篇介绍了m_map中绘制航迹图的函数(m_track)、绘制特定半径范围的函数(m_range_ring)、绘制椭圆的函数(m_ellipse)、绘制风玫瑰图的函数(m_windrose)通过示例展示了各函数的基本用法,对于绘制常见地学图已经够用了,后面若发现还有其它相关函数再进行补充希望对绘图的你有所帮助






声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】

推荐阅读
相关标签