主要内容

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

geoglobe

创建地理球体

说明

geoglobe(parent) 在指定的图窗、面板或选项卡组中创建一个地理球体。该图窗必须使用 uifigure 函数创建。有关球体的信息,请参阅地理球体导航

地理球体需要硬件图形支持才能运行 WebGL™。

示例

geoglobe(parent,Name=Value) 通过一个或多个名称-值参数为球体指定附加选项。在所有其他输入参数之后指定选项。有关选项列表,请参阅 GeographicGlobe

示例

g = geoglobe(___) 返回一个 GeographicGlobe 对象。此语法可用于控制地理球体的属性。

示例

全部折叠

在使用 uifigure 函数创建的图窗中显示一个地理球体。

uif = uifigure;
g = geoglobe(uif);

A geographic globe

制作一个地理球体。使用名称-值参数指定底图。

uif = uifigure;
g = geoglobe(uif,Basemap="landcover");

A geographic globe with the landcover basemap.

使用 geobasemap 函数更改现有地理球体的底图。

geobasemap(g,"streets-dark")

A geographic globe with the streets-dark basemap.

创建一个填满整个图窗区域的选项卡组。要使组填满图窗,请将组的宽度和高度设置为图窗对应的宽度和高度。然后,在每个标签页中显示一个地理球体。

uif = uifigure;
pos = [0 0 uif.Position(3) uif.Position(4)];
tgroup = uitabgroup(uif,Position=pos);

tab1 = uitab(tgroup,Title="Default Basemap");
g1 = geoglobe(tab1);

tab2 = uitab(tgroup,Title="Gray Terrain Basemap");
g2 = geoglobe(tab2,Basemap="grayterrain");

A geographic globe in a figure with two tabs, Default Basemap and Gray Terrain Basemap.

使用getframe函数捕获地理球体的图像。然后,使用imwrite函数将捕获的图像写入文件。

制作一个地理球体。

uif = uifigure;
g = geoglobe(uif);

将无人机路径读取到工作空间中,作为地理空间表。从表格中提取纬度、经度和大地水准面高度值。然后,在地理球体上显示该路径。

T = readgeotable("sample_uavtrack.gpx",Layer="track_points");

lat = T.Shape.Latitude;
lon = T.Shape.Longitude;
h = T.Elevation;

geoplot3(g,lat,lon,h,"c",LineWidth=2,HeightReference="geoid")

通过设置相机位置、俯仰角和偏航角来改变视角。

campos(g,19.25,-155.45,2e4)
campitch(g,-25)
camheading(g,-15)

Bird's-eye view of a UAV path plotted over satellite imagery

使用 drawnow 函数将待处理的更新应用到球体。然后,拍摄一张地理球体的图像。指定存储球体的图窗作为 getframe 函数的输入。

drawnow
F = getframe(uif);

输出 F 是一个结构体,其 cdata 字段用于存储捕获的图像数据。在新图中显示该图像。

figure
imshow(F.cdata)

Figure contains an axes object. The hidden axes object contains an object of type image.

将捕获的图像写入文件。

imwrite(F.cdata,"globeImage.png")

输入参数

全部折叠

父容器,指定为使用 uifigure 函数创建的 Figure 对象、Panel 对象或 Tab 对象。

名称-值参数

全部折叠

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: geoglobe(uif,Basemap="streets") 设置地理球体的底图。

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: geoglobe(uif,"Basemap","streets") 设置地理球体的底图。

注意

使用名称-值参数为本函数创建的 GeographicGlobe 对象的属性指定值。此处列出的属性仅为子集。完整列表请参阅 GeographicGlobe

用于绘制数据的坐标系,指定为下表所列值之一。表格中的六幅底图是使用 Natural Earth 创建的瓦片数据集。其中五幅底图是由 Esri® 托管的高缩放级别地图。

'satellite' basemap.

'satellite'(默认)

由高分辨率卫星影像构成的完整全球底图。

由 Esri 托管。

'streets' basemap.

'streets'

通用道路地图,强调道路与交通网络的准确、清晰的样式设计。

由 Esri 托管。

'streets-light' basemap.

'streets-light'

地图设计旨在提供地理背景,同时在浅色背景上突出显示用户数据。

由 Esri 托管。

'streets-dark' basemap.

'streets-dark'

地图设计旨在提供地理背景信息,同时在深色背景上突出显示用户数据。

由 Esri 托管。

'topographic' basemap.

'topographic'

通用地图,采用样式化处理以呈现地形特征。

由 Esri 托管。

'landcover' basemap.

'landcover'

结合卫星衍生的土地覆盖数据、阴影地形和海底地形图的地图。轻盈自然的配色方案适用于主题地图和参考地图。

