readgeoraster
读取地理空间栅格数据文件
语法
说明
示例
读取波士顿的 GeoTIFF 图像,将其作为数组和地图单元参考对象。该数组大小为 2881×4481×3,分别指定了图像的红、绿、蓝三色分量。使用 mapshow 函数显示图像。
[A,R] = readgeoraster("boston.tif");
mapshow(A,R)
The data used in this example includes material copyrighted by GeoEye, all rights reserved.
读取并显示夏威夷欧胡岛的土地覆盖分类图。
首先,将土地覆盖数据读取为数组、地图单元参考对象和颜色图。A 的元素用于索引颜色图。颜色图的每一行都指定了单一颜色的红、绿、蓝三原色分量。然后,显示土地覆盖数据。
[A,R,cmap] = readgeoraster("oahu_landcover.img");
mapshow(A,cmap,R)
本示例所用数据由美国国家海洋和大气管理局 (NOAA) 提供。
读取并显示科罗拉多州南博尔德峰周边区域的高程数据。
将高程数据读取为数组和地理坐标参考对象。要将数据以曲面形式显示,geoshow 函数需要 double 或 single 类型的数据。在此情况下,通过将输出类型指定为"double""来保持精度。
[A,R] = readgeoraster("n39_w106_3arc_v2.dt1",OutputType="double");
通过指定数据的纬度和经度范围来创建地图。然后,使用 geoshow 函数将数据以曲面形式显示。使用 demcmap 函数为高程数据应用合适的颜色图。
latlim = R.LatitudeLimits;
lonlim = R.LongitudeLimits;
usamap(latlim,lonlim)
geoshow(A,R,DisplayType="surface")
demcmap(A)
本示例所用高程数据由美国地质调查局提供。
自 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;将数据作为表面显示在基于 axesm 的地图上。更改颜色图并添加带标签的颜色栏。
figure worldmap(A,R) mlabel off plabel off geoshow(A,R,DisplayType="surface") colormap abyss c = colorbar; c.Label.String = "Sea ice concentration (%)";

