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

news2024/9/17 9:06:57

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

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


0. 引言

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

1. 关于m_ll2xy和m_xy2ll

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

  m_ll2xy函数的一般形式为:

[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函数转换后的坐标具备平面坐标特征;

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函数一般形式为:

[dist,lons,lats] = m_lldist(long,lat,N)

  其中:

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

  m_lldist函数使用示例

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 函数一般形式

dist = m_xydist(x,y)

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

  m_xydist函数适用示例

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

4 关于m_fdist

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

  m_fdist函数一般形式为:

[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函数使用示例

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函数的一般形式为:

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

  m_idist函数使用示例

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);

  打印结果

>> Distance between New York and Los Angeles: 6114934.62 km
>> Azimuth from New York to Los Angeles: 227.39 degrees

6. 总结

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






😜
😜😜
😜😜😜😜

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1919565.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

后仿真中《SDF反标必懂连载篇》之 反向提取SDF反标延迟

今天,整理一下最近工作中遇到的一个问题,及解决问题的办法,仅分享给大家。 我们知道,我们在完成SDF时序反标之后,首先要做的事情:检查sdfannotation 文件。文件中记录了每个sdf 文件,每个实例的…

【C语言】C语言-宾馆客房管理系统(源码+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

20240711编译友善之臂的NanoPC-T6开发板的Buildroot

20240711编译友善之臂的NanoPC-T6开发板的Buildroot 2024/7/11 21:02 百度:nanopc t6 wiki https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T6/zh NanoPC-T6/zh 4.4 安装系统 4.4.1 下载固件 4.4.1.1 官方固件 访问此处的下载地址下载固件文件 (位于网盘的&q…

可道云teamOS,用个人标签和公共标签,文件分类更多样

在信息爆炸的时代,我们每天都在与海量的数据和信息打交道。如何在这些纷繁复杂的信息中快速找到我们需要的,成为了摆在我们面前的一大难题。 为大家介绍一下可道云teamOS个人标签和公共标签功能,让信息的整理与搜索变得简单高效。 一、个人…

YOLOv10训练自己的数据集(交通标志检测)

YOLOv10训练自己的数据集(交通标志检测) 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows 使用YOLOv10训练自己的数据集进行交通标志检测准备数据进行训练进行预测进行验证 参考文献 前言 由于本人水平有限,难免出现错漏&#xff…

【益起童行】我与孩子一起挺过的日子

今天不谈技术,只想讲讲我的故事,但并不是想寻求同情,目前过得很幸福,但并不是所有人的情况都是这么乐观! 我就只是想呼吁大家能和我【‘益’起‘童’行】,帮助更多家庭的点亮希望之光。而我也一定也会坚持尽…

LangChain框架详解

LangChain框架详解 LangChain是一个基于语言模型开发应用程序的强大框架,旨在帮助开发人员简化与大模型交互、数据检索以及将不同功能模块串联起来以完成复杂任务的过程。它提供了一套丰富的工具、组件和接口,使开发人员能够轻松构建上下文感知和具备逻…

Fast DDS library windows 下源码编译(cmake)

目录 编译环境: 编译需要的源码文件: Fast DDS编译: 注意事项: 参考文档: 基于Fast DDS 的源码来编译相关的库,然后可以通过python 来调用库文件实现dds 数据通信,本文就详细的介绍编译过程…

评估指标:精确率(Precision)、召回率(Recall)、F1分数(F1 Score)

评估指标:精确率(Precision)、召回率(Recall)、F1分数(F1 Score) 前言相关介绍1. 准确率(Accuracy)2. 精确率(Precision)3. 召回率(Re…

react学习——26react-redux实现求和案例(完整版)

1、目录结构 2、components/count/index.js import React, {Component} from "react"; export default class Count extends Component {//加法increment()>{const {value} this.selectNumthis.props.jia(Number(value))}//减法decrement()>{const {value} …

发行自己的ERC20代币

发行自己的代币 步骤1 从https://etherscan.io/tokens 查找一个代币 步骤2 复制其合约代码 步骤3 在remix中编译合约代码 步骤4 部署合约(需要提前安装Metamask, 并获取一些测试币), 这里Rinkeby测试为例 可以在 https://faucet.rinkeby.io/ 获取 Rinkeby的测试币 其中的…

关于delete和delete[ ]混用的未定义问题解释

我们知道delete用于释放一个动态空间,而delete[ ]用于释放多个动态空间,但是如果我们混用的话会导致什么问题?我在博客上看了许多文章,但不尽人意,因此写下这篇文章让你知其然知其所以然(浅薄的解释&#x…

招采全流程电子化优势及重要功能环节(数智化招采系统)

招投标全流程电子化,是加速招标采购领域数字化转型、创新招标采购交易机制的重要举措。它在构建高效规范、公平竞争、充分开放的大市场环境中起着至关重要的作用。 招采电子化历史沿革 2013年2月,国家发展改革委等八部门发布了《电子招标投标办法》&am…

基于React 实现井字棋

一、简介 这篇文章会基于React 实现井字棋小游戏功能。 二、效果演示 三、技术实现 import {useEffect, useState} from "react";export default (props) > {return <Board/> }const Board () > {let initialState [[, , ], [, , ], [, , ]];const [s…

Linux C embed development (personal rveiew)

1. 如何快速去bring up bcm 的wifi chipset a. 首先的确认 编译的BSP profile b. 其次要先用 default 的kernel config 去编译 c. 现在我们的一些 PCIE/GPIO/driver 总线的设置 都在dts 中&#xff0c;有错就去改dts 2. BCM 的板子bring up 注意事项 a. fw: bcm…

网络基础:Vlan原理与配置

VLAN&#xff08;Virtual Local Area Network&#xff0c;虚拟局域网&#xff09;是一种将一个物理网络划分为多个逻辑子网的技术。它通过在网络交换机上配置&#xff0c;使得不同VLAN中的设备即使连接在同一个物理交换机上&#xff0c;也不能直接进行通信&#xff0c;从而实现…

无头单向非循环链表实现 and leetcode刷题

无头单向非循环链表实现 1. 单链表的模拟实现IList.java接口&#xff1a;MySingleList.java文件&#xff1a; 2. leetcode刷题2.1 获取链表的中间节点2.2 删除链表中所有值为value的元素2.3 单链表的逆置2.4 获取链表倒数第k个节点2.5 给定 x, 把一个链表整理成前半部分小于 x,…

Docker存储目录问题,如何修改Docker默认存储位置?(Docker存储路径、Docker存储空间)etc/docker/daemon.json

文章目录 如何更改docker默认存储路径&#xff1f;版本1&#xff08;没测试&#xff09;版本2&#xff08;可行&#xff09;1. 停止 Docker 服务&#xff1a;2. 创建新的存储目录&#xff1a;3. 修改 Docker 配置文件&#xff1a;4. 移动现有的 Docker 数据&#xff1a;5. 重新…

盲人出行体验攻略:蝙蝠避障,点亮前行的明灯

在繁华喧嚣的都市中&#xff0c;每一步都充满了未知与挑战&#xff0c;而对于盲人朋友们来说&#xff0c;出行更是一场无声的冒险。他们凭借着内心的勇气和坚韧的意志&#xff0c;在黑暗中摸索前行&#xff0c;每一步都承载着对生活的热爱与追求。今天&#xff0c;我们要深入探…

YOLOv8改进 | 注意力机制| 利用并行子网络构建深度较浅但性能卓越的网络【全网独家】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…