Графическое изображение 3-D купола как Mesh над глобусом

В этом примере показано, как начать с 3-D функции в системе локальных координат восток-север-вверх (ENU), затем преобразовать и объединить его с глобальным отображением в координатах Earth-Centered, Earth-Fixed (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 с радиусом 3000 километров. Это полушарие может охватывать, гипотетически, объем пространства в область значений идеализированной радиолокационной системы, имеющей равномерное покрытие от горизонта до зенита, во всех азимутах. Объемы пространства, такие как это, когда представляют зоны эффективного покрытия наблюдений, иногда известны неофициально как «радиолокационные купола».

Быстрый способ создать координатные массивы с замкнутым полусферическим куполом - это начать с сферы единичного радиуса, масштабировать радиус и свернуть нижнее полушарие. Легче визуализировать, если сделать его полупрозрачным - установить 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

Figure contains an axes. The axes contains an object of type surface.

Шаг 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

Figure contains an axes. The axes contains an object of type surface.

Шаг 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 topo60c
geoshow(topo60c,topo60cR,'DisplayType','texturemap')
demcmap(topo60c)
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™.