[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.
输入参数
名称-值参数
将可选参量对组指定为 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- 当文件指定了缺失数据标记符,且函数使用single或double数据类型创建A时,将匹配缺失数据标记符的值替换为NaN值。有关缺失数据指示符的更多信息,请参阅RasterInfo对象的MissingDataIndicator属性。false- 不要替换与缺失数据标记匹配的值。
在 R2025a 之前的版本中: 当 A 的类型为 single 或 double 时,可使用 georasterinfo 和 standardizeMissing 函数替换缺失数据。
[A,R] = readgeoraster(filename,OutputType="double");
info = georasterinfo(filename);
m = info.MissingDataIndicator;
A = standardizeMissing(A,m);输出参量
地理参考图像或数据网格,以 M×N 或 M×N×P 数值数组形式返回。
对于大多数格式,A 的默认数据类型与嵌入在 filename 中的本机数据类型相匹配。对于 GRIB 文件,默认数据类型 A 为 double。使用 OutputType 名称-值参数指定数据类型。
无论数据如何编码,第一行 A 代表最北端数据,最后一行 A 代表最南端数据。
空间参考对象 A,返回值为 GeographicCellsReference 对象、GeographicPostingsReference 对象、MapCellsReference 对象或 MapPostingsReference 对象。R 的值取决于 filename 中的数据:
如果
filename中的数据参考地理坐标系,则R是一个GeographicCellsReference对象或GeographicPostingsReference对象。如果
filename中的数据参考自投影坐标系,则R是MapCellsReference对象或MapPostingsReference对象。
如果文件中包含的信息不足以确定数据是投影数据还是地理数据,则 R 是一个 MapCellsReference 或 MapPostingsReference 对象。如果文件中不包含有效的空间参考信息,则 R 为空。您可以通过使用 CoordinateSystemType 名称-值参数,将空间参考指定为 "geographic" 或 "planar"。
与索引图像关联的颜色图,以 n×3 数值矩阵形式返回,其值范围为 [0,1]。cmap 的每行都是一个三元素 RGB 三元组,用于指定颜色图中单一颜色的红、绿、蓝三色分量。除非 A 是索引图像,否则 cmap 的值为空。
详细信息
readgeoraster 和 georasterinfo 函数支持这些文件格式。
GeoTIFF(
.tif或.tiff)Esri Binary Grid (
.adf)Esri ASCII Grid(
.asc或.grd)Esri GridFloat (
.flt)GRIB (
.grb,.grib,.grib2) (自 R2023b 起)DTED(
.dt0、.dt1或.dt2)SDTS (
.DDF)USGS DEM (
.dem)SRTM Height (
.hgt)Vertical Mapper Numeric Grid (
.grd)Vertical Mapper Classified Grid (
.grc)ER Mapper ERS (
.ers)ENVI (
.dat)ERDAS IMAGINE (
.img)Geospatially referenced JPEG 2000 (
.jp2) (自 R2023b 起)
文件的扩展名并不总是表明其文件格式。若您不清楚文件格式,请咨询您的数据提供方。在某些情况下,即使文件没有扩展名或使用了未列出的扩展名,您仍可读取支持格式的文件。
某些文件格式由一个数据文件和多个辅助文件组成。例如,Esri GridFloat 文件可能包含辅助头文件 (.hdr)。当使用 readgeoraster 或 georasterinfo 读取包含辅助文件的数据文件时,请指定数据文件的扩展名。
文件格式可能使用不同的名称进行标识。例如,Esri GridFloat 格式也可称为 Esri .hdr 标记格式或 ITT ESRI .hdr 原始栅格格式。Esri 二进制网格格式也可称为 ArcGrid 二进制格式、Esri ArcGIS 二进制网格或 Esri ArcInfo 网格。
提示
某些函数需要输入类型为
single或double的参数,例如用于显示曲面的geoshow函数。要将readgeoraster的输出用于这些函数,请通过OutputType名称-值参数将输出类型指定为"single"或"double"。无论文件格式如何,
readgeoraster返回的数组列从北侧开始,且参考对象的ColumnsStartFrom属性值为"north"。
版本历史记录
在 R2020a 中推出栅格数据集有时会使用一个称为缺失数据指示符的大数字来标记缺失数据值。当 readgeoraster 函数使用 single 或 double 数据类型创建 A 时,该函数会将匹配缺失数据指示符的值替换为 NaN 值。在之前的版本中,该函数不会替换缺失的数据。
由于此变更,您可能需要更新您的代码。
若您使用
georasterinfo和standardizeMissing函数查找并替换缺失数据,则移除代码为可选操作。要更新您的代码,请移除对georasterinfo和standardizeMissing函数的调用。此表展示了一种可选的替换策略。原始代码 更新后的代码 [A,R] = readgeoraster(filename,OutputType="double"); info = georasterinfo(filename); m = info.MissingDataIndicator; A = standardizeMissing(A,m);[A,R] = readgeoraster(filename,OutputType="double");当您使用诸如
min或max等函数查找并替换缺失数据时,必须更新您的代码。否则,您的代码可能会覆盖有效数据。要更新代码,请删除用于查找并替换缺失数据的计算部分。本表展示了若干常见的代码模式及其替换策略。原始代码 更新后的代码 [A,R] = readgeoraster(filename,OutputType="double"); m = min(A,[],"all"); A(A == m) = NaN;
[A,R] = readgeoraster(filename,OutputType="double");[A,R] = readgeoraster(filename,OutputType="double"); m = max(A,[],"all"); A = standardizeMissing(A,m);
[A,R] = readgeoraster(filename,OutputType="double");
您可以通过将名称-值参数 StandardizeMissing 指定为 false,来阻止 readgeoraster 替换缺失的数据。
readgeoraster 函数能够读取采用空间数据系统咨询委员会 (CCSDS) 压缩格式的 GRIB 文件,该格式遵循 CCSDS 推荐标准 121.0-B-3 的定义。
readgeoraster 函数支持 int8、int64 和 uint64 数据类型。
readgeoraster 函数可读取 GRIB 格式文件中的数据(.grb、.grib、.grib2)。
readgeoraster 函数可读取 JPEG 2000 格式文件中的地理空间数据 (.jp2)。
readgeoraster 函数在读取多波段数据时表现出更优的性能。
例如,这段代码创建一个包含 225 个波段的 GeoTIFF 文件,然后使用 readgeoraster 函数读取该文件。读取文件的代码速度比前一版本快了约 55 倍。
function timingTest % Create a GeoTIFF file A1 = ones(180,360,225,"uint8"); R1 = georefcells([-90 90],[-180 180],size(A1)); geotiffwrite("mytif.tif",A1,R1) tic [A2,R2] = readgeoraster("mytif.tif"); toc delete mytif.tif end
大致的执行时间为:
R2023b:0.062 秒
R2023a:3.43 秒
该代码在搭载 Windows® 10 核 Intel® Xeon® CPU W-2133 @ 3.6 GHz 的测试系统上进行了计时,通过调用函数 timingTest 完成。
readgeoraster 函数可读取扩展名为 .hgt 的 SRTM 高程数据文件。
readgeoraster 函数能够读取垂直映射器数值网格和垂直映射器分类网格格式的数据。
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)