主要内容

本页采用了机器翻译。点击此处可查看英文原文。

将三维穹顶作为网格绘制在球体上

本示例演示了如何以本地东北天 (ENU) 坐标系中的三维特征为起点,对其进行变换,并将其与地心地固 (ECEF) 坐标系中的球体显示进行组合。

步骤 1:设置定义参数

请使用 1980 年大地测量参考系 (GRS80),并以公里为单位进行计算。将本坐标系的原点设在美国华盛顿特区附近。

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

步骤 2:在本地“东北天”坐标系中构建穹顶

本地 ENU 系统是相对于一个大地测量参考点定义的,在此情况下由 (domeLatdomeLondomeAlt) 指定。这是一个三维笛卡尔坐标系,其中 x 轴正方向指向东方,y 轴正方向指向北方,z 轴与参考椭球面垂直并向上延伸。

在此示例中,该三维特征是在 z ≥ 0 半空间内半径为 3000 公里的半球体。假设而言,该半球可包含一个理想化雷达系统覆盖范围内的空间体积,该系统在所有方位角上均能从地平线到天顶实现均匀覆盖。像这样的空间区域,当代表有效监视覆盖范围时,有时被非正式地称为“雷达穹顶”。

构建描述封闭半球穹顶的坐标数组的快速方法是:从单位球体开始,放大半径,然后将下半球压扁。如果将其设置为半透明,会更容易直观地理解——在这种情况下,将 FaceAlpha 设置为 0.5。

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

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

步骤 3:将穹顶坐标系转换为地心地固 (ECEF) 坐标系

使用 enu2ecef 函数,将穹顶从本地 ENU 坐标系转换为基于 GRS 80 参考椭球体的 ECEF 坐标系。它执行了三维平移和旋转。请注意,半球是如何倾斜的,以及它的中心是如何从原点偏移数千公里的。

[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 object. The axes object contains an object of type surface.

步骤 4:构造球体显示

使用 axesmglobe 构建一个基本的球体展示。

figure
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)

Figure contains an axes object. The hidden axes object contains 2 objects of type line.

步骤 5:添加各种全球地图数据

在球体上添加低分辨率的全球地形、海岸线和河流。

load topo60c
geoshow(topo60c,topo60cR,"DisplayType","texturemap")
demcmap(topo60c)

load coastlines
geoshow(coastlat,coastlon,"Color","black")

rivers = readgeotable("worldrivers.shp");
geoshow(rivers,"Color","blue")

Figure contains an axes object. The hidden axes object contains 132 objects of type line, surface.

步骤 6:将穹顶添加到球体显示中

将 ECEF 版本的穹顶作为半透明网格添加到球体坐标系中。

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

Figure contains an axes object. The hidden axes object contains 133 objects of type line, surface.

您可以通过交互式旋转坐标轴,从不同角度观察穹顶和球体。

致谢

Thanks to Edward J. Mayhew, Jr. for providing technical background on "radar domes" and for bringing to our attention the problem of visualizing them with the Mapping Toolbox™.