主要内容

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

geoplot3

地理球体图

说明

geoplot3(g,lat,lon,h) 在由 g 指定的地理球体上,以 latlonh 指定的顶点绘制一条三维线。

示例

geoplot3(___,LineSpec) 设置线条样式、标记和颜色。

示例

geoplot3(___,Name=Value) 使用一个或多个名称-值参数为该行指定附加选项。在所有其他输入参数之后指定选项。有关选项列表,请参阅 Line Properties

示例

p = geoplot3(___) 返回一个 Line 对象。此语法可用于控制线的属性。

示例

全部折叠

绘制滑翔机在局部区域上空的飞行轨迹。首先,导入代表路径的示例数据。获取纬度、经度和大地水准面高度值。

trk = readgeotable("sample_mixed.gpx",Layer="track_points");
lat = trk.Shape.Latitude;
lon = trk.Shape.Longitude;
h = trk.Elevation;

制作一个地理球体。然后,将路径绘制为一条线。

uif = uifigure;
g = geoglobe(uif);
geoplot3(g,lat,lon,h,"c")

默认情况下,视图位于数据的正上方。通过设置相机位置、俯仰角和偏航角来改变视角。

campos(g,44.44,-72.81,9e3)
campitch(g,-30)
camheading(g,40)

A 3-D line plotted over a region with terrain imagery

当您在相距甚远的两点之间绘制直线时,由于该直线会穿过地球,数据可能会被遮蔽。通过在指定数据点之间插入点来显示整条线。

例如,指定纽约市和巴黎的坐标。然后,在它们之间画一条直线。通过将 geoplot3 的第四个参数指定为空数组,表明没有高度数据。请注意,您无法看到这条线,因为它穿过了地球。

lat = [40.71 48.86];
lon = [-74.01 2.35];
uif = uifigure;
g = geoglobe(uif);
geoplot3(g,lat,lon,[],"y",LineWidth=2)

A globe displaying New York City and Paris. There is no visible line.

要绘制该线,请使用 interpm 函数在大圆上插入点。然后,重新绘制这条线。请注意该线可见。

[latI,lonI] = interpm(lat,lon,0.1,"gc");
geoplot3(g,latI,lonI,[],"y",LineWidth=2)

A globe with a yellow line between New York City and Paris. The entire line is visible.

当您在一大片区域(如州或国家)上绘制一条线时,部分线段可能会被遮挡,因为它穿过了地形。通过移除球体上的地形数据,查看整条线。

例如,导入样本海岸线数据,并在地理球体上绘制它。默认情况下,该球体模型包含源自 GMTED2010 模型的地形数据。请注意,该行显示为断开状态。

load coastlines
uif = uifigure;
g = geoglobe(uif);
p = geoplot3(g,coastlat,coastlon,[],"m");

A globe with a magenta line along coastlines. The line appears broken.

要显示该线,请将球体的 Terrain 属性设置为 "none"。通过将线的 HeightReference 属性设置为 "ellipsoid",表明绘制的数据位于 WGS84 参考椭球体上。请注意,该线在底图上可见。

g.Terrain = "none";
p.HeightReference = "ellipsoid";

A globe with a magenta line along coastlines. The line is visible over the basemap.

导入代表滑翔机飞行轨迹的样本数据。获取纬度、经度和大地水准面高度值。

trk = readgeotable("sample_mixed.gpx",Layer="track_points");
lat = trk.Shape.Latitude;
lon = trk.Shape.Longitude;
h = trk.Elevation;

制作一个地理球体。然后,使用圆形标记绘制数据。通过设置 MarkerIndices 属性,在每 25 个数据点处绘制一个标记点。

uif = uifigure;
g = geoglobe(uif);
mskip = 1:25:length(lat);
geoplot3(g,lat,lon,h,"mo",MarkerIndices=mskip)

从格罗斯水库水面引一条线至南博尔德峰顶上方一点。

指定两个端点的纬度、经度和高度。指定相对于地形的高度,因此 0 代表地面高度而非海平面高度。

lat = [39.95384 39.95];
lon = [-105.29916 -105.3608];
hTerrain = [10 0];

在地理球体上绘制这条线。使用 HeightReference 属性指示高度值以地形为基准。默认情况下,视图位于数据的正上方。按住 Ctrl 键并拖动以倾斜视图。

uif = uifigure;
g = geoglobe(uif);
geoplot3(g,lat,lon,hTerrain,"y",HeightReference="terrain",LineWidth=3)

