このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
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);

ジオイド高の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]);

vrdrawnow;
クリーン アップ
close(h2D,h3D) close(www2D);close(www3D); delete(www2D);delete(www3D);
参考
クラス
関数
geoidheight|vrnode(Simulink 3D Animation)