M_Map绘图笔记——快速入门(二)

介绍

这篇博客里将针对一些m_map函数进行讲解。在M_Map官方的用户向导里有详细的使用方法介绍。也可以从资源里下载中文版的用户向导手册。

基本用法

地图投影
%俄勒冈州/不列颠哥伦比亚省海岸线一部分
%斜墨卡托投影
m_proj('oblique mercator');
m_coast;
m_grid;
%经度用符号划分,东经为正,西经为负
%角度用十进制表示
m_proj用法
%设置投影属性
m_proj('oblique mercator','longitudes',[-132 -125], 'latitudes',[56, 40],'direction','vertical','aspect',0.5)

使用m_proj('set') 或者 m_proj set得到投影列表

Available projections are:
     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   罗宾逊投影
     UTM   通用横轴墨卡托投影

如何想得到这些投影可能的选项,可以在上述命令中添加投影的名称,如:

m_proj('set','stereographic')

运行结果

     'Stereographic'                                                            
     <,'lon<gitude>',center_long>                                               
     <,'lat<itude>', center_lat>                                                
     <,'rad<ius>', ( degrees | [longitude latitude] ) | 'alt<itude>', alt_frac >
     <,'rec<tbox>', ( 'on' | 'off' | 'circle' )>                                
     <,'rot<angle>', degrees CCW>   

投影的更多细节,例如:查看正弦投影的默认参数,需要先初始化,然后使用get选项

m_proj('Sinusoidal')
m_proj get
Current mapping parameters -
 Projection: Sinusoidal  (function: mp_tmerc)
 longitudes: -90  30 (centered at -30)       
 latitudes: -65  65                          
 Rectangular border: off   
%设置填充和边界颜色
m_coast('patch',[.7,.7,.7],'edgecolor','r');
%使用get语法得到一系列选项使用方法
m_grid get

一般不用设置m_grid,默认就可以。

	'box',( 'on' | 'fancy' | 'off' )
      'xtick',( num | [value1 value2 ...])
      'ytick',( num | [value1 value2 ...])
      'xticklabels',[label1;label2 ...]
      'yticklabels',[label1;label2 ...]
      'xlabeldir', ( 'middle' | 'end' )
      'ylabeldir', ( 'end' | 'middle' )
      'ticklength',value
      'tickdir',( 'in' | 'out' )
      'tickstyle',('dm' | 'dd' )
      'color',colorspec
      'gridcolor',colorspec
      'backgroundcolor',colorspec
      'linewidth', value
      'linestyle', ( linespec | 'none' )
      'fontsize',value
      'fontname',name
      'XaxisLocation',( 'bottom' | 'middle' | 'top' ) 
      'YaxisLocation',( 'left' | 'middle' | 'right' ) 
%假设在129W,48.5N显示和标注位置一个锚
%使用MATLAB自带的line和text函数,需要将经纬度转XY值绘图
[X,Y] = m_ll2xy(-129,48.5)
line(X,Y,'marker','square','markersize',4,'color','r');
text(X,Y,'M5','vertical','top')

函数m_ll2xy与m_xy2ll功能相反,用于转换经纬度坐标去匹配投影。
也可以使用M_Map工具箱中内置函数m_line 和m_text绘图。

地图比例尺

设置地图比例尺函数m_scale
设置1:250000比例尺:

m_scale(250000)
海岸线和水深

M_Map包含两个简单的海岸线和全球高程数据库。如需要更多细节的地图可以使用免费的高分辨率数据集。
使用m_coast 函数可以访问M_Map数据库,海岸线可以通过下述语句以单线条形式绘出:

%设置填充和边界颜色
m_coast('patch',[.7,.7,.7],'edgecolor','r');
自定义坐标轴
网格线和标签

为了绘制完美网格,可以尝试不同的网格选项。m_grid 用来绘制网格,m_ungrid 清除网格。

% 北美兰伯特投影  
m_proj('Lambert');
m_coast;
m_grid;
% m_ungrid;

可以被改变的选项是:
外框是否绘制,

'box',( 'on' | 'off' | 'fancy' ) 
'tickdir'  是'in'黑白交替的效果(铁路线效果)
'tickdir'  是'out'一个更复杂的图案效果

指定网格的数量或位置。

'xtick',( num | [value1 value2 ...])

指定标签

'xticklabels',[label1;label2 ...]
图列

可以使用m_legend 在地图中添加图列,图列盒可以使用鼠标进行拖放。

比例尺

可以使用m_ruler 在地图中添加比例尺。

绘制线条、文本、箭头、填充、阴影、斑点状和等值线
  m_plot(LONG,LAT,...line properties)      %在地图上画一个线条(清除现有线条)
  m_line(LONG,LAT,...line properties)      % 在地图上面画一个线条
  m_text(LONG,LAT,'string')                % 文本
  m_quiver(LONG,LAT,U,V,S)                 % 箭头线条
  m_patch(LONG,LAT,..patch properties)     % 填充.  
  m_annotation('line',LON,LAT)             % Annotation
绘制轨迹

用于表示飞行器、船舶或卫星随时间变化位置曲线,并且添加时间标注。这个可以用m_track 实现。

m_proj('UTM','long',[-72 -68],'lat',[40 44]);
m_gshhs_i('color','k');
m_grid('box','fancy','tickdir','out');

% 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_ungrid track
计算两点之间的距离

可以使用经纬度或地图坐标(X|Y)使用m_lldist 和 m_xydist计算

  • 31
    点赞
  • 215
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值