メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

Earth Geopotential Model 1996 のジオイド高の可視化

この例では、Aerospace Toolbox ソフトウェアの EGM96ジオポテンシャルモデルを使用して地球のジオイド高を計算する方法を示します。また、地球の地図に等高線地図を重ねて結果を可視化する方法も示します。視覚化を生成するには、Mapping Toolbox ™ および Simulink ® 3D Animation™ が必要です。

地球ジオポテンシャルモデルの値の生成 1996

EGM96ジオポテンシャルモデルを実装するには、geoidheight 関数を使用して地球ジオポテンシャルの値を計算します。

次のコードを使用して、geoidheight を使用して地球のジオイド高の値を計算するための 260281 個のデータ ポイントを生成します。計算オーバーヘッドを削減するために、この例にはこのデータを含む MAT ファイルが含まれています。

% Set amount of increment between degrees
gridDegInc = 0.5;                   %degrees

% Longitude value in degrees to use for latitude sweep.
lon = -180:gridDegInc:180;          %degrees

% Geodetic Latitude values to sweep.
geod_lat = -90:gridDegInc:90;       %degrees

% Loop through longitude values for each array of latitudes -90:90.
for lonIdx = size(lon,2):-1:1
    
    % Longitude must be the same dimension as the latitude array
    lon_temp = lon(lonIdx)*ones(1,numel(geod_lat));      % degrees
    geoidResults(:,lonIdx) = geoidheight(geod_lat,lon_temp,'None');
  
end

ジオイドデータファイルと沿岸データの読み込み

geoidFileName = 'GeoidResults_05deg_180.mat';
geoidData = load(geoidFileName);
coast = load('coastlines.mat');

ジオイド高の2次元ビューをプロットする

meshm. を使用して 2D プロットを作成する

h2D = figure;
set(h2D,'Position',[20 75 700 600],'Toolbar','figure');

ジオイド高を地球上の緯度/経度にマッピングするための参照マトリックス。

RRR = georefcells([-90, 90], [-180, 180], size(geoidData.geoidResults));
ast2DGeoidPlot(RRR,geoidData.geoidResults,coast,geoidData.gridDegInc)

VR キャンバスを使用してジオイド高を表示します。

www2D = vrworld('astGeoidHeights.wrl');
open(www2D)

参考のための実際のジオイド高。

geoidGrid = vrnode(www2D,'EGM96_Grid');
actualHeights = getfield(geoidGrid,'height'); %#ok<GFLD>

スライダーコントロールの高さを 0 に初期化します。

geoidGrid.height = 0*actualHeights;

プロット用のキャンバスのサイズを決め、パラメーターを設定します。

geoidcanvas2D = vr.canvas(www2D,'Parent',h2D,...
    'Antialiasing', 'on','NavSpeed','veryslow',...
    'NavMode','Examine','Units', 'normalized',...
    'Viewpoint','Perspective','Position',[.15 .04 .7 .42]);

スライダーを作成します。

slid=astGeoidSlider(geoidcanvas2D);

Figure contains objects of type hgjavacomponent, uicontrol.

ジオイド高の3Dビューをプロットする

h3D = figure;
set(h3D,'Position',[20 75 700 600]);

軸を設定します。

hmapaxis = axesm ('globe','Grid', 'on');
set(hmapaxis,'Position',[.1 .5 .8 .4])
view(85,0)
axis off

3D 地球儀上にデータをプロットします。

meshm(geoidData.geoidResults,RRR)

陸地の輪郭をプロットします。

plotm(coast.coastlat,coast.coastlon,'Color','k')
colormap('jet');

プロットタイトル。

title({'EGM96 Geoid Heights';['Grid Increment: ' ,num2str(geoidData.gridDegInc), ' Degrees; Height Units: Meters']})
colorbar;

3D地球儀:VR キャンバスを使用したジオイド高。

www3D = vrworld('astGeoidSphere.wrl');
open(www3D)

キャンバスを配置します。

geoidcanvas3D = vr.canvas(www3D,'Parent',h3D,...
    'Antialiasing', 'on','NavSpeed','veryslow',...
    'NavMode','Examine','Units', 'normalized',...
    'Position',[.15 .04 .7 .4]);

Figure contains an object of type hgjavacomponent.

vrdrawnow;

クリーン アップ

close(h2D,h3D)
close(www2D);close(www3D);
delete(www2D);delete(www3D);

参考

クラス

関数