MATLAB地圖工具箱學習總結(一)從地圖投影說起

天靖居士發表於2016-04-18

 

MATLAB地圖工具箱學習總結(一)從地圖投影說起

MATLAB地圖工具箱學習總結系列:

(一)從地圖投影說起

(二)大圓和恆向線

(三)地圖工具箱的基本知識

(四)自定義投影

前言

本學期地圖投影課上,李連營老師建議我們使用MATLAB完成每週的作業。從大二上學期開始接觸MATLAB學習數學運算和地理資料處理的我,自然不會放過這次機會,每週找了點時間好好研究了一下,把作業比較輕鬆地就搞定了。不過由於網上相關的教程、資料比較少,在夾雜了多種專業詞彙的同時,又沒有中文翻譯,也是讓人感到頭疼。在此想總結一下相關的函式,以幫助其他需要使用工具箱的人。作為一個學生,我所接觸的僅僅是皮毛,也必然會有一些錯誤,希望看到的人能夠指出,謝謝。

PS:本文基於MATLAB  R2014a版本。

1                    作業案例:地圖投影作業5-7

在作業5、6、7中,李老師分別要求我們在MATLAB中畫出正軸、橫軸、斜軸的方位、圓柱、圓錐投影(引數自定),查閱MATLAB幫助後,在其基礎上完成了作業。以等角橫軸圓柱投影為例,原始碼及效果如下圖所示:

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

  

接下來我將詳細解釋一下各函式及其引數的意義和作用。

2                    地圖投影的分類:

(1)          MATLAB中支援多種地圖投影,檢視具體支援哪些只需要在命令列中敲入maps,可以獲得MATLAB中所有地圖投影型別的分類屬性(圓錐、圓柱、方位投影等),名稱及MATLAB中使用時的簡稱。如下圖:

(2)          以下是我本人翻譯的部分投影型別中英文翻譯對照表。

3                    shaperead的用法

shaperead用於讀取shapefile檔案的資料,並將其進行儲存。

(1)          基本用法:shpaeread(filename,Name,Value)

其中,filename指的是檔名,此項必設,後面可以跟多項設定。其生成一個結構體,包括Geometry幾何物件,BoundingBox範圍,X,Y座標值等資料。

(2)          常用設定

                            1)              BoundingBox:是一個2*2的陣列,限定了讀取檔案要素的範圍,只有該範圍內的要素才能被選中。

                            2)              Attributes:讀取屬性設定,後面跟一個字串陣列,字串即為所要讀取的屬性。當設定該屬性後,shapefile檔案中只有被選擇的屬性才可以被讀取出來。

                            3)              UseGeoCoords:可以選擇為true或者false(預設),即是否使用地理結構(GeoStruts)。如果資料已經被投影了就選擇false,如果還未被投影,可以選擇true以生成投影。

4                    axesm的用法

axesm是地圖工具箱中最重要、最常用的函式之一,用來定義地圖的座標系,設定地圖的屬性。而地圖投影的型別也可以在裡面進行設定和調整。

(1)          基本用法:axesm(projid,PropertyName,PropertyValue)

其中,projid指的是投影型別的簡稱,此項必設,後面可以跟多項屬性,包括屬性名稱和屬性值。屬性分為四大類:控制地圖投影的屬性,控制框架的屬性,控制格網的屬性,控制座標軸標籤的屬性。下面就一一介紹一些常用的屬性。此外,也可以直接在命令列中敲入axesm手動調整部分引數。

(2)          常用屬性:

                            1)              AngleUnits:包括degrees(預設)度和radians弧度兩個屬性,定義角度的單位。

                            2)              MapLatLimit[southern_limit northern_limit]和MapLonLimit[western_limit eastern_limit]:分別定義了經度和緯度的範圍

                            3)              Origin[latitude longitude orientation]:定義了地圖的中心區域。輸入的經緯度將成為地圖投影的中心。最後一個引數orientation則設定了地圖旋轉的角度。

                            4)              Frame:包括on和off(預設)兩個屬性。可以定義地圖的邊框是否顯示。

                            5)              Grid:包括on和off(預設)兩個屬性。可以是否顯示地圖格網。

5                    geoshow的用法

geoshow是用來顯示地圖資料的函式,非常重要,大部分的地圖都使用該函式進行顯示。由於其使用的方法多種多樣,在此僅僅介紹一小部分和本文開始案例相關的用法。

(1)          基本用法:

                            1)              geoshow(lat,lon)直接輸入經緯度,將以該經緯度為中心,生成一小片地圖。

                            2)              geoshow(filename)直接輸入地圖檔名,生成該地圖

                            3)              geoshow(_,Name,Value,)輸入相關屬性並設定引數,生成所需要的地圖。

(2)          常用屬性:

                            1)              facecolor:定義了地圖表面的顏色,需要輸入三個引數且均在0至1之間。

                            2)              edgecolor:定義了海岸線邊界的顏色,引數值同上。

1 landareas=shaperead('landareas.shp','UseGeoCoords',true);
2 axesm('mercator','Frame','on','Grid','on','origin',[0 120 0])
3 geoshow(landareas,'FaceColor',[1 .2 .5],'EdgeColor',[.2 .6 .1]);
4 tissot

6                    tissot的用法

tissot用來顯示變形橢圓。

(1)          基本用法:

                            1)              tissot可以自動顯示變形橢圓,最小橢圓大小為顯示範圍的十分之一。

                            2)              tissot(radius)其中radius是最小橢圓的大小。

1 landareas=shaperead('landareas.shp','UseGeoCoords',true);
2 axesm('mercator','Frame','on','Grid','on','origin',[0 120 0]);
3 geoshow(landareas,'FaceColor',[1 .2 .5],'EdgeColor',[.2 .6 .1]);
4 tissot(0.05);

                            3)              tissot(linestyle)其中linestyle是橢圓線形。

                            4)              tissot(lineStyle,PropertyName,PropertyValue)可以設定關於線形的其他屬性。

 

7                    mdistort的用法

mdistort用來顯示等變形線。

(1)          基本用法:

                            1)              mdistort可以自動顯示等變形線。

                            2)              mdistort(parameter).可以對等變形線進行引數設定。

(2)          常用屬性:

                            1)              'area':後面跟陣列,可以在相應的引數位置設定等變形線。

                            2)              'angle':根據角度設定等變形線的間隔。

                            3)              'parscale':和area類似,目前我本人也沒有搞清楚兩者之間具體的差異。

1 landareas=shaperead('landareas.shp','UseGeoCoords',true);
2 axesm('mercator','Frame','on','Grid','on','origin',[0 120 0]);
3 geoshow(landareas,'FaceColor',[1 1 .5],'EdgeColor',[.6 .6 .6]);
4 mdistort('parscale',[-500:100:500])

今天關於MATLAB地圖投影的相關知識就介紹這麼多,看幫助才是最重要的,我這裡僅僅挑出了相關的個別屬性,但MATLAB功能實在強大,應該好好利用!下次準備講一講大圓和恆向線路徑生成的問題。

天靖居士

2016.4.18

 

4.24更新說明:新增mdistort等變形線說明。

8.17更新說明:具體程式碼請參考:https://git.oschina.net/kkyyhh96/MapProjectInMatlab

有關地圖工具箱其他文章,請參看:

MATLAB地圖工具箱學習總結系列:

(一)從地圖投影說起

(二)大圓和恆向線

(三)地圖工具箱的基本知識

(四)自定義投影

相關文章