xyz2grd

官方文档:xyz2grd
简介:将XYZ数据或Z数据转换成网格文件

该命令读取一个或多个Z数据或XYZ数据,并将其转换成二进制网格文件。

  • 若某些节点没有数据值,则这些节点会被赋值为NaN
  • 若某个节点由多个数据值,则该节点的值为所有数据点的平均值

需要注意,该模块只是将已存在的数据转换为网格数据,并不具备网格化/插值功能。 若需要网格化功能,可以使用模块 surfacegreensplinenearneighbortriangulate

必选选项

<table>
输入表数据。可以只包含Z值,也可以包含 (x,y,z) 值。可以是ASCII格式,也可以 是二进制格式。XYZ数据不要求排序,Z数据则必须排序,且必须使用 -Z 选项。
-G<grdfile>
生成的网格文件名
-I<xinc>[<unit>][+e|+n]/<yinc>[<unit>][+e|+n]

指定X和Y方向的网格间隔

  • <xinc> X方向的网格间隔
  • <yinc> Y方向的网格间隔
  • <unit> 网格间隔的单位。对于地理坐标系而言默认值为度,可以设置单位为 m|s|e|f|k|M|n|u
  • +e 微调X和Y方向范围的最大值,使得其是网格间隔的整数倍(默认会微调 网格间隔以适应给定的数据范围)
  • +n 表明 <xinc><yinc> 不是网格间隔,而是X和Y方向的节点数。 此时会根据节点数、网格区域范围以及网格配准方式重新计算网格间隔。

注意:

  1. <yinc> 设置为0,则表示其与 <xinc> 相同
  2. 若使用 -R<grdfile> 选项,则网格网格已经根据网格文件自动初始化,此时 依然可以使用 -I 覆盖网格文件中的间隔值

可选选项

-A[d|f|l|m|n|r|s|S|u|z]

多个数据落在同一个网格节点内时的处理方式。

默认情况下,若有多个数据落在同一个网格节点内,会将这些数据的均值作为该 节点的值。使用该选项可以控制这一行为:

  • -Af 将第一个落在该节点内的数据值作为节点值
  • -As 将最后一个落在该节点内的数据值作为节点值
  • -Al 将落在该节点内的所有值的最小值作为节点值
  • -Au 将落在该节点内的所有值的最大值作为节点值
  • -Ad 将落在该节点内的所有值的最大值和最小值的差作为节点值
  • -Am 将落在该节点内的所有值的均值作为节点值
  • -Ar 将落在该节点内的所有值的RMS值作为节点值
  • -AS 将落在该节点内的所有值的标准差作为节点值
  • -An 将落在该节点内的数据数目作为该节点值,该选项仅要求输入数据中有XY值
  • -Az 将落在该节点内的所有值的和作为节点值
-D[+x<xname>][+y<yname>][+z<zname>][+s<scale>][+o<offset>][+n<invalid>][+t<title>][+r<remark>]

修改网格文件头段中的基本信息:

  • +x<xname> X变量名及其单位,格式为 varname [unit] ,比如 "distance [km]"
  • +s<scale> 读入网格数据后要乘以的因子,默认值为 1
  • +o<offset> 读入数据后并乘以因子后要加入的常数,默认值为 0
  • +n<invalid> 指定特定的数用于表示该节点处无有效值,默认为NaN
  • +t<title> 网格文件的标题
  • +r<remark> 网格文件的注释信息

其他说明:

  1. 未指定的项其值保持不变
  2. 可以给一个空值以重值某一项,比如使用 +t 而不指定标题则设置标题为空
  3. 若文本中包含空格则需要用引号括起来
  4. 对于地理数据(比如 -fg )而言, <xname><yname> 会自动设置
-S[<zfile>]
对输入的Z文件做字节序转换并输出到标准输出或保存到文件 <zfile> 中。 该选项只做字节序转换,不生成网格文件。该选项必须与 -Z 选项连用。
-Z[<flags>]

指定Z数据的格式。

对于Z数据而言,由于没有XY坐标信息,因而Z数据中必须提供所有节点处的值且按照 一定的顺序排列。

在确定数据的排列顺序时,需要指定数据的起点以及数据排序的方向。

  1. 数据起点:可以取网格的四个顶点中的任意一个作为起点,四个顶点分别用 TL、 TR、BL和BR表示,其中T代表Top,B代表Bottom,L代表Left,R代表Right。
  2. 排序方向:选取数据顶点之后,数据可以是行优先也可以是列优先,所以有两种 排序方式。若是行优先,则T|B位于L|R的前面;若列优先,则L|R位于T|B的前面。

对于网格线配准的数据,若数据在X方向是周期性的但输入数据中并不包含x=xmax处的 冗余列,则加上 x;若数据在Y方向是周期性的但输入数据中并不包含y=ymax处的 冗余行,则加上 y;加上 s<n> 用于跳过数据中最前面的 <n> 个字节; 若需要转换数据的字节序,则加上 w

除此之外,还需要再加上一个字符表征数据类型:

  • A: ASCII表示,每行一个或多个浮点数
  • a: ASCII表示,每行一项,不仅可以处理浮点数还可以处理日期时间数据和经纬度数据
  • c: int8_t,有符号单字节字符
  • u: uint8_t,无符号单字节字符
  • h: int16_t,有符号双字节整型
  • H: uint16_t,无符号双字节整型
  • i: int32_t,有符号四字节整型
  • I: uint32_t,无符号四字节整型
  • l: int64_t,长整型(8字节)
  • L: uint64_t,无符号长整型(8字节)
  • f: 4字节单精度浮点型
  • d: 8字节双精度浮点型

默认的输入数据格式为 -ZTLa 。需要注意, -Z 选项仅对Z数据有效。

示例

将ASCII文件转换为网格数据:

gmt xyz2grd hawaii_grv.xyz -D+xdegree+ydegree+zGal+t"Hawaiian Gravity"+r"GRS-80 Ellipsoid used" \
    -Ghawaii_grv_new.nc -R198/208/18/25 -I5m -V

将二进制格式的XYZ文件(单精度)转换为网格文件:

gmt xyz2grd raw.b -D+xm+ym+zm -Graw.nc -R0/100/0/100 -I1 -V -Z -bi3f

将USGS DEM数据转换为网格数据:

gmt xyz2grd topo30.b -D+xm+ym+zm -Gustopo.nc -R234/294/24/50 -I30s -di-9999 -ZTLhw