reference: http://blog.sina.com.cn/s/blog_8fc890a20102v6pm.html
需要用一些地圖工具,arcgis懶得裝了,GMT(generic mapping tools)太復雜,因此搜到了m_map, 正好是MATLAB的工具箱。於是研究了一晚上。
一、m_map 工具箱的安裝
https://www.eoas.ubc.ca/~rich/map.html (若打不開鏈接,需要逐級訪問)
以上網址是m_map工具箱的網站,找到m_map工具箱文件下下來,一共不到700k。名字叫
gzipped tar-file , or
zip archive 下其中一個即可。(目前最新為1.4版本)
方法1
解壓,得到 m_map文件夾,把他放到你的MATLAB安裝目錄下, 即放在(MATLAB裝在其他盤的請將C改為其他盤符): C:Program Files\MATLAB\R2012b\toolbox\m_map
然后打開 C:Program Files\MATLAB\R2012b\toolbox\local\pathdef.m (如果有權限問題,一般是win7且MATLAB裝在C盤會出現權限問題,那就在開始菜單找到記事本,右鍵,管理員運行,然后打開pathdef.m 文件)
將下面一句話加到 %%% BEGIN ENTRIES %%% 下面
matlabroot,'\toolbox\m_map', ...
最后,打開MATLAB,輸入 rehash
toolboxcache,
到此就安裝好了m_map.
但是我測試了一下,把MATLAB關了重開,由於C盤有權限,MATLAB訪問toolbox文件夾有限,於是安裝不成功,但是如果你的MATLAB是在D盤,就沒事。
方法2
目前一定能成功。后來我就自己開發了一個方法,無論你的MATLAB安裝在哪個盤,將m_map 復制到除了C盤以外的任意一個盤,比如 D:\mymatlabfiles\m_map, 然后用記事本打開那個 pathdef.m, 然后在
%%% BEGIN ENTRIES %%% 下面加入下面的話:
'D:\mymatlabfiles\m_map;', ...
這樣就不用每次打開MATLAB添加path了。
測試安裝好與否的方法是 輸入 what m_map, 如果顯示了一堆m文件名字,即裝好了,如果顯示 not found,則沒裝好,這時候在MATLAB界面上找到 set path,我的是2012b,直接在上面就有,在preference的下面,然后add folder, 瀏覽到C:Program Files\MATLAB\R2012b\toolbox\m_map,然后save即可。
二、m_map 如何入門
首先運行了一個例子,語句是
m_proj('oblique mercator'); m_coast; m_grid;

意思是定義一個投影系統,名叫oblique mercator,注意,定義這個投影系統的時候他已經默默的將地球上的范圍給定義了,這個例子是哥倫比亞的一個海岸,然后 第二句和第三句就是畫圖用的,畫出海岸線和網格,第一句是不畫圖的。那么如何定義地球上的范圍呢,往下看。
m_map 里面嵌有19個投影系統,名字如下所示,你首先要明白這19個系統長什么樣。
proj{1}='Stereographic';proj{2}='Orthographic';proj{3}='Azimuthal Equal-area'; proj{4}='Azimuthal Equidistant';proj{5}='Gnomonic';proj{6}='Satellite'; proj{7}='Albers Equal-Area Conic';proj{8}='Lambert Conformal Conic';proj{9}='Mercator'; proj{10}='Miller Cylindrical';proj{11}='Equidistant Cylindrical';proj{12}='Oblique Mercator'; proj{13}='Transverse Mercator';proj{14}='Sinusoidal';proj{15}='Gall-Peters'; proj{16}='Hammer-Aitoff';proj{17}='Mollweide';proj{18}='Robinson'; proj{19}='UTM';
這是我在MATLAB里把這19個名字弄到一個cell中了。然后我用了下列語句
j=1; m_proj(proj{j}); m_coast; m_grid; m_proj get m_proj('set',proj{j}); m_proj(proj{j},'longitudes',100, 'latitudes',0,'rad',90,'rec','circle','rot',0); m_coast('patch',[.7 .6 .8],'edgecolor','r'); m_grid('xlabeldir','end','fontsize',10);
重點就在這里,我以第一個投影系為例,j=1嘛,前4行是把這個投影系畫出來看看是什么樣,然后
m_proj get 是獲取這個投影系的默認地理范圍,可以看出是

然后我再用m_proj('set',proj{j}); 命令,得到

意思就是,如果你要是用'stereographic' 投影系的話,你可以定義'longitude', 'latitude', 'radius',
'rectbox' and 'rotangle'. 當然,如上面我寫的第7行那個,可以用 'lon'代替'longitude'。
然后我就再第7行把lon設置為100,這時候就可以讓偉大的中國在中間了。就是這樣一個一個系統的去看,每個投影系定義的方式都不一樣,其中有些是重復的,但是意義不同。同理,m_coast 和 m_grid 也是這樣學習,然后在繼續看m_map 網站的用戶說明即可,網址是:
http://www.eos.ubc.ca/~rich/private/mapug.html#p1
希望對你們有幫助,網上一些其他的教程太不負責任,只是將 User's guide 翻譯了一下,翻譯的還不怎么樣。
MATLAB m_map toolbox