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

server/2024/10/21 9:48:37/

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)通过示例展示了各函数的基本用法,对于绘制常见地学图已经够用了,后面若发现还有其它相关函数再进行补充希望对绘图的你有所帮助






😜
😜😜
😜😜😜😜


http://www.ppmy.cn/server/55414.html

相关文章

数据库第一次作业

以管理员身份进入CMD 1、对mysql进行初始化,这里会产生临时的密码(由于我已经初始化过了所以这里并没有现实临时密码) 2、安装mysql服务 3、启动mysql服务 4、登录mysql,使用临时密码或者已经更改过的密码 5、修改密码

使用PowerShell开启防火墙端口

使用PowerShell开启防火墙端口 引言 防火墙是网络安全的重要组成部分,它通过控制进出网络的流量来保护计算机和网络免受未经授权的访问。有时候,我们需要打开特定的防火墙端口以允许特定应用程序或服务的通信。本文将详细讲解如何使用 PowerShell 开启…

基于Hadoop平台的电信客服数据的处理与分析③项目开发:搭建基于Hadoop的全分布式集群---任务5:ZooKeeper集群安装

任务描述 ZooKeeper是一个开源分布式协调服务,其独特的Leader-Follower集群结构,很好的解决了分布式单点问题。目前主要用于诸如:统一命名服务、配置管理、锁服务、集群管理等场景。大数据应用中主要使用ZooKeeper的集群管理功能。在这里使用…

Ubuntu 22.04远程自动登录桌面环境

如果需要远程自动登录桌面环境,首先需要将Ubuntu的自动登录打开,在【settings】-【user】下面 然后要设置【Sharing】进行桌面共享,Ubuntu有自带的桌面共享功能,不需要另外去安装xrdp或者vnc之类的工具了 点开【Remote Desktop】…

serverless

只写方法,其他的不用管。没有服务器 第一个例子 让我们通过一个具体的案例来理解Serverless架构的意义和工作方式。 案例:社交媒体图片处理服务 背景 假设你正在为一个社交媒体平台开发一项功能,用户可以上传个人照片,系统自动…

我的世界服务器-高版本服务器-MC服务器-生存服务器-RPG服务器-幻世星辰

生存为主,RPG乐趣为辅,重视每位玩家的建议,一起打造心目中的服务器,与小伙伴一起探险我的世界! 服务器版本: 1.18.2 ~ 1.20.4 Q群: 338238381 服务器官网: 星辰毛毛雨-Minecraft高版本生存服务器我的世界…

Golang 开发实战day15 - Input info

🏆个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴‍♂️ Java问题收集园地 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 Golang 开发实战day15 - 用户…

如何在开发过程中减少 Bug?

爱因斯坦曾说过:“如果我有一个小时来解决一个关系到我生死的问题,我会花55分钟弄清楚问题是什么。一旦我知道了问题是什么,我可以在五分钟内解决它。” 虽然我们的软件开发过程并不涉及生死抉择,但它直接影响用户体验&#xff0c…