使用 Natural Earth 创建。

'colorterrain' basemap.

'colorterrain'

阴影浮雕图与土地覆盖色调相融合。潮湿的低地一片青翠,干旱的低地则呈现褐色。

使用 Natural Earth 创建。

'grayterrain' basemap.

'grayterrain'

灰度地形图。阴影浮雕法既突出了高山,也突出了低地中的微地形。

使用 Natural Earth 创建。

'bluegreen' basemap.

'bluegreen'

双色陆海地图,陆地区域为浅绿色,水域区域为浅蓝色。

使用 Natural Earth 创建。

'grayland' basemap.

'grayland'

双色调陆海地图,陆地区域呈灰色,水域区域呈白色。

使用 Natural Earth 创建。

'darkwater' basemap.

'darkwater'

双色调陆海地图,陆地区域为浅灰色,水域区域为深灰色。此底图已随 MATLAB® 安装。

使用 Natural Earth 创建。

不适用。

使用 addCustomBasemap 函数添加的自定义底图。

'darkwater' 外的所有底图均需 Internet 连接。'darkwater' 底图包含在 MATLAB 和 Mapping Toolbox™ 中。

若您无法持续访问 Internet,可通过附加组件浏览器将使用 Natural Earth 创建的底图下载至本地系统。由 Esri 托管的底图不可供下载。有关下载底图以及在本地系统上更改默认底图的更多信息,请参阅 Access Basemaps and Terrain for Geographic Globe

由 Esri 托管的底图会定期更新。因此,您可能会发现随时间推移,您的可视化效果存在差异。

边界与区域标签的对齐方式是数据供应商提供的特征呈现方式,并不意味着 MathWorks® 对此予以认可。

示例: g = geoglobe(uifigure,'Basemap','bluegreen')

示例: g.Basemap = 'bluegreen'

数据类型: char | string

地形数据,指定为以下值之一:

  • 'gmted2010' - 基于美国地质调查局 (USGS) 与国家地理空间情报局 (NGA) 的 GMTED2010 模型构建的全球瓦片地形数据,由 MathWorks 托管。使用 'gmted2010' 需要 Internet 连接。

  • 'none' - 无地形。

  • 字符串标量或字符向量 - 使用 addCustomTerrain 函数添加的自定义地形名称。

大小和位置,指定为 [left bottom width height] 形式的四元素向量。默认情况下,MATLAB 以容器归一化的单位测量数值。要更改单位,请设置 Units 属性。

  • leftbottom 元素定义了容器图窗、面板或选项卡的左下角到位置边界左下角的距离。

  • widthheight 元素表示位置边界大小。

图中这条红线显示了地理球体的位置边界。

A geographic globe with a red rectangular border along the boundary.

位置单位,指定为以下值之一。

Units描述
'normalized'(默认)以容器为基准进行归一化的单位,该容器通常是图窗或面板。容器的左下角是 (0,0),右上角是 (1,1)
'inches'英寸。
'centimeters'厘米。
'characters'

基于图形根对象默认字体 uicontrol 的单位:

  • 字符宽度是字母 x 的宽度。

  • 字符高度是指两行文本基线之间的距离。

'points'字体磅数。1 磅等于 1/72 英寸。
'pixels'

像素。

在 Windows®Macintosh 系统上,像素的大小为 1/96 英寸。此大小与您的系统分辨率无关。

在 Linux® 系统上,像素的大小由您的系统分辨率决定。

在对象创建过程中以名称-值对形式指定单位时,需先定义 Units 名称-值对,再定义使用该单位的名称-值对(例如 Position)。

限制

  • 在实时编辑器中,地理球体会在独立窗口中显示,而非出现在实时脚本内。

  • 在 Linux 上不支持使用 MATLAB Compiler™ 部署地理球体。

  • 如果同时打开多个需要 WebGL 的窗口,地理球体可能会显示此错误:

    Globe Viewer needs to close because the WebGL context has been lost.

详细信息

全部折叠

提示

  • 若创建一个不带输出参数的地理球体,则可通过 findall 函数在后续将球体赋值给变量。

    uif = uifigure;
    geoglobe(uif)
    g = findall(groot,Type="globe");

    如果存在多个地理球体,则 findall 将返回一个球体对象的向量。

    uif = uifigure;
    geoglobe(uif)
    uif2 = uifigure;
    geoglobe(uif2)
    g = findall(groot,Type="globe")
    g = 
    
      2×1 GeographicGlobe array:
    
      GeographicGlobe
      GeographicGlobe

版本历史记录

在 R2020a 中推出

全部展开

另请参阅

函数

对象