MATLAB地圖工具箱學習總結(二)大圓和恆向線
MATLAB地圖工具箱學習總結系列:
(一)從地圖投影說起
(二)大圓和恆向線
(三)地圖工具箱的基本知識
(四)自定義投影
今天要和大家談一談大圓、恆向線航道的畫法。還是先從案例開始說起,再分別介紹相關的函式。
1 作業案例:地圖投影作業6
在作業6中,李老師要求我們畫出兩點間的大圓航線、恆定線航線和兩者混合的航線。我一開始沒有找到gcwaypts函式,導致自己花了一點時間編寫了一段程式碼實現,但效果並不好,存在誤差。後來找到了神奇的gcwaypts函式,一切也就迎刃而解。在本文中,我將會把兩種方法都簡單介紹一下。
首先是gcwaypts的演示事例,原始碼和效果如下圖所示:
landareas=shaperead('landareas.shp','UseGeoCoords',true); axesm('mercator','Frame','on','Grid','on','origin',[0 120 0]); geoshow(landareas,'FaceColor',[1 1 .5],'EdgeColor',[.6 .6 .6]); [pointlat pointlong]=gcwaypts(40,120,37,-122,3); geoshow(pointlat,pointlong) pointTrack=track2('gc',40,120,37,-122); plotm(pointTrack);
接下來是我自己寫了一個簡單的指令碼,主要應用了track2函式.
思路如下:由於track2函式生成了一串點集(預設為100個),當然,track2函式還可以自己設定點的數目,點數越大自然誤差越小。根據輸入的段數,根據陣列分別求出每一段起始點的座標,再依次連線即可。不過生成的路徑略有偏差。
從上面兩幅圖也可以看出,雖然後者有誤差,但誤差並不大。
接下來我就要講講相關函式的用法了。
2 track1和track2函式的用法
track1和track2這兩個函式都可以用於描繪軌跡。獲取的是一串點集,而通過連線點集即可描繪出具體的軌跡。
(1) track1的基本用法:track1(lat,lon,az,arclen)
其中,lat,lon分別代表起始點的經緯度座標,az代表軌跡的方位角,arclen代表的是距離,單位為角度,也可以是一個角度範圍[a b]從a度到b度
[lattrkgc,lontrkgc]=track1(0,0,45,[-55 55]); plotm(lattrkgc,lontrkgc,'g');
(2) track2的基本用法:track2(lat1,lon1,lat2,lon2)
其中,lat1,lon1,lat2,lon2分別是起始點和終止點的經緯度。
(3) 'gc'和'rh':在track1和track2中都可以看到這樣兩個引數,其實也很好理解,'gc'是大圓,'rh'是恆向線,只要在一開始宣告,最後的軌跡即為所需要的。
(4) trackg的用法:trackg可以通過互動計算建立大圓。在命令列輸入後只需要在地圖上點選相應的位置,設定起始終止點,即可自動畫出大圓線。倘若畫完之後,按住shift點選航線,可以自動跳出下圖對話方塊,可以調整航線的一些引數。
3 gcwaypts函式的用法:
gcwaypts是解決本文開始的案例最佳的方案。其功能正是在大圓上尋找等距航線。其基本用法是:[lat lon]=gcwaypts[lat1,lon1,lat2,lon2,nlegs],其中lat1~lon2四個引數分別代表的是航線起始點的經緯度座標,nlegs代表了航線將分成幾段。讓我們再來返回到最初的案例,分析一下程式碼。
landareas=shaperead('landareas.shp','UseGeoCoords',true); axesm('mercator','Frame','on','Grid','on','origin',[0 120 0]); geoshow(landareas,'FaceColor',[1 1 .5],'EdgeColor',[.6 .6 .6]); [pointlat pointlong]=gcwaypts(40,120,37,-122,3); geoshow(pointlat,pointlong) pointTrack=track2('gc',40,120,37,-122); plotm(pointTrack);
其中起始點設定為靠近北京的地區,終止點設定為舊金山地區,將航線分為3段,那麼最後就顯示出了等距航線。
今天關於MATLAB的問題就說這麼多,這篇文章也是拖了兩週才最終完成。
在接下來的地圖投影課程中題目也是越來越難啦。不過博主會加油爭取把所有的相關知識點都講清楚上傳的!
天靖居士
2016.5.9
8.17更新說明:具體程式碼請參考:https://git.oschina.net/kkyyhh96/MapProjectInMatlab
有關地圖工具箱其他文章,請參看:
MATLAB地圖工具箱學習總結系列:
(一)從地圖投影說起
(二)大圓和恆向線
(三)地圖工具箱的基本知識
(四)自定義投影