В этом примере показано, как вычислить высоту Геоида Земли с помощью Геопотенциальной Модели EGM96 программного обеспечения Aerospace Toolbox™. Это также показывает, как визуализировать результаты с контурными картами, наложенными на картах Земли. Mapping Toolbox™ и Simulink® 3D Animation™ требуются, чтобы генерировать визуализацию.
Вычислите значения для Геопотенциального использования Земли geoidheight
функционируйте, чтобы реализовать Геопотенциальную Модель EGM96.
Следующий код может использоваться, чтобы сгенерировать 260 281 точку данных для вычисления значений высоты Геоида Земли с помощью geoidheight
. Чтобы уменьшать вычислительные издержки, этот пример включает MAT-файл, который содержит эти данные.
% % Set amount of increment between degrees % gridDegInc = 0.5; %degrees % % % Geocentric Longitude value in degrees to use for latitude sweep. % geoc_lon =-180:gridDegInc:180; %degrees % % % Geodetic Latitude values to sweep. % geod_lat = -90:gridDegInc:90; %degrees % % % Convert to geocentric to obtain geoid height. % Re = 6378137; % f = 1/298.256415099; % geoc_lat = geod2geoc(geod_lat, 0, f, Re); % % % Loop through longitude values for each array of latitudes -90:90. % for lonIdx = size(geoc_lon,2):-1:1 % % % Longitude must be the same dimension as the latitude array % lon = geoc_lon(lonIdx)*ones(1,numLatitude); % degrees % geoidResults(1:end,lonIdx) = geoidheight(geoc_lat,lon,'None'); % % end
geoidFileName = 'GeoidResults_05deg_180.mat'; load(geoidFileName); coast = load('coast');
% 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);
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.lat,coast.long,'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);