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

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

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

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

Следующий код может использоваться, чтобы сгенерировать 260 281 точку данных для вычисления значений высоты Геоида Земли с помощью 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');

Постройте 2D представление высоты геоида

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