主要内容

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

readgeoraster

读取地理空间栅格数据文件

说明

[A,R] = readgeoraster(filename) 通过读取地理或投影栅格数据创建数组,数据源文件格式包括 GeoTIFF、Esri 二进制网格、GRIB 或 DTED 等。输出参量 R 是该数组的栅格参考。有关支持格式的完整列表,请参阅 支持的格式

示例

[A,R] = readgeoraster(___,Name=Value) 使用一个或多个名称-值参数指定选项。

示例

[___,cmap] = readgeoraster(___) 还返回 A 的颜色图。

示例

示例

全部折叠

将波士顿的 GeoTIFF 图像 [1] 作为数组和栅格引用对象读入工作区。该数组大小为 2881×4481×3,分别指定了图像的红、绿、蓝三色分量。

[A,R] = readgeoraster("boston.tif");

将该图像显示在地图上。

figure
geoimage(A,R)
geobasemap none

Figure contains an axes object with type geoaxes. The geoaxes object contains an object of type rasterimage.

[1] The data used in this example includes material copyrighted by GeoEye, all rights reserved.

读取并显示夏威夷欧胡岛的土地覆盖分类图。

将土地覆盖数据 [1] 作为数组、地图单元引用对象和颜色图读入工作区。A 的元素用于索引颜色图。颜色图的每一行都指定了单一颜色的红、绿、蓝三原色分量。

[A,R,cmap] = readgeoraster("oahu_landcover.img");

准备使用 geoimage 函数显示土地覆盖数据,方法是将数组和颜色图转换为 RGB 图像。

RGB = ind2rgb(A,cmap);

使用存储在参考对象中的投影坐标参考系 (CRS) 设置一张地图。将 RGB 图像显示在地图上。

figure
pcrs = R.ProjectedCRS;
newmap(pcrs)
geoimage(RGB,R)

Figure contains an axes object with type mapaxes. The mapaxes object contains an object of type rasterimage.

[1] 本示例中使用的数据由美国国家海洋和大气管理局 (NOAA) 提供。

读取并显示科罗拉多州南博尔德峰周边区域的高程数据。

将高程数据 [1] 作为数组和栅格参考对象读入工作区。

[A,R] = readgeoraster("n39_w106_3arc_v2.dt1");

使用适合科罗拉多州中部的投影坐标系绘制一张地图。使用 EPSG 权威代码 26954 创建 CRS,该代码采用兰伯特圆锥等角投影法。

figure
pcrs = projcrs(26954);
newmap(pcrs)

在地图上显示高程数据。应用适合高程数据的颜色图。添加一个颜色栏。

geopcolor(A,R)
demcmap(A)
colorbar

Figure contains an axes object with type mapaxes. The mapaxes object contains an object of type pseudocolorraster.

[1] 本示例中使用的高程数据来自美国地质调查局。

自 R2023b 起

GRIB 文件通常采用多波段存储数据。若您不确定应读取哪些频段,可查询 GRIB 文件中存储的元数据。

读取并显示 GRIB 文件中的一个波段的数据。该文件包含多年度的海冰浓度数据 [1][2],文件中的每条数据带对应不同年份。

通过创建一个 RasterInfo 对象来获取 GRIB 文件的信息。通过访问 RasterInfo 对象的 Metadata 属性获取元数据。

info = georasterinfo("seaice.grib");
metadata = info.Metadata;

RasterInfo 对象使用表格存储 GRIB 元数据,其中表格的每行对应文件中的一条数据带。找到包含 2016 年数据的带。

yrs = year(metadata.ReferenceTime);
band = find(yrs == 2016);

使用 readgeoraster 函数从带状区域读取数据。将浓度转换为百分比。

[A,R] = readgeoraster("seaice.grib",Bands=band);
A = A * 100;

使用适合北极地区的投影坐标系绘制一张地图。使用 EPSG 权威代码 5041 创建 CRS,该代码采用极地立体投影法。

figure
pcrs = projcrs(5041);
newmap(pcrs)

将数据显示在地图上。更改颜色图,添加标题,并添加色标。

geopcolor(A,R)

colormap abyss
title("Sea Ice Concentration (%)")
colorbar

Figure contains an axes object with type mapaxes. The mapaxes object contains an object of type pseudocolorraster.

[1] Hersbach, H., B. Bell, P. Berrisford, G. Biavati, A. Horányi, J. Muñoz Sabater, J. Nicolas, et al."ERA5 Hourly Data on Single Levels from 1940 to Present."Copernicus Climate Change Service (C3S) Climate Data Store (CDS), 2023.Accessed May 22, 2023. https://doi.org/10.24381/cds.adbb2d47.

[2] Neither the European Commission nor ECMWF is responsible for any use that may be made of the Copernicus information or data it contains.

