Этот пример показывает, как запустить с 3-D функции в системе локальных координат "восточного севера" (ENU), затем преобразуйте и объедините его с отображением земного шара в Сосредоточенном Землей, Зафиксированном Землей (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 полупространств с радиусом 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
Используйте функцию 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 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')
Добавьте версию ECEF купола к осям земного шара как полупрозрачная mesh.
surf(xECEF, yECEF, zECEF,'FaceColor','yellow','FaceAlpha',0.5)
Можно просмотреть купол и земной шар от различных углов путем интерактивного вращения осей в фигуре MATLAB®.
Благодаря Эдварду Дж. Мэйхью младшему для обеспечения технического образования на "радарных куполах" и для того, чтобы обратить наше внимание на проблему визуализации их с Mapping Toolbox™.