应用MATLAB绘制三维地貌图

2017-12-07 07:44唐家德
现代计算机 2017年30期
关键词:月面分布图嫦娥

唐家德

(楚雄师范学院数学与统计学院,楚雄675000)

应用MATLAB绘制三维地貌图

唐家德

(楚雄师范学院数学与统计学院,楚雄675000)

以绘制月球表面虹湾区地形地貌图和某城市城区土壤中各重金属污染物浓度空间分布立体图为例,说明使用MATLAB软件绘制三维地貌图的步骤及相应的指令,使用这种方法可以快速的绘制三维立体图。

MATLAB软件;绘制地貌图;三维立体图;重金属污染;浓度空间分布图

0 引言

(1)绘制三维立体图的意义

我国地域辽阔,是个地质资源比较丰富的国家。但也因人口众多,人民生活持续改善、经济建设飞速发展的同时,引发了各种生态环境问题。在自然因素与人类活动的双重影响下,经济发展与资源、环境之间的矛盾日益突出。为了国民经济的可持续发展,面向新世纪的挑战,如何协调好人与环境的关系,保护和改善生态环境,已成为一项重要任务。而在自然地理环境中,地貌是最基本要素之一。但在信息化和数字化的今天,随着地理信息应用领域的不断拓展、遥感技术的飞速发展,要研究地区地貌特征,传统的二维地图已明显不能满足人们的需要,人们逐渐开始关注具有丰富地形地貌信息的三维立体图。

地区的三维立体图能很好地反映该地区的地势走向。但在三维地貌处理领域中存在地形数据获取困难,可视化处理过程复杂且真实感效果不强等问题。因此在数据缺乏的情况下,有时只能由山区数字高程图等模拟三维地形图,而数字高程图不携带任何显性数据。本文主要运用MATLAB软件从不携带显性数据的图中提取数据并通过插值模拟三维地貌图(本文以月球表面虹湾区高程图为例)。

科技犹如一把双刃剑。20世纪以来,由于科技的迅猛发展使经济水平和人民的生活水平得以提高,但也让人类赖以生存的自然环境遭受重创.工业、城市经济发展的同时,环境污染也在加剧,而且由于农用化学物质的数量及种类不断增加,致使城区土壤重金属污染日益严重。然而,在土壤中重金属污染物的滞留时间长,移动性差也不能被微生物降解,并会经过水等在动植物及人体中富集,因此,重金属污染不只会危害环境,还会对人体健康造成很大伤害。研究城区土壤重金属污染情况迫在眉睫。

(2)MATLAB软件功能及相关函数

MATLAB亦称矩阵实验室(即Matrix Labortary),是由美国Mathworks公司于1992年发布的一款科学计算软件,主要用于科学计算、系统仿真、数据可视化,以及交互式程序设计的高科技计算环境.MATLAB软件还提供了大量的工具箱,可解决工程计算、信号检测、信号处理与通信、图像处理、金融建模设计与分析等应用领域内特定类型的问题,代表了当今国际科学计算软件的先进水平。MATLAB软件的基本数据单位是矩阵,非常符合科技人员对数学表达式的书写格式,因此,利用MATLAB解决问题比较简捷。本文是在Mathworks公司于2010年上半年发布的MATLAB R2010a版本里完成的。

在绘制地区三维立体图时,需要用到MATLAB的一些绘图函数及命令,下面简要介绍所需函数及命令:

①imread(’’)该函数用于读取图片文件中的数据。

②xlsread(’’)该函数用于读取表格文件中的数据。

③double()主要用于将图像数据转化为double型(即双精度整型)。

④meshgrid()该函数用于产生平面区域内的网格坐标矩阵。

⑤contour()该函数用于绘制二维等高线图。

⑥surf()该函数用于绘制彩色的三维曲面图。

⑦mesh()该函数用于绘制彩色的三维网格图。

⑧griddata()该函数用于对无规则散乱数据进行插值。

除此之外,MATLAB软件还有很多非常有用的函数,如视角控制函数、颜色处理函数及透视函数等,可以对三维图进行再加工、使图形更加形象。

1 应用实例

1.1 数据收集、整理与分析

数据是绘制图形的首要条件。本文所获取的数据主要分为两大类:图像数据;数值数据。

对于研究所需要的数据主要通过两个渠道来获得:一是在历年高教社杯全国大学生数学建模竞赛题目所给材料中分析读取;二是通过查阅资料获取。

1.2 运用M ATLAB绘制月球虹湾区地貌图

