geoplot3
地理球体图
说明
geoplot3(___, 使用一个或多个名称-值参数为该行指定附加选项。在所有其他输入参数之后指定选项。有关选项列表,请参阅 Line Properties。Name=Value)
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)

当您在相距甚远的两点之间绘制直线时,由于该直线会穿过地球,数据可能会被遮蔽。通过在指定数据点之间插入点来显示整条线。
例如,指定纽约市和巴黎的坐标。然后,在它们之间画一条直线。通过将 geoplot3 的第四个参数指定为空数组,表明没有高度数据。请注意,您无法看到这条线,因为它穿过了地球。
lat = [40.71 48.86];
lon = [-74.01 2.35];
uif = uifigure;
g = geoglobe(uif);
geoplot3(g,lat,lon,[],"y",LineWidth=2)
要绘制该线,请使用 interpm 函数在大圆上插入点。然后,重新绘制这条线。请注意该线可见。
[latI,lonI] = interpm(lat,lon,0.1,"gc"); geoplot3(g,latI,lonI,[],"y",LineWidth=2)

当您在一大片区域(如州或国家)上绘制一条线时,部分线段可能会被遮挡,因为它穿过了地形。通过移除球体上的地形数据,查看整条线。
例如,导入样本海岸线数据,并在地理球体上绘制它。默认情况下,该球体模型包含源自 GMTED2010 模型的地形数据。请注意,该行显示为断开状态。
load coastlines uif = uifigure; g = geoglobe(uif); p = geoplot3(g,coastlat,coastlon,[],"m");

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

导入代表滑翔机飞行轨迹的样本数据。获取纬度、经度和大地水准面高度值。
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)

输入参数
地理球体,指定为 GeographicGlobe 对象。 1
以度为单位的大地纬度,指定为向量。
lat 和 lon 必须具有相同的大小。
数据类型: single | double
以度为单位的大地经度,指定为向量。
lat 和 lon 必须具有相同的大小。
数据类型: single | double
线型、标记和颜色,指定为字符向量或包含符号的字符串。符号可以按任何顺序显示。您不需要指定所有三个特征(线型、标记和颜色)。例如,若省略线型并指定标记,则图中仅显示标记而无线条。
示例: "-or" 是一条带圆形标记的红色实线
| 线型与标记 | 描述 |
|---|---|
- | 实线(默认) |
o | 圆形标记 |
| 颜色 | 描述 |
|---|---|
| 黄色 |
| 洋红色 |
| 青色 |
| 红色 |
| 绿色 |
| 蓝色 |
| 白色 |
| 黑色 |
名称-值参数
将可选参量对组指定为 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" |
|
"green" | "g" | [0 1 0] | "#00FF00" |
|
"blue" | "b" | [0 0 1] | "#0000FF" |
|
"cyan" | "c" | [0 1 1] | "#00FFFF" |
|
"magenta" | "m" | [1 0 1] | "#FF00FF" |
|
"yellow" | "y" | [1 1 0] | "#FFFF00" |
|
"black" | "k" | [0 0 0] | "#000000" |
|
"white" | "w" | [1 1 1] | "#FFFFFF" |
|
此表列出了浅色和深色主题下图的默认配色方案。
| 调色板 | 调色板颜色 |
|---|---|
在 R2025a 之前的版本中: 大多数图例默认使用这些颜色。 |
|
|
|
您可以通过 orderedcolors 和 rgb2hex 函数获取这些调色板的 RGB 三元组和十六进制颜色代码。例如,获取 "gem" 调色板的 RGB 三元组,并将其转换为十六进制颜色代码。
RGB = orderedcolors("gem");
H = rgb2hex(RGB);在 R2023b 之前的版本中: 使用 RGB = get(groot,"FactoryAxesColorOrder") 获取 RGB 三元组。
在 R2024a 之前的版本中: 使用 H = compose("#%02X%02X%02X",round(RGB*255)) 获取十六进制颜色代码。
线型,指定为以下选项之一:
| 线型 | 描述 | 生成的线条 |
|---|---|---|
'-' | 实线(默认) |
|
'none' | 无 | 无 |
标记符号,指定为 'none' 或 'o'。默认情况下,该行不显示标记。指定 'o' 以在每个数据点或顶点处显示圆形标记。
在浏览球体时,标记不会倾斜或旋转。
限制
与大多数
Line对象不同,使用geoplot3创建的线条不支持将其父对象更改为地理球体以外的任何对象。
版本历史记录
在 R2020a 中推出当您使用 geoplot3 函数将数据绘制在地理球体上时,球体会通过以下改进来定位相机:
相机会瞬移到绘图位置。在 R2023a 及更早版本中,相机会“飞行”到绘图区域。左侧图像展示了 R2023a 版本中的相机行为。右侧图像展示了 R2023b 版本中的相机行为。

当数据覆盖区域较小时,球体会将相机置于更接近绘制数据的位置。在 R2023a 及更早版本中,球体会将相机放置得更远。
当您将保持状态设置为
"on"时,在球体内进行平移或缩放操作后再绘制数据,相机将保持静止。在 R2023a 及更早版本中,相机以数据为中心。要了解如何在 R2023a 及更早版本中保留相机视图,请参阅campos参考页面的 Preserve Camera View 示例。
当使用 geoplot3 函数向地理球体添加图层时,MATLAB® 不会重置底图或地形。在 R2022a 及更早版本中,添加新图时底图和地形会重置。
因此,您可以指定底图或地形,然后无需使用 hold 函数即可可视化数据。例如,这段代码使用 "streets" 底图创建一个球体,且不包含地形数据。随后,它会显示一个图并调整相机视角。在 R2022b 版本中,底图和地形不会重置。在 R2022a 及更早版本中,底图重置为默认的 "satellite",地形重置为默认的 "gmted2010"。
lat = [42.3501 42.3515 42.3598 42.3584 42.3529 42.3626]; lon = [-71.0870 -71.0926 -71.0662 -71.0598 -71.0662 -71.0789]; uif = uifigure; g = geoglobe(uif,Basemap="streets",Terrain="none"); p = geoplot3(g,lat,lon,0,"ro",LineWidth=3); campos(g,42.33,-71.0756,2113) campitch(g,-42.2458)

此变更不会影响现有代码 - 该代码在命令之间将保持状态设置为 "on"。
要重置底图和地形,请在创建图集后将 Basemap 和 Terrain 属性设置为默认值。
g.Basemap = "satellite"; g.Terrain = "gmted2010";
有关更改地理球体底图和地形的更多信息,请参阅Access Basemaps and Terrain for Geographic Globe。
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®.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)










