14 - matlab m_map地学绘图工具基础函数 - 一些数据转换函数(一)

14 - matlab m_map地学绘图工具基础函数 - 一些数据转换函数(一)

  • [0. 引言](#0. 引言)
  • [1. 关于m_ll2xy和m_xy2ll](#1. 关于m_ll2xy和m_xy2ll)
  • [2. 关于m_lldist](#2. 关于m_lldist)
  • [3. 关于m_xydist](#3. 关于m_xydist)
  • [4 关于m_fdist](#4 关于m_fdist)
  • [5 关于m_idist](#5 关于m_idist)
  • [6. 总结](#6. 总结)

0. 引言

通过前面篇节已经将m_map绘图工具中++大多绘图有关的函数++ 进行过介绍,已经++能够满足基本的绘图需求++ ,下面几节介绍下m_map中关于数据类型转换的一些函数,在特定应用场景下也是极为重要的。首先介绍下面几种数据转换函数:。

1. 关于m_ll2xy和m_xy2ll

m_ll2xy函数用于将经纬度坐标转换为地图投影坐标,m_xy2ll函数m_ll2xy函数的逆过程,用于将投影坐标转换为经纬度坐标。需要在地图上标记点或绘制特定区域时这两个命令就极为重要了。

m_ll2xy函数的一般形式为:

matlab 复制代码
[X,Y,I]=m_ll2xy(lon,lat,varargin)
[long,lat]=m_xy2ll(X,Y)

其中:

  • lon和lat 为经纬度坐标向量;
  • x和y为平面投影坐标,向量长度和lon和lat向量的长度一致;
  • varargin为可选参数,以输入'clip', ( 'on' | 'off' | 'patch' | 'point' )等一些属性值,用于对超出研究范围的区域的Nan值进行处理;

m_ll2xy函数m_xy2ll函数函数使用示例,经过m_ll2xy、m_xy2ll的互转之后,lon和lon2数值一致,表明在坐标转换上二者功能可逆,经过m_ll2xy函数转换后的坐标具备平面坐标特征;

matlab 复制代码
m_proj('miller', 'lon', [-180 180], 'lat', [-90 90]); %

lon = linspace(-180, 180, 10);
lat = linspace(-90, 90, 10);

[x,y] = m_ll2xy(lon, lat);
[lon2,lat2] = m_xy2ll(x,y);
m_grid
scatter(lon2,lat2)

2. 关于m_lldist

m_lldist函数用于计算两个地球表面上的点之间的球面距离。这个函数可以计算两点之间的大圆距离(最短距离)或测地线距离(大圆弧长度)。

m_lldist函数一般形式为:

matlab 复制代码
[dist,lons,lats] = m_lldist(long,lat,N)

其中:

  • long,lat 球面上两点A、B的经纬度坐标;
  • N 是用于近似大圆弧的点的数量;
  • dist 为A、B两点间的大圆弧距离;
  • [lons lats] A-B路径中的坐标点;

m_lldist函数使用示例

matlab 复制代码
m_proj('miller','lat',[-77 77]);   
m_coast('patch',[.7 1 .7],'edgecolor','none'); 
m_grid('box','fancy','linestyle','-','gridcolor','w','backcolor',[.2 .65 1]);
    
cities={'Cairo','Washington','Buenos Aires'}; 
lons=[ 30+2/60  -77-2/60   -58-22/60];
lats=[ 31+21/60  38+53/60  -34-45/60]; 
for k=1:3
    [range,ln,lt]=m_lldist([-123-6/60 lons(k)],[49+13/60  lats(k)],40); 
    m_line(ln,lt,'color','r','linewi',2); 
    m_text(ln(end),lt(end),sprintf('%s - %d km',cities{k},round(range)));
end
title('Great Circle Routes','fontsize',14,'fontweight','bold');
    
set(gcf,'color','w');   % Need to do this otherwise 'print' turns the lakes black

3. 关于m_xydist

m_xydist 函数用于计算地图投影坐标系下两点之间的直线距离。

m_xydist 函数一般形式

matlab 复制代码
dist = m_xydist(x,y)

其中,x、y为坐标向量,表示投影坐标上的两点;dist 为两点之间的直线距离:

m_xydist函数适用示例

matlab 复制代码
lon1 = -73.98;
lat1 = 40.78;
lon2 = -122.40;
lat2 = 37.77;
distance = m_xydist([lon1 lon2], [lat1, lat2]);
fprintf('直线距离为 %f 单位\n', distance);
matlab 复制代码
输出结果为>> 直线距离为 3954.971314 单位

4 关于m_fdist

m_fdist函数用于计算椭球上给定点在某方位/距离上的位置。

m_fdist函数一般形式为:

matlab 复制代码
[lon2,lat2,a21] = m_fdist(lon1,lat1,a12,s,spheroid)

其中:

  • lon1,lat1 球面上的1点坐标;
  • a12,s 第2个点的方位角a12和距第一个点的距离s;
  • spheroid 坐标系,默认为WGS84坐标系统;
  • lon2,lat2,a21 返回第二个点的坐标和相对于第一个点的方位角;

m_fdist函数使用示例

matlab 复制代码
clf;
m_proj('lambert','long',[-130 -121.5],'lat',[47 51.5],'rectbox','on');

[lon2 lat2 a21] = m_fdist(-121.98, 48.78,30,2);
fprintf('坐标点[-121.98, 48.78]方位角30°距离2m的点的坐标和相对与该点的方位角: %.2f  %.2f  %.2f \n', lon2,lat2,a21);

5 关于m_idist

m_idist函数用于计算地图上两点之间的距离或方位。具体来说,m_idist 用于在地图投影上计算两个点之间的直线距离、大圆距离或方位角。

m_idist函数的一般形式为:

matlab 复制代码
[s,a12,a21] = m_idist(lon1,lat1,lon2,lat2,spheroid)
% lon1,lat1,lon2,lat2 两点坐标
% spheroid 默认WGs84坐标系

m_idist函数使用示例

matlab 复制代码
m_proj('mercator', 'lon', [69.5 105.5], 'lat', [24.5 40.5]);

% 计算两点之间的距离和方位角
[dist, az] = m_idist(70, 80,27,28);

% 显示结果
fprintf('Distance between New York and Los Angeles: %.2f km\n', dist);
fprintf('Azimuth from New York to Los Angeles: %.2f degrees\n', az);

打印结果

matlab 复制代码
>> Distance between New York and Los Angeles: 6114934.62 km
>> Azimuth from New York to Los Angeles: 227.39 degrees

6. 总结

本篇介绍了m_map中数据转换的有关函数,对各函数的功能及使用方法进行描述。++希望对绘图的你有所帮助++

😜

😜😜

😜😜😜😜

相关推荐
FUXI_Willard3 个月前
MATLAB绘图基础9:多变量图形绘制
开发语言·matlab·信息可视化·数据可视化·matlab绘图
FUXI_Willard3 个月前
MATLAB绘图基础8:双变量图形绘制
开发语言·matlab·数据可视化·matlab绘图
liangbm33 个月前
MATLAB系列09:图形句柄
图像处理·笔记·计算机视觉·matlab·matlab绘图·工程基础·图形句柄
咋(za)说5 个月前
13 - matlab m_map地学绘图工具基础函数 - 介绍创建管理颜色映射的函数m_colmap和轮廓图绘制颜色条的函数m_contfbar
m_map绘图工具·matlab绘制地学图·创建和管理颜色映射函数·轮廓图绘制颜色条的函数·m_contfbar·m_colmap
咋(za)说6 个月前
09 - matlab m_map地学绘图工具基础函数 - 绘制区域填充、伪彩色、加载图像和绘制浮雕效果的有关函数
m_map绘图工具·matlab绘制地学图件·区域填充函数m_hatch·绘制伪彩色图m_pcolor·加载图像函数m_image·m_shadedrelief
咋(za)说6 个月前
07 - matlab m_map地学绘图工具基础函数 - 绘制等高线
m_map绘图工具·matlan地图绘制·m_elev函数·m_contour函数·m_contourf函数·绘制等高线·绘制等高线填充
咋(za)说6 个月前
03 - matlab m_map地学绘图工具基础函数 - 设置坐标系(m_coord)
matlab·m_map绘图工具·m_coord坐标系初始化·地理/地磁坐标系设置·m_map函数