主要内容

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

mapshow

显示无投影的地图数据

说明

mapshow(x,y) 将坐标向量 xy 显示为直线。可通过使用 DisplayType 名称-值对参数,选择性地将坐标向量显示为点或多边形。

示例

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

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

mapshow(x,y,Z) 显示一个地理定位数据网格,Z。您可通过使用 DisplayType 名称-值对参数,选择性地将数据以曲面、网格、纹理贴图或等高线形式显示。

mapshow(Z,R) 显示一个常规数据网格 Z,其参考对象为 R。您可通过使用 DisplayType 名称-值对参数,选择性地将数据以曲面、网格、纹理贴图或等高线形式显示。若 DisplayType 等于 'texturemap',则 mapshow 将图像作为纹理贴图显示在零高程表面上(通过将 ZData 值设为 0 实现)。

示例

mapshow(x,y,I)

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

mapshow(I,R)

mapshow(X,cmap,R) 通过参考对象 R 显示一张与地图坐标系关联的图像。如果显示几何结构允许,mapshow 函数将构造一个图像对象。否则,mapshow 将图像作为纹理贴图显示在零高程表面上(通过将 ZData 值设为 0)。

示例

mapshow(filename) 根据文件格式类型显示指定文件中的数据。

mapshow(___,Name,Value) 通过使用名称-值对参数来设置 DisplayTypeSymbolSpec 参数,从而修改显示的地图。您还可以使用名称-值对设置任何 MATLAB® 图形属性。参数名称可以缩写,且不区分大小写。

示例

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

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

示例

全部折叠

将波士顿道路叠加在正射影像图上。请注意,mapshow 会在坐标区中绘制新图层,而非替换其内容。

显示图像。

figure
mapshow boston.tif
axis image off manual

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

将波士顿道路数据转换为测量英尺单位,并叠加在正射影像图上。

S = shaperead('boston_roads.shp');
surveyFeetPerMeter = unitsratio('sf','meter');
x = surveyFeetPerMeter * [S.X];
y = surveyFeetPerMeter * [S.Y];
mapshow(x,y)

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

将包含马萨诸塞州康科德市道路网段的 shapefile 导入为地理空间表。使用虚线显示道路路段。

roads = readgeotable("boston_roads.shp");
figure
mapshow(roads,"LineStyle",":")

Figure contains an axes object. The axes object contains 2795 objects of type line.

创建符号规范以区分不同类型的道路。例如,您可以通过关闭其可见性来隐藏非常次要的道路(CLASS=6),并通过增加其线宽来使主要道路(CLASS=1-4)更清晰可见。该符号规范还采用颜色区分不同类型的道路。

roadspec = makesymbolspec('Line',...
                          {'ADMIN_TYPE',0,'Color','cyan'}, ...
                          {'ADMIN_TYPE',3,'Color','red'},...
                          {'CLASS',6,'Visible','off'},...
                          {'CLASS',[1 4],'LineWidth',2});

使用符号规范显示矢量数据。

figure
mapshow('boston_roads.shp','SymbolSpec',roadspec);

Figure contains an axes object. The axes object contains 2461 objects of type line.

创建符号规范并指定线条使用的默认颜色。如前例所示,默认颜色为蓝色。此示例将默认值设置为黑色。

roadspec = makesymbolspec('Line',...
                              {'Default', 'Color', 'black'}, ...
                              {'ADMIN_TYPE',0,'Color','c'}, ...
                              {'ADMIN_TYPE',3,'Color','r'},...
                              {'CLASS',6,'Visible','off'},...
                              {'CLASS',[1 4],'LineWidth',2});

使用符号规范显示矢量数据。请注意,前例中以蓝色显示的主要道路现已变为黑色。

figure
mapshow('boston_roads.shp','SymbolSpec',roadspec);

Figure contains an axes object. The axes object contains 2461 objects of type line.

创建符号规范,设置各种属性。

roadspec = makesymbolspec('Line',...
                              {'Default', 'Color', 'yellow'}, ...
                              {'ADMIN_TYPE',0,'Color','c'}, ...
                              {'ADMIN_TYPE',3,'Color','r'},...
                              {'CLASS',6,'Visible','off'},...
                              {'CLASS',[1 4],'LineWidth',2});

显示矢量数据,并在命令行中指定颜色。

figure
mapshow('boston_roads.shp', 'Color', 'black', 'SymbolSpec', roadspec);

Figure contains an axes object. The axes object contains 2461 objects of type line.

导入马萨诸塞州康科德市的正射影像,同时导入地图单元参考对象和颜色图。使用 mapshow 函数显示正射影像。

[ortho,R,cmap] = readgeoraster("concord_ortho_w.tif");
mapshow(ortho,cmap,R) 

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

导入并显示一个多边形,该多边形代表正射影像图中央的池塘。

