主要内容

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

geoshow

显示地图经纬度数据

说明

geoshow(lat,lon) 使用当前基于 axesm 的地图(此前称为地图坐标区)中存储的投影,投影并显示纬度和经度向量 latlon。若当前不存在基于 axesm 的地图,则 latlon 将采用默认的普拉德·卡雷投影法,在常规坐标区上进行投影。

注意

要在基于 axesm 的地图上显示数据,请在调用 geoshow 之前,使用 axesmworldmapusamap 函数创建地图。

默认情况下,geoshowlatlon 显示为行。可选地,通过使用 DisplayType 名称-值对参数,将矢量数据以点、多点或多边形的形式显示。

geoshow(S) 根据 S 的几何属性,将存储于 S 中的矢量地理要素以点、多点、线、多线、多边形或多边形集的形式呈现。

您可选地使用名为 SymbolSpec 的名称-值对参数指定符号化规则。

示例

geoshow(lat,lon,Z) 投影并显示地理定位数据网格 Z。在此语法中,latlon 是 M×N 的纬度-经度数组。Z 是 M×N 的数组,其类为 double。您可通过使用 DisplayType 名称-值对参数,选择性地将数据以曲面、网格、纹理贴图或等高线形式显示。

geoshow(Z,R) 使用参考对象 R 投影并显示规则数据网格 Z。您可通过使用 DisplayType 名称-值对参数,选择性地将数据以曲面、网格、纹理贴图或等高线形式显示。若 DisplayType 等于 'texturemap',则 geoshow 构造的表面中所有 ZData 值均设为 0。

示例

geoshow(lat,lon,I)

geoshow(lat,lon,X,cmap) 将地理定位图像作为纹理贴图投影并显示在零高程表面上。地理定位图像 I 可以是真彩色、灰度或二值图像。X 是采用颜色图 cmap 的索引图像。地理定位图像的示例包括卫星条带的彩色合成图像,或原始图像参考不同坐标系的图像。

geoshow(I,R)

geoshow(X,cmap,R) 通过参考对象 R 投影并显示地理参考自经纬度的图像。该图像以纹理贴图的形式显示在零高程表面上。

geoshow(filename) 根据文件格式类型,从指定文件中提取并显示数据。

示例

geoshow(___,Name,Value) 指定修改显示类型或设置 MATLAB® 图形属性的参数及其对应值。您可以使用名称-值对进行设置:

  • Name,Value 参量

  • 任何 MATLAB 图形线、补片和表面属性

  • 任何 Mapping Toolbox™ 等高线属性

参数名称可以缩写,且不区分大小写。

geoshow(ax,___) 将父坐标区设置为 ax

h = geoshow(___) 返回一个指向 MATLAB 图形对象的句柄。

示例

全部折叠

加载朝鲜半岛的高程数据和地理单元参考对象。使用 worldmap 创建朝鲜半岛地图。

load korea5c
worldmap(korea5c,korea5cR)

将高程数据显示为纹理贴图。使用 demcmap 函数为高程数据应用合适的颜色图。

geoshow(korea5c,korea5cR,'DisplayType','texturemap')
demcmap(korea5c)

Figure contains an axes object. The hidden axes object contains 13 objects of type patch, surface, line, text.

对包含非洲、欧洲和亚洲的世界区域进行地理编码。输出地理空间表使用多边形表示该区域。通过查询表的 Shape 变量获取多边形信息。

land = readgeotable("landareas.shp");
GT = geocode("Africa and Eurasia",land);
GT.Shape
ans = 
  geopolyshape with properties:

              NumRegions: 2
                NumHoles: 22
                Geometry: "polygon"
    CoordinateSystemType: "geographic"
           GeographicCRS: [1×1 geocrs]

在世界地图上显示多边形。

worldmap([-45 80],[-25 195]);
geoshow(GT)

Figure contains an axes object. The hidden axes object contains 12 objects of type patch, line, text.

将包含美国各州多边形的 shapefile 导入为地理空间表。创建一张地图,使用适合显示全部 50 个州的投影和边界范围。

states = readgeotable("usastatehi.shp");
figure
worldmap("na")

创建一个符号规范,将阿拉斯加和夏威夷多边形的颜色设置为红色。

symspec = makesymbolspec("Polygon", ...
   {'Name','Alaska','FaceColor','red'}, ...
   {'Name','Hawaii','FaceColor','red'});

显示所有州的多边形。将默认面颜色设置为蓝色,默认边颜色设置为黑色。

geoshow(states,"SymbolSpec",symspec, ...
   "DefaultFaceColor","blue", ...
   "DefaultEdgeColor","black");

Figure contains an axes object. The hidden axes object contains 60 objects of type patch, line, text.

加载朝鲜半岛的高程数据和地理单元参考对象。在高程数据中插入一组空值。