输入参数

全部折叠

要读取的文件名,指定为字符向量或字符串标量。filename 的形式取决于文件所在的位置。

  • 如果文件位于当前文件夹或 MATLAB® 路径下的某个文件夹中,则指定文件名,例如 "myFile.dem"

  • 如果文件不在当前文件夹或位于 MATLAB 路径下的文件夹中,则需指定完整路径或相对路径名称,例如 "C:\myfolder\myFile.tif""dataDir\myFile.dat"

有关支持的文件格式列表,请参阅 支持的格式

数据类型: char | string

名称-值参数

全部折叠

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

示例: [A,R] = readgeoraster(filename,OutputType="double",Bands=1:2) 指定了 A 的数据值以及要读取的波段。

A 的数据类型,指定为包含以下值之一的字符向量或字符串标量:"native", "single", "double", "int8" (自 R2024b 起), "int16", "int32", "int64" (自 R2024b 起), "uint8", "uint16", "uint32""uint64" (自 R2024b 起)"logical"

OutputType 的默认值为 "native"。对于大多数格式,"native" 会使用文件中嵌入的原生数据类型返回 A。对于 GRIB 文件,"native" 使用 double 数据类型返回 A

使用除 "native" 以外的数据类型可能会导致精度损失。

数据类型: char | string

要读取的频段,指定为 "all"、一个正整数或一个正整数向量。例如,若指定值为 3,readgeoraster 将读取文件中的第三个频段。波段按指定顺序返回。

Bands 的默认值为 "all",其中 readgeoraster 会读取文件中的所有频段。

R 的坐标系类型,指定为以下值之一:

  • "auto" - 返回由文件内容决定的栅格参考对象 R

  • "geographic" - 将 R 作为地理单元或地理坐标参考对象返回。

  • "planar" - 将 R 作为映射单元或发布参考对象返回。

当您的数据不包含投影信息时,请指定坐标系类型。

自 R2025a 起

标准化缺失数据,指定为数值型或逻辑型 1(true) 或 0(false)。

  • true - 当文件指定了缺失数据标记符,且函数使用 singledouble 数据类型创建 A 时,将匹配缺失数据标记符的值替换为 NaN 值。有关缺失数据指示符的更多信息,请参阅 RasterInfo 对象的 MissingDataIndicator 属性。

  • false - 不要替换与缺失数据标记匹配的值。

在 R2025a 之前的版本中: 当 A 的类型为 singledouble 时,可使用 georasterinfostandardizeMissing 函数替换缺失数据。

[A,R] = readgeoraster(filename,OutputType="double");
info = georasterinfo(filename);
m = info.MissingDataIndicator;
A = standardizeMissing(A,m);

输出参量

全部折叠

地理参考图像或数据网格,以 M×NM×N×P 数值数组形式返回。

对于大多数格式,A 的默认数据类型与嵌入在 filename 中的本机数据类型相匹配。对于 GRIB 文件,默认数据类型 Adouble。使用 OutputType 名称-值参数指定数据类型。

无论数据如何编码,第一行 A 代表最北端数据,最后一行 A 代表最南端数据。

A 的栅格参考,以 GeographicCellsReference 对象、GeographicPostingsReference 对象、MapCellsReference 对象或 MapPostingsReference 对象的形式返回。栅格参考将 A 中的每个元素与地理坐标或投影坐标系中的某个位置相关联。

R 的值取决于 filename 中的数据:

  • 如果 filename 中的数据参考地理坐标系,则 R 是一个 GeographicCellsReference 对象或 GeographicPostingsReference 对象。

  • 如果 filename 中的数据参考自投影坐标系,则 RMapCellsReference 对象或 MapPostingsReference 对象。

如果文件中包含的信息不足以确定数据是投影数据还是地理数据,则 R 是一个 MapCellsReferenceMapPostingsReference 对象。如果文件中不包含有效的栅格引用信息,则 R 为空。您可以使用 CoordinateSystemType 名称-值参量,将栅格参考指定为 "geographic""planar"

与索引图像关联的颜色图,以 n×3 数值矩阵形式返回,其值范围为 [0,1]。cmap 的每行都是一个三元素 RGB 三元组,用于指定颜色图中单一颜色的红、绿、蓝三色分量。除非 A 是索引图像,否则 cmap 的值为空。

详细信息

全部折叠

提示

  • 某些函数需要输入类型为 singledouble 的参数,例如用于显示曲面的 geoshow 函数。要将 readgeoraster 的输出用于这些函数,请通过 OutputType 名称-值参数将输出类型指定为 "single""double"

  • 无论文件格式如何,readgeoraster 返回的数组列从北侧开始,且参考对象的 ColumnsStartFrom 属性值为 "north"

版本历史记录

在 R2020a 中推出

全部展开