菜单

MATLAB教学(七)绘制立体地球

2017-12-29 - IT小知识
MATLAB教学(七)绘制立体地球

这个例子展示了几种代表地球地形的方法。本例中使用的数据来自美国国家地球物理数据中心,数据公布在美国商务局。

关于地形数据

数据文件包含的数据,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的站点

  • 发表评论

    邮箱地址不会被公开。 必填项已用*标注