load korea5c
korea5c(80:100,:) = NaN;

使用 worldmap 创建朝鲜半岛地图。然后,将高程数据以表面形式显示,其中空值显示为透明。

worldmap(korea5c,korea5cR)
geoshow(korea5c,korea5cR,'DisplayType','surface')
demcmap(korea5c)

Figure contains an axes object. The hidden axes object contains 13 objects of type patch, surface, line, text.

从 EGM96 大地水准面模型获取大地水准面高程及地理坐标参考对象。然后,使用埃克特投影将大地水准面高程作为曲面进行显示。通过将 'CData' 名称-值对设置为大地水准面高度数据,并将 'ZData' 名称-值对设置为全零矩阵,确保该表面出现在土地掩膜之下。使用 framemgridm 显示地图的边框和网格。

[N,R] = egm96geoid;
axesm eckert4
Z = zeros(R.RasterSize);
geoshow(N,R,'DisplayType','surface','CData',N,'ZData',Z)
framem
gridm

创建一个颜色栏并添加文字说明。然后,将所有陆地遮罩掉。

cb = colorbar('southoutside');
cb.Label.String = 'EGM96 Geoid Height in Meters';
geoshow('landareas.shp','FaceColor','black')

Figure contains an axes object. The axes object contains 541 objects of type patch, surface, line.

从 EGM96 大地水准面模型获取大地水准面高程及地理坐标参考对象。然后,使用埃克特投影将大地水准面高程作为曲面进行显示。

[N,R] = egm96geoid;
axesm eckert4
geoshow(N,R,'DisplayType','surface')

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

添加光线和材质。然后,将地图视为一个三维表面。

light
material(0.6*[1 1 1])
axis normal
view(3)

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

加载月球反照率数据和地理单元参考对象。

load moonalb20c

然后,显示数据。为此,请创建一个地图并将其投影设置为正交投影。使用 geoshow 函数将数据显示为纹理贴图。然后,将颜色图切换为灰度模式并移除坐标轴线。

axesm ortho
geoshow(moonalb20c,moonalb20cR,'DisplayType','texturemap')
colormap gray
axis off

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

输入参数

全部折叠

纬度或经度数据,指定为数值向量或 M×N 数值矩阵。

  • 当与语法 geoshow(lat,lon) 一起使用时,latlon 是向量。

  • 当与 geoshow(lat,lon,Z) 语法、geoshow(lat,lon,I) 语法或 geoshow(lat,lon,X,cmap) 语法配合使用时,latlon 均为二维数组。若 latlon 为矩阵,则表示坐标数组或地理坐标下的地理位置数组,其大小必须与 ZIX 保持一致。如果 I 是 RGB 图像,则 latlon 必须是与图像前两个维度匹配的矩阵。

latlon 可能包含嵌套的 NaN,用于分隔单个线段或多边形部件。

地理特征,指定为以下之一:

  • 一个地理空间表。该表的 Shape 变量必须包含 geopointshapegeolineshapegeopolyshape 对象。geoshow 函数不支持包含多种形状对象类型的地理空间表。有关地理空间表的更多信息,请参阅Create Geospatial Tables

  • 一个 geopoint 向量。

  • 一个 geoshape 向量。

  • 一个地理结构体数组 (geostruct),包含 LatLon 坐标字段。

geoshow 函数假定坐标为地理坐标,并将其投影为地图坐标。

若指定了 mappoint 向量、mapshape 向量或包含 XY 坐标字段的地图结构体数组 (mapstruct),则 geoshow 函数将顶点显示为预投影地图坐标,并发出警告。若指定包含 mappointshapemaplineshapemapolyshape 对象的地理空间表,则 geoshow 函数将抛出错误。在这些情况下,请改用 mapshow 函数。

数据网格,指定为一个 M×N 的数值数组,该数组可能包含 NaN 个值。Z 要么是地理参考数据网格,要么是与地理参考 R 关联的常规数据网格。

地理参考,指定为以下之一:有关向量和矩阵参考的更多信息,请参阅Georeferenced Raster Data

类型描述
地理栅格参考对象

GeographicCellsReferenceGeographicPostingsReference 地理栅格参考对象,用于将 Z 的下标与地理坐标相关联。RasterSize 属性必须与数据网格的大小 size(Z) 保持一致。

如果 RGeographicPostingsReference 对象,则 DisplayType'image''texturemap' 值将不被接受。

向量

1×3 的数值向量,其元素为:

[cells/degree northern_latitude_limit western_longitude_limit]
矩阵

3×2 数值矩阵,根据以下规则将栅格行和列索引转换为地理坐标或反向转换:

[lon lat] = [row col 1] * R

R 定义了一种(非旋转、非倾斜)关系,其中数据网格的每列沿经线分布,每行沿纬线分布。默认采用最近邻插值法。对于网格边界外的点,或当 latlon 包含 NaN 时,返回值为 NaN。所有角度均以度为单位。

