В этом примере показано, как начать с 3-D функции в системе локальных координат восток-север-вверх (ENU), затем преобразовать и объединить его с глобальным отображением в координатах Earth-Centered, Earth-Fixed (ECEF).
Использовать Геодезическую справочную систему 1980 (GRS80) и работать в единицах километров. Поместите источник локальной системы недалеко от Вашингтона, округ Колумбия, США.
grs80 = referenceEllipsoid('grs80','km'); domeRadius = 3000; % km domeLat = 39; % degrees domeLon = -77; % degrees domeAlt = 0; % km
Локальная система 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
Используйте 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
Создайте базовое отображение глобуса с помощью 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)
Добавьте глобальную топографию, береговые линии и реки с низким разрешением к земному шару.
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')
Добавьте версию купола ECEF к осям земного шара в виде полупрозрачного mesh.
surf(xECEF, yECEF, zECEF,'FaceColor','yellow','FaceAlpha',0.5)
Можно просмотреть купол и глобус с разных углов путем интерактивного поворота осей на рисунке MATLAB ®.
Спасибо Эдварду Дж. Мейхью-младшему за предоставление технического фона на «радиолокационных куполах» и за доведение до нашего сведения проблемы визуализации их с помощью Mapping Toolbox™.