嫦娥三号探测器的成功落月,标志着中国已成为世界上第三个有能力独立自主实施月球软着陆的国家。嫦娥三号着陆地点选在较为平坦的虹湾区。由于月球地形的不确定性,最终“落月”地点的选择存在一定难度。在距离月面一定高度时,嫦娥三号会进行短暂的悬停,扫描月面的地形,然后避开障碍物,寻找适合着陆地点。中国绕月探测工程首任首席科学家、中国科学院院士欧阳自远这样说到:“如果下面有个大坑,需要挪个地方,它就会自己平移,等照相机告诉它地面平了,才会降落”。下面主要绘图分析嫦娥三号距离月面2400m、100m处时,扫描月面地形的数字高程图。

为确定嫦娥3号的软着陆地点,首先运用MATLAB软件中的imread函数,将数字高程图中的全部数据存储在三维色彩分量矩阵中,随后依靠MATLAB强大的矩阵处理功能,以像素为单位,提取数字高程图中的全部数据.然后,根据这些数据绘制二维等高线图及三维地貌图。

(1)距离月面2400m处的数字高程图分析

在嫦娥3号下降到距离月面约2400m时,对正下方的月面23002300m的范围内进行扫描拍照,拍照的水平分辨率为1m/像素,提取附件3中的数据,运用MATLAB绘制出距离月面2400m处进行拍照时的等高线图如图1,以及三维地貌图如图2。

①距离月面2400m处等高线图程序如下:

>>A=imread('附件3距2400m处的数字高程图.tif');%导入原始数据

>>B=double(A);

>>contour(B)%绘制等高线图

图1 距月面2400m处的着陆点附近地形地貌等高线图

②距离月面2400m处三维地貌图程序如下:

>> A=imread('附件 3距 2400m 处的数字高程图.tif');

>>B=double(A);

>>meshc(B)

(2)距离月面100m处的数字高程图分析

通过MATLAB对建模材料附件4中的数据进行提取:距月面100m处的数字高程图,处理得到嫦娥三号在距离月面100m处对正下方月面1000m×1000m的范围内的一个1000×1000的矩阵。运用MATLAB软件绘制出距离月面100m处进行拍照时的等高线图(程序运行见附录1.3)如图3,以及三维地貌图(程序运行见附录1.4)如图4。

图2 距月面2400m处的着陆点附近地形地貌图

图3 距月面100m处的着陆点附近地形地貌等高线图

图4 距月面100m处的着陆点附近地形地貌图

(3)适合嫦娥三号着陆地段分析

以上运用MATLAB绘制的地貌图及等高线图,可以很好地反映月球表面情况,但等高线图信息量明显没有三维地貌图的信息量大,而且三维地貌图比等高线图更能形象直观地反映月面概况。

通过对嫦娥三号在距月面2400m时,对月面2300m2300m的范围内进行拍摄所得数据绘制等高线图和三维地貌图分析,嫦娥三号可以初步避开大额的环形山,平移到探测器选定的比较合适安全的着陆点。

在嫦娥三号距月面100m处时,对月面1000m1000m的范围内进行拍摄所得数据绘制等高线图和三维地貌图对比分析,嫦娥三号能避开一些较大的环形山,确定最终的着陆地点。

由地貌图可知,较为平坦、适合着陆的地点有很多。只是,由于嫦娥三号探测地形时是从正下方拍摄,由100m处等高线图可知,应该把图的中央位置作为基点(即嫦娥三号所在位置),向周围平移寻找适合着陆的地点。

1.3 某城市表层土壤重金属污染研究

土壤环境是地质环境的重要组成部分,并且土壤也是人类进行工农业生产的重要资源。在城市经济快速发展及城市人口不断增加的同时,城市环境质量,特别是城市土壤地质环境已遭受人类活动的严重影响,导致城市表层土壤重金属污染日趋严重。

重金属污染是指由重金属或其化合物造成的环境污染。其主要污染来源是工业污染(工业“三废”排放)、交通污染(机动车尾气排放)以及生活垃圾污染(废旧电池、照明灯等生活垃圾)和农用化学物(化肥、农药等)的大量使用.所调查的城区土壤重金属污染元素为砷(As)、镉(Cd)、铬(Cr)、铜(Cu)、汞(Hg)、镍(Ni)、铅(Pb)、锌(Zn)。

(1)运用MATLAB绘制重金属空间分布图及各类重金属浓度分布图

1.绘制空间分布图主要步骤如下:

①根据“2011全国大学生数学建模竞赛A题以及附件”中的数据确定x,y的取值范围分别为(0,30000)、(0,20000),选择的取值间隔分别为 300、200,然后用meshgrid函数把坐标网格化分,得到X,Y矩阵,维数为101×101;

②利用griddata函数,把X,Y构成的矩阵及相应的各点坐标(x,y)、海拔h进行插值,得到矩阵H,维数为 101×101;

