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地圖工具箱學習總結系列:
(一)從地圖投影說起
(二)大圓和恆向線
(三)地圖工具箱的基本知識
(四)自定義投影