主要内容

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

gshhs

读取全球自洽分层高分辨率地理 (GSHHG) 数据

说明

S = gshhs(filename) 从文件中读取 全球自洽分层高分辨率地理数据集 (GSHHG) 向量数据。

示例

S = gshhs(filename,latlim,lonlim) 读取位于 latlimlonlim 指定的经纬度范围内的数据。

indexFilename = gshhs(filename,"createindex") 会创建一个名为 indexFilename 的索引文件,该文件可使 gshhs 函数更快速地读取大型数据集的子集。创建索引文件后,gshhs 函数便会利用该文件按位置访问数据。

此语法无法读取 GSHHG 数据。在创建索引文件后,若要读取数据,请再次使用 gshhs 函数。

示例

示例

全部折叠

从一个 GNU 压缩文件中提取包含粗略 GSHHG 数据的文件。将文件作为地理数据结构数组读入工作区。

filename = gunzip("gshhs_c.b.gz");
S = gshhs(filename{1});

请确认结构数组中的所有元素均表示多边形。

isequal(S.Geometry,"Polygon")
ans = logical
   1

查询结构数组中多边形的数量。

length(S)
ans = 
1866

从结构数组中提取多边形的纬度和经度坐标。然后,在世界地图上用线条显示这些数据。

lat = [S.Lat];
lon = [S.Lon];

figure
worldmap world
geoshow(lat,lon,"DisplayType","line")

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

找出分别对应陆地 (levels == 1) 和湖泊 (levels == 2) 的多边形。绘制一张欧洲地图,将陆地部分标为绿色,湖泊部分标为蓝色。

levels = [S.Level];
land = (levels == 1);
lake = (levels == 2);

figure
worldmap europe
geoshow(S(land),"FaceColor","#d2e9b8")
geoshow(S(lake),"FaceColor","b")

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

从一个 GNU 压缩文件中提取包含粗略 GSHHG 数据的文件。为数据创建索引。

filename = gunzip("gshhs_c.b.gz");
indexFilename = gshhs(filename{1},"createindex");

将非洲周边地区的数据作为地理数据结构数组读入工作区。gshhs 函数利用索引来更快地读取数据。

latlim = [-40 40];
lonlim = [-20 55];
S = gshhs(filename{1},latlim,lonlim);

将数据显示在世界地图上。要显示陆地区域内的湖泊和岛屿,请按 Level 字段对结构数组进行降序排序。

[~,ix] = sort([S.Level],"descend");
S = S(ix);

figure
worldmap(latlim,lonlim)
geoshow(S,"FaceColor","#d2e9b8")
setm(gca,"FFaceColor","#9dd7ee")

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

输入参数

全部折叠

GSHHG 文件的名称,指定为字符向量或字符串标量。

文件名必须采用以下其中一种形式:

  • "gshhs_x.b"

  • "wdb_borders_x.b"

  • "wdb_rivers_x.b"

x 必须是 clihf。这些字母对应于文件的分辨率。

数据类型: char | string

纬度限制,指定为空向量 ([]) 或以度为单位的两元素向量。

当您将 latlim 指定为空向量时,gshhs 函数会读取位于纬度范围 [-90 90] 内的数据。

当将 latlim 指定为一个包含两个元素的向量时,latlim(1) 的值必须小于 latlim(2) 的值。

数据类型: double

经度边界,指定为空向量 ([]) 或以度为单位的两元素向量。

当您将 lonlim 指定为空向量时,gshhs 函数会读取经度范围 [-180 195] 内的数据。

当将 lonlim 指定为一个包含两个元素的向量时,lonlim(1) 的值必须小于 lonlim(2) 的值。

数据类型: double

输出参量

全部折叠

地理数据结构,以结构体数组的形式返回,包含以下字段:

字段

描述

Geometry

几何类型,返回值为 'Line''Polygon'

BoundingBox

边界框,以 [minLon minLat; maxLon maxLat] 形式的 2×2 矩阵返回。值 minLonminLat 分别表示最小经度和纬度。值 maxLonmaxLat 分别表示最大经度和纬度。

Lon

经度坐标,以数值向量的形式返回。

Lat

纬度坐标,以数值向量的形式返回。

South

南纬度边界,返回值为数值标量。

North

北纬边界,返回值为数值标量。

West

西经边界,返回值为数值标量。

East

东经边界,返回值为数值标量。

Area

多边形的面积(单位:平方公里),以数值标量形式返回。

Level

拓扑层次结构中的层级,以 [1, 4] 范围内的整数形式返回。

LevelString

拓扑层次结构中的层级,返回值为 'land''lake''island_in_lake''pond_in_island_in_lake'''

读取 WDB 河流和边界数据集时,LevelString 字段为空。

NumPoints

多边形中的点数,返回值为非负整数。

FormatVersion

数据文件的格式版本,返回值为以下值之一:

  • 一个正整数——表示版本 3 或更高版本。

  • 空 — 表示版本 1 或 2。

Source

数据源,返回值为以下值之一:

  • 'WDBII' — 中情局世界数据银行 II

  • 'WVS' — 全球向量海岸线

CrossesGreenwich

表示多边形是否穿越本初子午线的指标;当多边形穿越本初子午线时,返回值为 1;否则返回 0

GSHHS_ID

唯一的多边形 ID,以非负整数形式返回。

FormatVersion 的值不小于 7 时(2.0 版及更高版本),该结构数组将包含以下附加字段。

字段

描述

RiverLake

河流-湖泊指标,当多边形为主要河流的宽阔段且 Level 的值是 2 时,返回值为 1;否则返回 0

AreaFull

原始全分辨率多边形的面积,以 110km2 为单位的数值标量形式返回。

Container

容器多边形的 ID,返回值为非负整数或-1。值 -1 表示该多边形没有容器(例如,Level 的值为 1)。

Ancestor

祖先全分辨率多边形的 ID,返回值为非负整数或-1-1 的值表示该多边形没有父节点。

FormatVersion 的值不小于 9 时(2.2 版及更高版本),结构体数组中将包含此额外字段。

字段名称

字段内容

CrossesDateline

表示多边形是否跨越国际日期变更线的指标;当多边形跨越本初子午线时,返回值为 1;否则返回 0

索引文件的名称,以字符向量的形式返回。

索引文件的名称与 GSHHG 数据文件相同,但扩展名是 i 而不是 b。该函数将文件写入与 filename 位于同一文件夹中。

详细信息

全部折叠

提示

  • Mapping Toolbox™ 包含在 GNU 压缩文件 gshhs_c.b.gz 中的文件 gshhs_c.b。该文件包含第 3 版(1.3 版)的粗略数据集。

  • 当读取处于指定范围内的数据时,gshhs 函数不会对部分位于该范围内的数据进行裁剪。若要裁剪数据并保持多边形拓扑结构,请使用 maptrimp 函数,并将 S 中包含的 LatLon 字段指定为裁剪边界。

  • gshhs 函数支持最高至第 15 版的文件(版本号为 1.1 至 2.3.6)。只要新版本采用与 2.0 和 2.1 版本相同的头信息格式,该函数也能读取这些新版本。

版本历史记录

在 R2006a 之前推出