Main Content

地形データの表示

この例では、地球の地形図を表すいくつかの方法を示します。この例で使われているデータは、米国商務省 NOAA、国立地球物理データ センターの Data Announcement 88-MGG-02 で入手可能です。

地形データについて

データ ファイル topo.mat には地形データが格納されています。topo は標高データで、topomap1 は標高のカラーマップです。

load topo topo topomap1    % load data 
whos('topo','topomap1')
  Name            Size              Bytes  Class     Attributes

  topo          180x360            518400  double              
  topomap1       64x3                1536  double              

等高線図の作成

地形データを可視化する方法の 1 つは、等高線図を作成することです。地球の大陸の輪郭を表示するには、標高が 0 の点をプロットします。contour の最初の 3 つの入力引数は、等高線図の X、Y および Z の各値を指定します。4 番目の引数は、プロットする等高線のレベルを指定します。

x = 0:359;                                % longitude
y = -89:90;                               % latitude

figure
contour(x,y,topo,[0 0])

axis equal                                % set axis units to be the same size
box on                                    % display bounding box

ax = gca;                                 % get current axis               
ax.XLim = [0 360];                        % set x limits
ax.YLim = [-90 90];                       % set y limits
ax.XTick = [0 60 120 180 240 300 360];    % define x ticks
ax.YTick = [-90 -60 -30 0 30 60 90];      % define y ticks

イメージとしてのデータの表示

高度データおよびカスタムのカラーマップを使用して、地形のイメージを作成できます。地形データはカスタム カラーマップのインデックスとして扱われます。カラーマップの範囲に対しデータ値が線形的にスケーリングされるように、イメージの CDataMapping'scaled' に設定します。このカラーマップでは、緑色の陰影は標高データを示し、青の陰影は海抜 0 以下の深さを表します。

image([0 360],[-90 90], flip(topo), 'CDataMapping', 'scaled')
colormap(topomap1)

axis equal                                % set axis units to be the same size

ax = gca;                                 % get current axis               
ax.XLim = [0 360];                        % set x limits
ax.YLim = [-90 90];                       % set y limits
ax.XTick = [0 60 120 180 240 300 360];    % define x ticks
ax.YTick = [-90 -60 -30 0 30 60 90];      % define y ticks

テクスチャ マッピングの使用

テクスチャ マッピングでは、2 次元のイメージが 3 次元の表面にマップされます。地形図を球面にマップするには、CData プロパティで指定された表面の色を地形データに設定し、FaceColor プロパティを 'texturemap' に設定します。

clf
[x,y,z] = sphere(50);          % create a sphere 
s = surface(x,y,z);            % plot spherical surface

s.FaceColor = 'texturemap';    % use texture mapping
s.CData = topo;                % set color data to topographic data
s.EdgeColor = 'none';          % remove edges
s.FaceLighting = 'gouraud';    % preferred lighting for curved surfaces
s.SpecularStrength = 0.4;      % change the strength of the reflected light

light('Position',[-1 0 1])     % add a light

axis square off                % set axis to square and remove axis
view([-30,30])                 % set the viewing angle