③将得到的矩阵H进行数据预处理.由于用griddata函数进行插值时会出现一些非数(即Not-a-Number),主要是因Inf/Inf、0/0等操作形成的不确定数,在MATLAB中用NaN表示.所以必须对NaN数据进行处理,这里用1个小程序来进行处理得到矩阵H;

④根据得到的矩阵X、Y和H,分别用contour函数、meshc和surf函数绘制二维等高线线图(如图5)、三维立体图(如图 6、7)。

程序运行如下:

>>data=xlsread('附件 1和附件 2 数据合并表格.xls');%导入原始数据

>>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,'公园绿地区','生活区','山区','工业区','交通区');

>>hold off

城区不同的区域环境受人类活动影响的程度不同.按照功能划分,城区大体可以分为生活区、工业区、山区、主干道路区(即交通区)以及公园绿地区等,分别记为1类区、2类区、3类区、4类区、5类区。图7中蓝色表示生活区、橙色表示工业区、绿色表示山区、棕色表示交通区、青色表示公园绿地区。

2 重金属在各城区浓度分布图

绘图步骤与空间分布图类似,各重金属在不同城区浓度分布图如下:

据砷的浓度分布图可看出,含砷量高的基本都集中在一些小区域内,其最高含量基本都出现在工业区,少数出现在山区、公园绿地区、交通区和生活区。

图5 城区地势等高线图

图6 城区空间分布图

图7 城区各功能区图

据汞的浓度分布图可看出,含汞量较高的基本都集中在交通区和工业区,少数出现在生活区和公园绿地区,极少数出现在山区。

图8 各城区砷(As)浓度分布图

图9 各城区汞(Hg)浓度分布图

运用MATLAB绘制地貌图,可以使图形更加形象直观,而且可以大大减少工作量,提高编程效率.本文运用MATLAB软件绘图的明显优势有以下几点:

(1)导入数据快捷简便.不只可以快捷导入数值数据,还可从不携带显性数据的图像中提取导入数据。

(2)能比较轻松方便地绘制二维等高线图以及更直观形象三维地貌图.通过调用MATLAB软件中的contour命令可以按已有图像、数值数据进行等高线的绘制;surf函数绘制三维地貌图,而且也可以根据海拔高度的不同用不同色彩分级表示地貌图,这样绘制的图形就更直观形象了。

(3)可以对视图进行多角度全方位的观察.通过调用视角函数(view)或者在绘出的图形中选用视角按钮,对三维地貌图进行多角度观察,这一点对于报告演示等很有用处。

3 结语

在绘制地貌图时,运用MATLAB软件处理数据、绘制二维地图或三维立体图是可行的,而且易于操作,这对于地质环境调查分析与保护也是很有研究意义的。在遥感技术等信息技术飞速发展的今天,图像数据的获取已越来越简便,MATLAB软件不仅可以处理数值数据,还可轻松导入图像数据进行绘图等操作,这也符合当今社会发展的脚步。

[1]吕拉昌.中国地理[M].北京:科学出版社,2012.

[2]葛哲学.精通MATLAB[M].北京:电子工业出版社,2008.2.

[3]赵海滨.MATLAB应用大全[M].北京:清华大学出版社,2012.5.

[4]陈圣波,孟治国,崔腾飞,等.虹湾地区月球卫星遥感地质解析制图[J].中国科学:物理学、力学、天文学,2010,40:1370-1379.

[5]2014全国大学生数学建模竞赛A题以及附件.http://wenku.baidu.com/link?url=KJCtIRtNtq0_m2hevXDpUa27fCKC1gXHeJ5rx SPej02JIBRb0AZUDapWy8NqIgJkMthwXhdIiA1ry9C_sI8kO3U_-pbPCmAh5rvcqRT_1GG

[6]2011全国大学生数学建模竞赛A题以及附件.http://wenku.baidu.com/view/b30a12156edb6f1aff001f3a.html

[7]重金属污染网站.http://baike.haosou.com/doc/2796948-2952112.html

唐家德(1970-),男,云南楚雄人,副教授,理学硕士,从事领域为应用数学的教学和研究工作

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

云南省高等学校对口支援合作帮扶建设项目(深化数学建模改革,促进学生应用能力培养)

1007-1423(2017)30-0031-06

10.3969/j.issn.1007-1423.2017.30.007

2017-09-29

2017-10-30

猜你喜欢
月面分布图嫦娥
给嫦娥一个舒适的家
贵州十大地质公园分布图
1957·月球属于美利坚?
中国癌症分布图
浙江省第一批省级特色小镇分布图
人生真相
嫦娥三号落月面 航天邮品载辉煌
嫦娥三号落月面航天邮品载辉煌
嫦娥三号落月面 航天邮品载辉煌
赞“嫦娥”