A 3-D line plotted from the surface of a reservoir to a point above a peak.

输入参数

全部折叠

地理球体,指定为 GeographicGlobe 对象。 1

以度为单位的大地纬度,指定为向量。

latlon 必须具有相同的大小。

数据类型: single | double

以度为单位的大地经度,指定为向量。

latlon 必须具有相同的大小。

数据类型: single | double

以米为单位的高度,指定为向量。默认情况下,高度值以大地水准面或平均海平面为基准。

通过将线段的 HeightReference 属性设置为 "ellipsoid",将高度值参考至 WGS84 基准椭球体。通过将 HeightReference 属性设置为 "terrain",将高度值参考至地形或地面。

h 必须是标量,或与 latlon 大小相同的向量。如果 h 是标量,则每个点都绘制在相同高度。

数据类型: single | double

线型、标记和颜色,指定为字符向量或包含符号的字符串。符号可以按任何顺序显示。您不需要指定所有三个特征(线型、标记和颜色)。例如,若省略线型并指定标记,则图中仅显示标记而无线条。

示例: "-or" 是一条带圆形标记的红色实线

线型与标记描述
-实线(默认)
o圆形标记
颜色描述

y

黄色

m

洋红色

c

青色

r

红色

g

绿色

b

蓝色

w

白色

k

黑色

名称-值参数

全部折叠

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

示例: geoplot3(g,1:10,1:10,1:10,Color="r") 改变行颜色。

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

示例: geoplot3(g,1:10,1:10,1:10,"Color","r") 改变行颜色。

注意

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

高度参考,指定为以下值之一:

  • 'geoid' - 高度值相对于大地水准面(平均海平面)。

  • 'terrain' - 高度值相对于地面。

  • 'ellipsoid' - 高度值相对于 WGS84 参考椭球体。

有关地形、大地水准面和椭球高程的更多信息,请参阅根据正高和大地水准面高计算椭球高

线条颜色,可指定为 RGB 三元组、十六进制颜色代码、颜色名称或简短名称。

RGB 三元组和十六进制颜色代码可用于指定自定义颜色。

  • RGB 三元组是一个三元素行向量,其元素分别指定颜色中红、绿、蓝三种色度的强度值。强度值必须在 [0,1] 范围内;例如, [0.4 0.6 0.7]

  • 十六进制颜色代码是一种字符向量或字符串标量,以井号符号(###)开头,后跟三个或六个十六进制数字,范围从#0#到#F#。这些值不区分大小写。因此,颜色代码 "#FF8800""#ff8800""#F80""#f80" 是等效的。

或者,您可以通过名称指定一些常用颜色。此表列出了命名颜色选项、对应的 RGB 三元组以及十六进制颜色代码。

颜色名称简称RGB 三元组十六进制颜色代码外观
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

此表列出了浅色和深色主题下图的默认配色方案。

调色板调色板颜色

"gem" - 浅色主题默认

在 R2025a 之前的版本中: 大多数图例默认使用这些颜色。

Sample of the "gem" color palette

"glow" - 暗色主题默认

Sample of the "glow" color palette

您可以通过 orderedcolorsrgb2hex 函数获取这些调色板的 RGB 三元组和十六进制颜色代码。例如,获取 "gem" 调色板的 RGB 三元组,并将其转换为十六进制颜色代码。

RGB = orderedcolors("gem");
H = rgb2hex(RGB);

在 R2023b 之前的版本中: 使用 RGB = get(groot,"FactoryAxesColorOrder") 获取 RGB 三元组。

在 R2024a 之前的版本中: 使用 H = compose("#%02X%02X%02X",round(RGB*255)) 获取十六进制颜色代码。

线型,指定为以下选项之一:

线型描述生成的线条
'-'实线(默认)

Sample of solid line

'none'

标记符号,指定为 'none''o'。默认情况下,该行不显示标记。指定 'o' 以在每个数据点或顶点处显示圆形标记。

在浏览球体时,标记不会倾斜或旋转。

限制

  • 与大多数 Line 对象不同,使用 geoplot3 创建的线条不支持将其父对象更改为地理球体以外的任何对象。

版本历史记录

在 R2020a 中推出

全部展开

另请参阅

函数

属性


1 Alignment of boundaries and region labels are a presentation of the feature provided by the data vendors and do not imply endorsement by MathWorks®.