14 - matlab m_map地學繪圖工具基礎函數 - 一些數據轉換函數(一)

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.pswp.cn/diannao/45170.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/45170.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/45170.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Nuxt3封裝網絡請求 useFetch $fetch

前言: 剛接觸、搭建Nuxt3項目的過程還是有點懵的,有種摸石頭過河的感覺,對于網絡請求這塊,與之前的Vue3項目有所區別,在Vue項目通常使用axios這個庫進行網絡請求,但在Nuxt項目并不推薦,因為有內…

RK3568平臺(顯示篇)主屏副屏配置

一.主屏副屏配置 目前在RK3568平臺上有兩路HDMIOUT輸出,分別輸出到兩個屏幕上,一路配置為主屏,一路配置為副屏。 硬件原理圖: &hdmi0_in_vp2 {status "okay"; };&hdmi1_in_vp0 {status "okay"; }…

【JAVA入門】Day15 - 接口

【JAVA入門】Day15 - 接口 文章目錄 【JAVA入門】Day15 - 接口一、接口是對“行為”的抽象二、接口的定義和使用三、接口中成員的特點四、接口和類之間的關系五、接口中新增的方法5.1 JDK8開始接口中新增的方法5.1.1 接口中的默認方法5.1.2 接口中的靜態方法 5.2 JDK9 開始接口…

Pandas實戰指南:any()函數深度解析與高效應用

Pandas實戰指南:any()函數深度解析與高效應用 引言 在數據分析和處理過程中,經常需要快速檢查數據集中是否存在滿足特定條件的元素。Pandas庫中的any()函數正是這樣一個強大的工具,它可以幫助我們沿著指定的軸檢查是否至少有一個元素滿足某…

Transformer重要論文與書籍 - Transformer教程

近年來,人工智能領域中的Transformer模型無疑成為了炙手可熱的研究對象。從自然語言處理(NLP)到計算機視覺,Transformer展現出了前所未有的強大能力。今天,我們將探討Tra在當今的人工智能和機器學習領域,Tr…

路由守衛中使用next()跳轉到指定路徑時會無限循環

路由守衛鉤子介紹 const router new VueRouter({ ... }) // 導航路由變化時觸發路由守衛鉤子 router.beforeEach((to, from, next) > {// ... }) to: Route: 即將要進入的目標路由對象(到哪去)from: Route: 當前導航正要離開的路由(從哪來)next: Function(必須&#xff0…

axios使用sm2加密數據后請求參數多了雙引號解決方法

axios使用sm2加密數據后請求參數多了雙引號解決 背景問題描述解決過程 背景 因項目安全要求,需對傳給后端的入參加密,將請求參數加密后再傳給后端 前期將axios降低到1.6.7后解決了問題,但最近axios有漏洞,安全要求對版本升級&…

從零開始[進階版]深入學習圖像分類:使用Python和TensorFlow

引言 圖像分類是計算機視覺中的一個核心任務,廣泛應用于人臉識別、自動駕駛、醫療影像分析等領域。在本篇文章中,我們將深入探討圖像分類的原理和實現,使用Python和TensorFlow搭建一個完整的圖像分類系統。本文不僅適合初學者,也…

【Qt 初識 Test】用圖形化和代碼的方式實現簡單的Qt程序

文章目錄 1. 通過圖形化的方式實現🍎2. 通過代碼的方式實現 1. 通過圖形化的方式實現🍎 在界面創建出一個控件,顯示 hello world,通過拖拽的方式實現; widget.ui文件如下:🔍 生成的 ui_widget.…

生物環保技術有哪些缺點或者局限性呢

生物環保技術,作為一種利用生物學原理和技術來處理環境污染的方法,雖然具有綠色環保、高效節能等優點,但也存在一些缺點和局限性。以下是對這些缺點和局限性的詳細分析: 一、受環境因素影響大 生物環保技術的效果往往受到環境因…

數據結構第18節 散列表 - 應用

散列表(Hash Table),也被稱為哈希表,是一種數據結構,它通過使用哈希函數將鍵映射到數組的某個位置來實現快速查找。散列表通常提供平均時間復雜度為O(1)的查找、插入和刪除操作,這使得它們在處理大量數據時…

【mybatis】mybatisX插件概述

一、主要功能 智能補全與提示 MyBatisX 可以智能地提示和補全 SQL 語句中的關鍵字、表名、列名等信息,從而顯著提高開發效率。代碼生成器 雖然 MyBatisX 本身可能不直接提供一個完整的、獨立的代碼生成器,但它可能集成了或支持與其他代碼生成工具&#…

鹵味江湖中,周黑鴨究竟該抓住什么賽點?

近年來,鹵味江湖的決斗從未停止。 隨著休閑鹵味、佐餐鹵味等細分賽道逐漸形成,“鹵味三巨頭”(周黑鴨、絕味食品、煌上煌)的牌桌上有了更多新對手,賽道變擠了,“周黑鴨們”也到了轉型關鍵期。 這個夏天&a…

MySQL字符串相關數據處理函數

目錄 1. 轉大小寫 2. 截取字符串 sunstr 3. 獲取字符長度 4. 字符串拼接 concat 5. 去掉空白 trim 1. 轉大小寫 轉大寫:upper() 轉小寫:lower() 雖然MySQL不嚴格區分大小寫,但是我們還是需要掌握這種大小寫的操作以方便學習其他…

python的入門知識(下)

目錄 學習內容數字字符串、列表和元組映射和集合類型 學習內容 數字 長整型(Long Integer): 在Python中,整數沒有大小限制,但是可以用大寫或小寫的L來表示長整型,盡管這不是Python 3推薦的做法。 復數(Co…

Nessus相關

tenable 1 安裝nessus scanner 1 )安裝nessus scanner: 方法一 curl -H X-Key: xxxxx https://cloud.tenable.com/install/scanner?namescanner-name&groupsscanner-group | bash方法二: **# for ubuntu, its https://www.tenable.com/downloads/api/v1/pu…

【JavaScript腳本宇宙】JavaScript 庫概覽:數字、貨幣值、日期時間處理一網打盡

簡化數據處理:掌握六大 JavaScript 庫的核心功能和使用技巧 前言 在現代的軟件開發中,處理數字、貨幣和日期時間是非常常見的需求。為了簡化這些任務,開發人員可以使用各種 JavaScript 庫來輕松地進行數字格式化、貨幣計算和日期時間操作。…

Google登錄時人機身份驗證的圖片類型和通過的經驗建議,以及一些常見問題

很多朋友在登錄谷歌賬號時,都遇到過要求人機身份驗證的步驟,而且有一些時候人機身份驗證這個步驟很讓人糾結,甚至壓根就出不來具體的驗證圖片,或者花了十幾分鐘、幾十分鐘都過不去。 所以今天GG賬號服務就來為您解析一下谷歌登錄…

初學SpringMVC之接收請求參數及數據回顯

pom.xml 文件導入 lombok 的依賴 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.34</version></dependency> Controller 表示這是一個控制器 RequestParam 表示從前端接收…

夏日智啟:我的Datawhale AI夏令營探索之旅

前言 最近幾年&#xff0c;AI&#xff08;人工智能&#xff09;的發展呈現出了前所未有的迅猛勢頭&#xff0c;其影響力和應用范圍不斷擴大&#xff0c;深刻地改變著我們的生活、工作和社會結構。尤其是AI大模型技術&#xff0c;國內外可謂是“百模大戰”&#xff0c;百舸爭流…