这个例子展示了几种代表地球地形的方法。本例中使用的数据来自美国国家地球物理数据中心,数据公布在美国商务局。
关于地形数据
数据文件包含的数据,topo.mat,topographic。TOPO是海拔数据,topomap1 是 colormap的海拔。
>> load topo topo topomap1 % 加载数据 >> whos('topo','topomap1')
Name Size Bytes Class Attributes topo 180x360 518400 double topomap1 64x3 1536 double
创建等高线图
地形数据可视化的一种方法是创建等高线图。为了显示地球大陆的轮廓,绘制零海拔点。前三个输入参数到等高线,在等高线图上指定x、y和z值。第四个参数指定要绘制的等高线级别。
>> x = 0:359; % 经度 >> y = -89:90; % 纬度 >> figure >> contour(x,y,topo,[0 0]) >> axis equal % 将轴单位设置为相同的大小 >> box on % 显示包围盒 >> ax = gca; % 获取当前坐标轴 >> ax.XLim = [0 360]; % 建立x轴 >> ax.YLim = [-90 90]; % 建立y轴 >> ax.XTick = [0 60 120 180 240 300 360]; >> ax.YTick = [-90 -60 -30 0 30 60 90];
将数据视为图像
你可以创建一个图像的地形高程数据和使用自定义调色板。地形数据处理成自定义颜色表索引。设置cdatamapping的图像化的线性表的数据值的映射范围。在这个渲染,绿色显示的色调的高度数据,和蓝色的色调代表海平面以下深度。
>> image([0 360],[-90 90], flip(topo), 'CDataMapping', 'scaled') >> colormap(topomap1) >> axis equal >> ax = gca; >> ax.XLim = [0 360]; >> ax.YLim = [-90 90]; >> ax.XTick = [0 60 120 180 240 300 360]; >> ax.YTick = [-90 -60 -30 0 30 60 90];
使用纹理映射
纹理映射将二维图像映射到三维表面上。地图的地形,球面,套的表面颜色,通过CDATA属性指定的地形数据和设置facecolor属性的纹理贴图”。
>> clf >> [x,y,z] = sphere(50); % 创建一个球体 >> s = surface(x,y,z); % 球面 >> s.CData = topo; % 将颜色数据设置为地形数据 >> s.FaceColor = 'texturemap'; % 使用纹理映射 >> s.EdgeColor = 'none'; % 去除边缘 >> s.FaceLighting = 'gouraud'; % 曲面的首选照明 >> s.SpecularStrength = 0.4; % 改变反射光的强度 >> light('Position',[-1 0 1]) % 添加一个光 >> axis square off % 将轴设置为正方形并移除轴。 >> view([-30,30]) % 设置视角
Warning: Error creating or updating Surface Error in value of property CData Array is wrong shape or size
《MATLAB教学(七)绘制立体地球》有1个想法
Pingback 引用通告: MATLAB基础教学汇总 | Hannes的站点