将包含康科德水文数据的 shapefile 导入为地理空间表。创建一个子表,其中包含该表的第 14 行,即包含池塘的那一行。通过查询表的 Shape 变量,验证子表是否包含多边形数据。

hydro = readgeotable("concord_hydro_area.shp");
pond = hydro(14,:);
pond.Shape
ans = 
  mappolyshape with properties:

              NumRegions: 1
                NumHoles: 3
                Geometry: "polygon"
    CoordinateSystemType: "planar"
            ProjectedCRS: [1×1 projcrs]

在正射影像上显示多边形。

mapshow(pond,"FaceColor","c")

Figure contains an axes object. The axes object contains 2 objects of type patch, image.

读取华盛顿山 SDTS 地形数据。通过将输出类型指定为 "double" 来准备绘图数据。

[Z,R] = readgeoraster("MtWashington-ft.grd",OutputType="double");

将地形数据视为网格。使用 demcmap 函数为地形数据应用合适的颜色图。

figure
mapshow(Z,R,DisplayType="mesh")
demcmap(Z)

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

将地形数据视为一个表面。

figure
mapshow(Z,R,DisplayType="surface")
demcmap(Z)

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

将地形数据视为三维表面。

view(3)
axis normal

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

读取华盛顿山和达特茅斯山的地形数据文件。通过将输出类型指定为 "double" 来准备绘图数据。

[ZWash,RWash] = readgeoraster("MtWashington-ft.grd",OutputType="double");
[ZDart,RDart] = readgeoraster("MountDartmouth-ft.grd",OutputType="double");

通过将 ZData 名称-值参数指定为零矩阵,在地形图中显示等高线和标签下的地形数据。使用 demcmap 函数为地形数据应用合适的颜色图。

hold on
mapshow(ZWash,RWash,DisplayType="surface",ZData=zeros(RWash.RasterSize))
mapshow(ZDart,RDart,DisplayType="surface",ZData=zeros(RDart.RasterSize))
axis equal
demcmap(ZWash)

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

叠加黑色等高线和标签。

mapshow(ZWash,RWash,DisplayType="contour",LineColor="k",ShowText="on")
mapshow(ZDart,RDart,DisplayType="contour",LineColor="k",ShowText="on")

Figure contains an axes object. The axes object contains 4 objects of type surface, contour.

输入参数

全部折叠

xy 坐标,指定为数值向量或 M×N 数值矩阵。xy 必须具有相同大小。若 xy 为矩阵,则表示坐标数组或地图坐标系下的地理位置数组。xy 可能包含嵌套的 NaN 结构,用于划分单条线段或多边形部件。

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

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

  • 一个 mappoint 向量。

  • 一个 mapshape 向量。

  • 一个具有 XY 坐标字段的地图结构体数组 (mapstruct)。

mapshow 函数假定坐标为地图坐标。

若指定了 geopoint 向量、geoshape 向量或包含 LatLon 坐标字段的地理结构体数组 (geostruct),则 mapshow 函数将使用普拉德投影法进行坐标投影,并发出警告。若指定包含 geopointshapegeolineshapegeopolyshape 对象的地理空间表,则 mapshow 函数将抛出错误。在这些情况下,请改用 geoshow 函数。

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

数据类型: double

地图坐标,指定为以下选项之一。有关参考矩阵的更多信息,请参阅Georeferenced Raster Data

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

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

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

矩阵

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

[x y] = [row col 1] * R

真彩色、灰度或二值图像,其中真彩色图像指定为 M×N×3 数组,灰度或二值图像指定为 M×N 数组。xy 必须是 M×N 数组。

索引图像,其颜色映射由 cmap 定义,指定为 M×N 数组。xy 必须是 M×N 数组。

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

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

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

数据类型: char | scalar

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

名称-值参数

全部折叠

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

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

示例: 'DisplayType','point'

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

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

DisplayType 的有效值取决于地图数据的格式。例如,如果地图数据是地理定位图像或地理参考图像,那么 DisplayType 的唯一有效值是 'image'

不同显示类型支持不同的地图数据类类型:

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

用于显示矢量数据的符号化规则,指定为由 makesymbolspec 返回的 symbolSpec 结构体。当同时指定 SymbolSpec 和一个或多个图形属性时,图形属性将覆盖 symbolSpec 结构中的任何设置。

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

输出参量

全部折叠

父坐标区,以指向 MATLAB 图形对象的句柄形式返回,若为多边形则返回修改后的补片对象。若输入地图结构或 shapefile 名称,mapshow 将返回指向 hggroup 对象的句柄,该对象为每个地图结构或 shapefile 中的特征创建一个子对象。对于多边形地图结构或 shapefile 而言,每个子节点都是一个修改过的补片对象;否则则为线对象。

提示

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

  • 您可以使用 mapshowaxesm 图窗中显示矢量数据。然而,您不应随后使用 setm 更改地图投影。

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

版本历史记录

在 R2006a 之前推出

全部展开