唐家德
(楚雄師范學(xué)院數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,楚雄675000)
應(yīng)用MATLAB繪制三維地貌圖
唐家德
(楚雄師范學(xué)院數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,楚雄675000)
以繪制月球表面虹灣區(qū)地形地貌圖和某城市城區(qū)土壤中各重金屬污染物濃度空間分布立體圖為例,說(shuō)明使用MATLAB軟件繪制三維地貌圖的步驟及相應(yīng)的指令,使用這種方法可以快速的繪制三維立體圖。
MATLAB軟件;繪制地貌圖;三維立體圖;重金屬污染;濃度空間分布圖
(1)繪制三維立體圖的意義
我國(guó)地域遼闊,是個(gè)地質(zhì)資源比較豐富的國(guó)家。但也因人口眾多,人民生活持續(xù)改善、經(jīng)濟(jì)建設(shè)飛速發(fā)展的同時(shí),引發(fā)了各種生態(tài)環(huán)境問(wèn)題。在自然因素與人類(lèi)活動(dòng)的雙重影響下,經(jīng)濟(jì)發(fā)展與資源、環(huán)境之間的矛盾日益突出。為了國(guó)民經(jīng)濟(jì)的可持續(xù)發(fā)展,面向新世紀(jì)的挑戰(zhàn),如何協(xié)調(diào)好人與環(huán)境的關(guān)系,保護(hù)和改善生態(tài)環(huán)境,已成為一項(xiàng)重要任務(wù)。而在自然地理環(huán)境中,地貌是最基本要素之一。但在信息化和數(shù)字化的今天,隨著地理信息應(yīng)用領(lǐng)域的不斷拓展、遙感技術(shù)的飛速發(fā)展,要研究地區(qū)地貌特征,傳統(tǒng)的二維地圖已明顯不能滿足人們的需要,人們逐漸開(kāi)始關(guān)注具有豐富地形地貌信息的三維立體圖。
地區(qū)的三維立體圖能很好地反映該地區(qū)的地勢(shì)走向。但在三維地貌處理領(lǐng)域中存在地形數(shù)據(jù)獲取困難,可視化處理過(guò)程復(fù)雜且真實(shí)感效果不強(qiáng)等問(wèn)題。因此在數(shù)據(jù)缺乏的情況下,有時(shí)只能由山區(qū)數(shù)字高程圖等模擬三維地形圖,而數(shù)字高程圖不攜帶任何顯性數(shù)據(jù)。本文主要運(yùn)用MATLAB軟件從不攜帶顯性數(shù)據(jù)的圖中提取數(shù)據(jù)并通過(guò)插值模擬三維地貌圖(本文以月球表面虹灣區(qū)高程圖為例)。
科技猶如一把雙刃劍。20世紀(jì)以來(lái),由于科技的迅猛發(fā)展使經(jīng)濟(jì)水平和人民的生活水平得以提高,但也讓人類(lèi)賴以生存的自然環(huán)境遭受重創(chuàng).工業(yè)、城市經(jīng)濟(jì)發(fā)展的同時(shí),環(huán)境污染也在加劇,而且由于農(nóng)用化學(xué)物質(zhì)的數(shù)量及種類(lèi)不斷增加,致使城區(qū)土壤重金屬污染日益嚴(yán)重。然而,在土壤中重金屬污染物的滯留時(shí)間長(zhǎng),移動(dòng)性差也不能被微生物降解,并會(huì)經(jīng)過(guò)水等在動(dòng)植物及人體中富集,因此,重金屬污染不只會(huì)危害環(huán)境,還會(huì)對(duì)人體健康造成很大傷害。研究城區(qū)土壤重金屬污染情況迫在眉睫。
(2)MATLAB軟件功能及相關(guān)函數(shù)
MATLAB亦稱矩陣實(shí)驗(yàn)室(即Matrix Labortary),是由美國(guó)Mathworks公司于1992年發(fā)布的一款科學(xué)計(jì)算軟件,主要用于科學(xué)計(jì)算、系統(tǒng)仿真、數(shù)據(jù)可視化,以及交互式程序設(shè)計(jì)的高科技計(jì)算環(huán)境.MATLAB軟件還提供了大量的工具箱,可解決工程計(jì)算、信號(hào)檢測(cè)、信號(hào)處理與通信、圖像處理、金融建模設(shè)計(jì)與分析等應(yīng)用領(lǐng)域內(nèi)特定類(lèi)型的問(wèn)題,代表了當(dāng)今國(guó)際科學(xué)計(jì)算軟件的先進(jìn)水平。MATLAB軟件的基本數(shù)據(jù)單位是矩陣,非常符合科技人員對(duì)數(shù)學(xué)表達(dá)式的書(shū)寫(xiě)格式,因此,利用MATLAB解決問(wèn)題比較簡(jiǎn)捷。本文是在Mathworks公司于2010年上半年發(fā)布的MATLAB R2010a版本里完成的。
在繪制地區(qū)三維立體圖時(shí),需要用到MATLAB的一些繪圖函數(shù)及命令,下面簡(jiǎn)要介紹所需函數(shù)及命令:
①imread(’’)該函數(shù)用于讀取圖片文件中的數(shù)據(jù)。
②xlsread(’’)該函數(shù)用于讀取表格文件中的數(shù)據(jù)。
③double()主要用于將圖像數(shù)據(jù)轉(zhuǎn)化為double型(即雙精度整型)。
④meshgrid()該函數(shù)用于產(chǎn)生平面區(qū)域內(nèi)的網(wǎng)格坐標(biāo)矩陣。
⑤contour()該函數(shù)用于繪制二維等高線圖。
⑥surf()該函數(shù)用于繪制彩色的三維曲面圖。
⑦mesh()該函數(shù)用于繪制彩色的三維網(wǎng)格圖。
⑧griddata()該函數(shù)用于對(duì)無(wú)規(guī)則散亂數(shù)據(jù)進(jìn)行插值。
除此之外,MATLAB軟件還有很多非常有用的函數(shù),如視角控制函數(shù)、顏色處理函數(shù)及透視函數(shù)等,可以對(duì)三維圖進(jìn)行再加工、使圖形更加形象。
數(shù)據(jù)是繪制圖形的首要條件。本文所獲取的數(shù)據(jù)主要分為兩大類(lèi):圖像數(shù)據(jù);數(shù)值數(shù)據(jù)。
對(duì)于研究所需要的數(shù)據(jù)主要通過(guò)兩個(gè)渠道來(lái)獲得:一是在歷年高教社杯全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽題目所給材料中分析讀取;二是通過(guò)查閱資料獲取。
嫦娥三號(hào)探測(cè)器的成功落月,標(biāo)志著中國(guó)已成為世界上第三個(gè)有能力獨(dú)立自主實(shí)施月球軟著陸的國(guó)家。嫦娥三號(hào)著陸地點(diǎn)選在較為平坦的虹灣區(qū)。由于月球地形的不確定性,最終“落月”地點(diǎn)的選擇存在一定難度。在距離月面一定高度時(shí),嫦娥三號(hào)會(huì)進(jìn)行短暫的懸停,掃描月面的地形,然后避開(kāi)障礙物,尋找適合著陸地點(diǎn)。中國(guó)繞月探測(cè)工程首任首席科學(xué)家、中國(guó)科學(xué)院院士歐陽(yáng)自遠(yuǎn)這樣說(shuō)到:“如果下面有個(gè)大坑,需要挪個(gè)地方,它就會(huì)自己平移,等照相機(jī)告訴它地面平了,才會(huì)降落”。下面主要繪圖分析嫦娥三號(hào)距離月面2400m、100m處時(shí),掃描月面地形的數(shù)字高程圖。
為確定嫦娥3號(hào)的軟著陸地點(diǎn),首先運(yùn)用MATLAB軟件中的imread函數(shù),將數(shù)字高程圖中的全部數(shù)據(jù)存儲(chǔ)在三維色彩分量矩陣中,隨后依靠MATLAB強(qiáng)大的矩陣處理功能,以像素為單位,提取數(shù)字高程圖中的全部數(shù)據(jù).然后,根據(jù)這些數(shù)據(jù)繪制二維等高線圖及三維地貌圖。
(1)距離月面2400m處的數(shù)字高程圖分析
在嫦娥3號(hào)下降到距離月面約2400m時(shí),對(duì)正下方的月面23002300m的范圍內(nèi)進(jìn)行掃描拍照,拍照的水平分辨率為1m/像素,提取附件3中的數(shù)據(jù),運(yùn)用MATLAB繪制出距離月面2400m處進(jìn)行拍照時(shí)的等高線圖如圖1,以及三維地貌圖如圖2。
①距離月面2400m處等高線圖程序如下:
>>A=imread('附件3距2400m處的數(shù)字高程圖.tif');%導(dǎo)入原始數(shù)據(jù)
>>B=double(A);
>>contour(B)%繪制等高線圖
圖1 距月面2400m處的著陸點(diǎn)附近地形地貌等高線圖
②距離月面2400m處三維地貌圖程序如下:
>> A=imread('附件 3距 2400m 處的數(shù)字高程圖.tif');
>>B=double(A);
>>meshc(B)
(2)距離月面100m處的數(shù)字高程圖分析
通過(guò)MATLAB對(duì)建模材料附件4中的數(shù)據(jù)進(jìn)行提取:距月面100m處的數(shù)字高程圖,處理得到嫦娥三號(hào)在距離月面100m處對(duì)正下方月面1000m×1000m的范圍內(nèi)的一個(gè)1000×1000的矩陣。運(yùn)用MATLAB軟件繪制出距離月面100m處進(jìn)行拍照時(shí)的等高線圖(程序運(yùn)行見(jiàn)附錄1.3)如圖3,以及三維地貌圖(程序運(yùn)行見(jiàn)附錄1.4)如圖4。
圖2 距月面2400m處的著陸點(diǎn)附近地形地貌圖
圖3 距月面100m處的著陸點(diǎn)附近地形地貌等高線圖
圖4 距月面100m處的著陸點(diǎn)附近地形地貌圖
(3)適合嫦娥三號(hào)著陸地段分析
以上運(yùn)用MATLAB繪制的地貌圖及等高線圖,可以很好地反映月球表面情況,但等高線圖信息量明顯沒(méi)有三維地貌圖的信息量大,而且三維地貌圖比等高線圖更能形象直觀地反映月面概況。
通過(guò)對(duì)嫦娥三號(hào)在距月面2400m時(shí),對(duì)月面2300m2300m的范圍內(nèi)進(jìn)行拍攝所得數(shù)據(jù)繪制等高線圖和三維地貌圖分析,嫦娥三號(hào)可以初步避開(kāi)大額的環(huán)形山,平移到探測(cè)器選定的比較合適安全的著陸點(diǎn)。
在嫦娥三號(hào)距月面100m處時(shí),對(duì)月面1000m1000m的范圍內(nèi)進(jìn)行拍攝所得數(shù)據(jù)繪制等高線圖和三維地貌圖對(duì)比分析,嫦娥三號(hào)能避開(kāi)一些較大的環(huán)形山,確定最終的著陸地點(diǎn)。
由地貌圖可知,較為平坦、適合著陸的地點(diǎn)有很多。只是,由于嫦娥三號(hào)探測(cè)地形時(shí)是從正下方拍攝,由100m處等高線圖可知,應(yīng)該把圖的中央位置作為基點(diǎn)(即嫦娥三號(hào)所在位置),向周?chē)揭茖ふ疫m合著陸的地點(diǎn)。
土壤環(huán)境是地質(zhì)環(huán)境的重要組成部分,并且土壤也是人類(lèi)進(jìn)行工農(nóng)業(yè)生產(chǎn)的重要資源。在城市經(jīng)濟(jì)快速發(fā)展及城市人口不斷增加的同時(shí),城市環(huán)境質(zhì)量,特別是城市土壤地質(zhì)環(huán)境已遭受人類(lèi)活動(dòng)的嚴(yán)重影響,導(dǎo)致城市表層土壤重金屬污染日趨嚴(yán)重。
重金屬污染是指由重金屬或其化合物造成的環(huán)境污染。其主要污染來(lái)源是工業(yè)污染(工業(yè)“三廢”排放)、交通污染(機(jī)動(dòng)車(chē)尾氣排放)以及生活垃圾污染(廢舊電池、照明燈等生活垃圾)和農(nóng)用化學(xué)物(化肥、農(nóng)藥等)的大量使用.所調(diào)查的城區(qū)土壤重金屬污染元素為砷(As)、鎘(Cd)、鉻(Cr)、銅(Cu)、汞(Hg)、鎳(Ni)、鉛(Pb)、鋅(Zn)。
(1)運(yùn)用MATLAB繪制重金屬空間分布圖及各類(lèi)重金屬濃度分布圖
1.繪制空間分布圖主要步驟如下:
①根據(jù)“2011全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽A題以及附件”中的數(shù)據(jù)確定x,y的取值范圍分別為(0,30000)、(0,20000),選擇的取值間隔分別為 300、200,然后用meshgrid函數(shù)把坐標(biāo)網(wǎng)格化分,得到X,Y矩陣,維數(shù)為101×101;
②利用griddata函數(shù),把X,Y構(gòu)成的矩陣及相應(yīng)的各點(diǎn)坐標(biāo)(x,y)、海拔h進(jìn)行插值,得到矩陣H,維數(shù)為 101×101;
③將得到的矩陣H進(jìn)行數(shù)據(jù)預(yù)處理.由于用griddata函數(shù)進(jìn)行插值時(shí)會(huì)出現(xiàn)一些非數(shù)(即Not-a-Number),主要是因Inf/Inf、0/0等操作形成的不確定數(shù),在MATLAB中用NaN表示.所以必須對(duì)NaN數(shù)據(jù)進(jìn)行處理,這里用1個(gè)小程序來(lái)進(jìn)行處理得到矩陣H;
④根據(jù)得到的矩陣X、Y和H,分別用contour函數(shù)、meshc和surf函數(shù)繪制二維等高線線圖(如圖5)、三維立體圖(如圖 6、7)。
程序運(yùn)行如下:
>>data=xlsread('附件 1和附件 2 數(shù)據(jù)合并表格.xls');%導(dǎo)入原始數(shù)據(jù)
>>a=data;
>>x=a(:,1);
>>y=a(:,2);
>>h=a(:,3);
>>quyu=a(:,4);
>>[X,Y]=meshgrid(0:300:30000,0:200:20000);
>>H=griddata(x,y,h,X,Y,'v4');>>[m1,n1]=size(H);
c=zeros(m1,n1);
n=length(x);
fork2=1:m1
fork3=1:n1
nn0=1;
mind=inf;fork1=1:n
if norm([X(k2,k3)-x(k1),Y(k2,k3)-y(k1)])<=mind
nn0=k1;
mind=norm([X(k2,k3)-x(k1),Y(k2,k3)-y(k1)]);end
end
c(k2,k3)=quyu(nn0);
end
end
>>contour(X,Y,H,30)%繪制等高線圖
>>meshc(X,Y,H)%繪制曲面圖
>>surf(X,Y,H,c)%繪制曲面圖
>>hold on;
>>b=bar(rand(10,5),'stacked');colormap;
>>legend(b,'公園綠地區(qū)','生活區(qū)','山區(qū)','工業(yè)區(qū)','交通區(qū)');
>>hold off
城區(qū)不同的區(qū)域環(huán)境受人類(lèi)活動(dòng)影響的程度不同.按照功能劃分,城區(qū)大體可以分為生活區(qū)、工業(yè)區(qū)、山區(qū)、主干道路區(qū)(即交通區(qū))以及公園綠地區(qū)等,分別記為1類(lèi)區(qū)、2類(lèi)區(qū)、3類(lèi)區(qū)、4類(lèi)區(qū)、5類(lèi)區(qū)。圖7中藍(lán)色表示生活區(qū)、橙色表示工業(yè)區(qū)、綠色表示山區(qū)、棕色表示交通區(qū)、青色表示公園綠地區(qū)。
繪圖步驟與空間分布圖類(lèi)似,各重金屬在不同城區(qū)濃度分布圖如下:
據(jù)砷的濃度分布圖可看出,含砷量高的基本都集中在一些小區(qū)域內(nèi),其最高含量基本都出現(xiàn)在工業(yè)區(qū),少數(shù)出現(xiàn)在山區(qū)、公園綠地區(qū)、交通區(qū)和生活區(qū)。
圖5 城區(qū)地勢(shì)等高線圖
圖6 城區(qū)空間分布圖
圖7 城區(qū)各功能區(qū)圖
據(jù)汞的濃度分布圖可看出,含汞量較高的基本都集中在交通區(qū)和工業(yè)區(qū),少數(shù)出現(xiàn)在生活區(qū)和公園綠地區(qū),極少數(shù)出現(xiàn)在山區(qū)。
圖8 各城區(qū)砷(As)濃度分布圖
圖9 各城區(qū)汞(Hg)濃度分布圖
運(yùn)用MATLAB繪制地貌圖,可以使圖形更加形象直觀,而且可以大大減少工作量,提高編程效率.本文運(yùn)用MATLAB軟件繪圖的明顯優(yōu)勢(shì)有以下幾點(diǎn):
(1)導(dǎo)入數(shù)據(jù)快捷簡(jiǎn)便.不只可以快捷導(dǎo)入數(shù)值數(shù)據(jù),還可從不攜帶顯性數(shù)據(jù)的圖像中提取導(dǎo)入數(shù)據(jù)。
(2)能比較輕松方便地繪制二維等高線圖以及更直觀形象三維地貌圖.通過(guò)調(diào)用MATLAB軟件中的contour命令可以按已有圖像、數(shù)值數(shù)據(jù)進(jìn)行等高線的繪制;surf函數(shù)繪制三維地貌圖,而且也可以根據(jù)海拔高度的不同用不同色彩分級(jí)表示地貌圖,這樣繪制的圖形就更直觀形象了。
(3)可以對(duì)視圖進(jìn)行多角度全方位的觀察.通過(guò)調(diào)用視角函數(shù)(view)或者在繪出的圖形中選用視角按鈕,對(duì)三維地貌圖進(jìn)行多角度觀察,這一點(diǎn)對(duì)于報(bào)告演示等很有用處。
在繪制地貌圖時(shí),運(yùn)用MATLAB軟件處理數(shù)據(jù)、繪制二維地圖或三維立體圖是可行的,而且易于操作,這對(duì)于地質(zhì)環(huán)境調(diào)查分析與保護(hù)也是很有研究意義的。在遙感技術(shù)等信息技術(shù)飛速發(fā)展的今天,圖像數(shù)據(jù)的獲取已越來(lái)越簡(jiǎn)便,MATLAB軟件不僅可以處理數(shù)值數(shù)據(jù),還可輕松導(dǎo)入圖像數(shù)據(jù)進(jìn)行繪圖等操作,這也符合當(dāng)今社會(huì)發(fā)展的腳步。
[1]呂拉昌.中國(guó)地理[M].北京:科學(xué)出版社,2012.
[2]葛哲學(xué).精通MATLAB[M].北京:電子工業(yè)出版社,2008.2.
[3]趙海濱.MATLAB應(yīng)用大全[M].北京:清華大學(xué)出版社,2012.5.
[4]陳圣波,孟治國(guó),崔騰飛,等.虹灣地區(qū)月球衛(wèi)星遙感地質(zhì)解析制圖[J].中國(guó)科學(xué):物理學(xué)、力學(xué)、天文學(xué),2010,40:1370-1379.
[5]2014全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽A題以及附件.http://wenku.baidu.com/link?url=KJCtIRtNtq0_m2hevXDpUa27fCKC1gXHeJ5rx SPej02JIBRb0AZUDapWy8NqIgJkMthwXhdIiA1ry9C_sI8kO3U_-pbPCmAh5rvcqRT_1GG
[6]2011全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽A題以及附件.http://wenku.baidu.com/view/b30a12156edb6f1aff001f3a.html
[7]重金屬污染網(wǎng)站.http://baike.haosou.com/doc/2796948-2952112.html
唐家德(1970-),男,云南楚雄人,副教授,理學(xué)碩士,從事領(lǐng)域?yàn)閼?yīng)用數(shù)學(xué)的教學(xué)和研究工作
Using MATLAB to Draw Three-DimensionalMap
TANG Jia-de
(SchoolofMathematics and Statistics,Chuxiong NormalUniversity,Chuxiong 675000)
To draw the moon's surface topography map of the rainbow Bay area and a city ofvarious heavy metals in soil pollutant concentration spatial distribution of three-dimensionalmap as an example,illustrates the steps to use MATLAB software to draw three-dimensional relief maps and the corresponding instructions,using this method you can quickly draw three-dimensionalmap.
MATLAB Software;Draw Topography Map;Three-DimensionalMap;Heavy MetalPollution;SpatialDistribution ofConcentration
云南省高等學(xué)校對(duì)口支援合作幫扶建設(shè)項(xiàng)目(深化數(shù)學(xué)建模改革,促進(jìn)學(xué)生應(yīng)用能力培養(yǎng))
1007-1423(2017)30-0031-06
10.3969/j.issn.1007-1423.2017.30.007
2017-09-29
2017-10-30