Визуализация высоты геоида для геопотенциальной модели Земли 1996

Этот пример показывает, как вычислить высоту Геоида Земли с помощью EGM96 геопотенциальной модели программного обеспечения Aerospace Toolbox™. Также показано, как визуализировать результаты с контурными картами, нанесенными на карты Земли. Для генерации визуализаций требуются Toolbox™ 3D Mapping Animation™ и Simulink ®.

Генерация значений для геопотенциальной модели Земли 1996

Вычислите значения для геопотенциала Земли с помощью geoidheight функция для реализации EGM96 геопотенциальной модели.

Следующий код может использоваться, чтобы сгенерировать 260281 точек данных для вычисления значений высоты Геоида Земли с помощью geoidheight. Чтобы уменьшить вычислительные накладные расходы, этот пример включает 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 = lon(lonIdx)*ones(1,numLatitude);      % degrees
%     geoidResults(1:end,lonIdx) = geoidheight(geod_lat,lon,'None');
%
% end

Загрузка файла геоидных данных и береговых данных

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

График 2-D вид высоты геоида

% Create 2-D plot using |meshm|
h2D = figure;
set(h2D,'Position',[20 75 700 600],'Toolbar','figure');

% Reference matrix for mapping geoid heights to lat/lon on globe.
RRR = makerefmat('RasterSize',size(geoidResults), ...
    'Latlim', [-90 90], 'Lonlim', [-180 180] );

ast2DGeoidPlot(RRR,geoidResults,coast,gridDegInc)

% Viewing Geoid height using VR canvas
www2D = vrworld('astGeoidHeights.wrl');
open(www2D)

% Actual geoid heights for reference
geoidGrid = vrnode(www2D,'EGM96_Grid');
actualHeights = getfield(geoidGrid,'height'); %#ok<GFLD>

% Initialize heights to 0 for slider control
geoidGrid.height = 0*actualHeights;

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

% Create slider
slid=astGeoidSlider(geoidcanvas2D);

График 3-D вид высоты геоида

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

% Set up axes
hmapaxis = axesm ('globe','Grid', 'on');
set(hmapaxis,'Position',[.1 .5 .8 .4])

view(85,0)
axis off

% Plot data on 3-D globe
meshm(geoidResults,RRR)

% Plot land mass outline
plotm(coast.coastlat,coast.coastlon,'Color','k')
colormap('jet');

% Plot Title
title({'EGM96 Geoid Heights';['Grid Increment: ' ,num2str(gridDegInc), ' Degrees; Height Units: Meters']})

colorbar;

% 3-D Globe: Geoid Height Using VR Canvas
www3D = vrworld('astGeoidSphere.wrl');
open(www3D)

% Position canvas
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);