Графический вывод 3-D купола как Mesh по земному шару

В этом примере показано, как начать с 3-D функции в системе локальных координат "восточного севера" (ENU), затем преобразуйте и объедините его с отображением земного шара в Сосредоточенном Землей, Зафиксированном Землей (ECEF) координаты.

Шаг 1: установите параметры определения

Используйте Геодезическую Ссылочную Систему 1980 (GRS80) и работайте в модулях километров. Поместите источник локальной системы под Вашингтоном, округ Колумбия, США.

grs80 = referenceEllipsoid('grs80','km');
domeRadius =  3000;  % km
domeLat =  39;       % degrees
domeLon = -77;       % degrees
domeAlt = 0;         % km

Шаг 2: создайте купол в локальных координатах "восточный север"

Локальная система ENU задана относительно геодезической контрольной точки, заданной в этом случае (domeLat, domeLon, и domeAlt). Это - 3-D Декартова система, в которой положительная ось X направлена на восток, положительная ось Y направлена на север, и ось z нормальна к ссылочному эллипсоиду и направленная вверх.

В этом примере 3-D функцией является полушарие в z> = 0 полупространств с радиусом 3 000 километров. Это полушарие могло заключить, гипотетически, объем пробела в области значений идеализированной радиолокационной системы, имеющей универсальное покрытие от горизонта до зенита, во всех азимутах. Объемы пробела, такие как это, при представлении зон эффективного покрытия наблюдения, иногда известны неофициально как "радарные купола".

Быстрый способ создать координатные массивы, обрисовывающие в общих чертах закрытый полусферический купол, состоит в том, чтобы запуститься со сферы единичного радиуса, увеличить радиус и свернуть более низкое полушарие. Легче визуализировать, если вы делаете его полупрозрачным - установка FaceAlpha к 0,5 в этом случае.

[x,y,z] = sphere(20);
xEast  = domeRadius * x;
yNorth = domeRadius * y;
zUp    = domeRadius * z;
zUp(zUp < 0) = 0;
figure('Renderer','opengl')
surf(xEast, yNorth, zUp,'FaceColor','yellow','FaceAlpha',0.5)
axis equal

Шаг 3: преобразуйте купол в систему Сосредоточенного землей зафиксированного землей (ECEF)

Используйте enu2ecef функционируйте, чтобы преобразовать купол от локального ENU до системы ECEF, на основе эллипсоида ссылки GRS 80. Это применяет 3-D перевод и вращение. Заметьте, как полушарие становится наклоненным и как его центр перемещает тысячи километров от источника.

[xECEF, yECEF, zECEF] ...
    = enu2ecef(xEast, yNorth, zUp, domeLat, domeLon, domeAlt, grs80);
surf(xECEF, yECEF, zECEF,'FaceColor','yellow','FaceAlpha',0.5)
axis equal

Шаг 4: создайте отображение земного шара

Создайте основное отображение земного шара с помощью axesm и globe.

figure('Renderer','opengl')
ax = axesm('globe','Geoid',grs80,'Grid','on', ...
    'GLineWidth',1,'GLineStyle','-',...
    'Gcolor',[0.9 0.9 0.1],'Galtitude',100);
ax.Position = [0 0 1 1];
axis equal off
view(3)

Шаг 5: добавьте различные глобальные данные о карте

Добавьте глобальную топографию с низкой разрешающей способностью, береговые линии и реки к земному шару.

load topo
geoshow(topo,topolegend,'DisplayType','texturemap')
demcmap(topo)
land = shaperead('landareas','UseGeoCoords',true);
plotm([land.Lat],[land.Lon],'Color','black')
rivers = shaperead('worldrivers','UseGeoCoords',true);
plotm([rivers.Lat],[rivers.Lon],'Color','blue')

Шаг 6: добавьте купол в отображение земного шара

Добавьте версию ECEF купола к осям земного шара как полупрозрачная mesh.

surf(xECEF, yECEF, zECEF,'FaceColor','yellow','FaceAlpha',0.5)

Можно просмотреть купол и земной шар от различных углов путем интерактивного вращения осей в фигуре MATLAB®.

Кредит

Благодаря Эдварду Дж. Мэйхью младшему для обеспечения технического образования на "радарных куполах" и для того, чтобы обратить наше внимание на проблему визуализации их с Mapping Toolbox™.

Для просмотра документации необходимо авторизоваться на сайте