真彩色、灰度或二值图像,其中真彩色图像指定为 M×N×3 数组,灰度或二值图像指定为 M×N 数组。latlon 必须是 M×N 数组。若指定,'DisplayType' 必须设置为 'image'

索引图像,其颜色映射由 cmap 定义,指定为 M×N 数组。latlon 必须是 M×N 数组。若指定,'DisplayType' 必须设置为 'image'

索引图像 X 的颜色映射,指定为一个 c×3 数值矩阵。颜色映射中包含 c 种颜色,每种颜色由红、绿、蓝三原色像素值表示。

文件名,指定为字符串标量或字符向量。geoshow 会根据数据格式自动设置 DisplayType 参数。

格式DisplayType
形状文件'point', 'multipoint', 'line''polygon'
GeoTIFF'image'
TIFF/JPEG/PNG 格式并附带世界文件 'image'
ARC ASCII 网格'surface'(可被覆盖)
SDTS 栅格'surface'(可被覆盖)

数据类型: char | string

父坐标区,指定为坐标区对象。

名称-值参数

全部折叠

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

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

示例: 'DisplayType','point'

用于显示矢量数据的符号化规则,指定为由 'SymbolSpec'makesymbolspec 返回的结构体组成的逗号分隔对组。它仅用于存储在地理数据结构中的矢量数据。当同时指定 SymbolSpec 和一个或多个图形属性时,图形属性将覆盖符号规格结构中的任何设置。

要更改 SymbolSpec 结构中 Name,Value 对的默认符号化规则,请在图形属性名前添加前缀 'Default'

数据的图形显示类型,指定为由 'DisplayType' 和下列值之一组成的逗号分隔对。

数据类型显示类型属性类型
向量'point'线标记
'multipoint'线标记
'line'线
'polygon'补片
图像'image'表面
网格'surface'表面
'mesh'表面
'texturemap'表面
'contour'等高线

DisplayType 的有效值取决于地图数据的格式。例如,如果地图数据是地理定位图像或地理参考图像,那么 DisplayType 的唯一有效值是 'image'。不同显示类型支持不同的地理数据类类型:

显示类型支持的类类型
图像logicaluint8uint16 以及 double
表面singledouble
纹理贴图所有数值类型和 logical

输出参量

全部折叠

父坐标区,以指向 MATLAB 图形对象的句柄形式返回,若为多边形则返回修改后的补片对象。若输入地理结构或 shapefile 名称,geoshow 将返回 hggroup 对象的句柄,该对象为地理结构或 shapefile 中的每个要素创建一个子对象,但完全被裁剪掉的要素除外。对于多边形地理结构或 shapefile,每个子节点都是一个修改后的补片对象;否则,它是一个线对象。

提示

  • 调用 shaperead 读取包含经纬度坐标的文件时,请务必指定 shaperead 参数对 'UseGeoCoords',true。若未包含此参数,shaperead 将创建一个映射结构,其坐标字段将标记为 XY,而非 LonLat。在这种情况下,geoshow 假定该地理结构体实际上是一个包含投影坐标的地图结构体,发出警告后,调用 mapshow 在不进行投影的情况下显示地理结构体数据。

  • 若不希望 geoshow 在现有地图上绘制,请在调用前创建新图窗或子图。

  • 当您使用 geoshow 在基于 axesm 的地图中显示矢量数据时,不应随后使用 setm 更改地图投影。不过,您可以使用 setm 命令更改栅格数据的投影。有关详细信息,请参阅Change Map Projections When Using geoshow

  • 若显示多边形,请勿将 'EdgeColor' 设置为 'flat''interp'。这种组合可能会导致警告。

  • 在将数据投影到基于 axesm 的地图时,geoshow 会使用存储在基于 axesm 的地图中的投影。在常规坐标区上显示时,它会构建一个默认的正方形投影,其比例因子为 180/pi,从而能够直接读取以度为单位的坐标。

  • 当向 geoshow 函数传递两个点时,该函数会将每个点的位置投影到地图上,并显示一条连接两点的直线,无论地图投影方式或两点间距如何。要显示两点间投影的大地线或恒向线曲线,需先使用 track2 函数插入中间点。

  • geoshow 通常可替代 displaym 使用。然而,在显示特定对象方面存在局限性。更多信息请参阅 updategeostruct 下的说明。

  • 当使用 geoshow 在地图中显示栅格数据时,靠近东侧或西侧边缘的列可能无法显示。这种现象通常不易察觉,除非栅格相对于显示区域过于粗糙。若需在显示中添加更多列,可尝试以下方法:

    • 将网格调整为更精细的网格。

    • 确保单元边界与地图边界对齐。

    • 扩展地图边界。

版本历史记录

在 R2006a 之前推出

全部展开