✍️ 周茂 • 📅 2026-01-12

# sph2grd

官方文档:

  sph2grd

简介:

  使用球谐系数计算网格

sph2grd 模块利用球谐系数表文件计算特定的网格值。球谐系数模型的格式为 L，M，C[L，M]，S[L，M]

## 语法

gmt sph2grd [ table ] `-G` grdfile `-I` increment `-R` region [ `-D`[g|n] ] [ `-E` ] [ `-F`[k]filter ] [ `-N`[norm] ] [ `-Q` ] [ `-V`[level] ] [ `-bi` binary ] [ `-h` headers ] [ `-i` flags ] [ `-r` reg ] [ `-x`[[-]n] ] [ --PAR=value ]

## 输入数据

table

  一个或多个球谐系数文本文件 [ 或者二进制文件，见 -bi]。文件预期 的格式为四列，分别比表示阶 L，度 M，然后是余弦和正弦系数。

## 必须选项

-G

-G outgrid[=ID][+d divisor][+n invalid][+o offset|a][+s scale|a][:driver[dataType][+c options]]

> 输出网格文件名。通过追加 =ID 可指定 网格格式。 参数详细介绍请参考 写 netCDF 文件。

-I

-I xinc[+e|n][/yinc[+e|n]]

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

  - xinc 和 yinc 为 X 和 Y 方向的网格间隔。对于地理坐标，可以指定网格间隔单位 [默认单位为度]

  - +e 微调X和Y方向范围的最大值，使得其是网格间隔的整数倍（默认会微调 网格间隔以适应给定的数据范围）

  - +n 表明 xinc 和 yinc 不是网格间隔，而是X和Y方向的节点数。 此时会根据节点数、网格区域范围以及网格配准方式重新计算网格间隔。

  注意：

  - 若 yinc 设置为0，则表示其与 xinc 相同

  - 若使用 -R grdfile 选项，则网格间隔和配准方式已经根据网格文件自动初始化， 此时依然可以使用 -I 和 -r 覆盖相应的值

-R

-R xmin/xmax/ymin/ymax[+r][+u unit]

  指定数据范围。 (参数详细介绍)

## 可选选项

-D

-D[g|n]

  利用位模型计算场。-Dg 表示计算引力场，-Dn 表示计算大地水准 [ 同时使用 `-E` 选项将会计算基于椭球的场 ]。

-E

-E

  将参考从默认的球改变为椭球。

-F

-F[k]filter

  根据特定的滤波算法设定滤波参数，默认为球谐系数中的阶数 L ，使用 Fk 时， 滤波参数的单位为千米。可选的滤波算法包括： a) 余弦带通滤波：附加四个波长参数 lc/lp/hp/hc 。lc/hc 之外的系数被截断， lp/hp 范围内的则可以通过，其余部分将 tapering 。将波长替换为 - 可以跳过设置， 例如： `-F`-/-/50/75 为低通滤波。 b) 高斯带通滤波：附加两个波长参数 lo/hi，滤波 amplitudes 为 0.5 。将波长替换为 - 可以跳过设置，例如： `-F`70/- 为高通高斯滤波。

-N

-N[norm]

  对球谐系数使用规格化。可选的规格化方法包括：

  - m 数学正规格化化：表面内积和为 1 (默认)。

  - g 大地测量规格化：表面内积和为 4pi 。

  - s 施密特规格化：和地磁学中相同。

-Q

-Q

  系数采用物理学中的相位约定，即 \((-1)^m\) 因子。

-V

-V[level]

  设置 verbose 等级 [w]。 (参数详细介绍)

-bi

-bi[ncols][type][w][+l|b]

  控制二进制文件的输入格式。 (参数详细介绍)

-h

-h[i|o][n][+c][+d][+m segheader][+r remark][+t title]

  在读/写数据时跳过文件开头的若干个记录。 (参数详细介绍)

-i

-i cols[+l][+s scale][+o offset][,...][,t[word]]

  对输入的数据进行列选择以及简单的代数运算。 (参数详细介绍)

-r

-r[g|p]

  设置网格配置方式 [默认为网格线配准]。 (参数详细介绍)

-x

-x[[-]n]

  限制多核算法中能使用的核数（需要GMT开启OpenMP支持）。 (参数详细介绍)

-^ 或 -

  显示简短的帮助信息，包括模块简介和基本语法信息（Windows下只能使用 -）

-+ 或 +

  显示帮助信息，包括模块简介、基本语法以及模块特有选项的说明

-? 或无参数

  显示完整的帮助信息，包括模块简介、基本语法以及所有选项的说明

--PAR=value

  临时修改GMT参数的值，可重复多次使用。参数列表见 配置参数

## 网格值精度

不管输入数据的精度如何，创建网格文件的 GMT 程序将在内部以 4 字节浮点数组的形式保存网格。 这样做是为了节省内存，而且大多数实际数据都可以使用 4 字节浮点值存储。 具有更高精度的数据（即双精度值）将在 GMT 操作网格或写入新网格时失去该精度。 为了限制处理数据时的精度损失，用户应该始终考虑在处理之前对数据进行归一化。

## 地理坐标和时间坐标

当输出文件为 netCDF 格式时，根据输入数据、网格或者 -f 以及 -R 选项，会自动将输出坐标命名为“longitute”，“lattitude” 或者 “time”。例如： -f0x -f1t 和 -R90w/90e/0t/3t 都会生成 longitude/time 网格。 当 x，y 或者 z 坐标为时间时，在网格中将会存储为相对时间，其相对于 TIME_EPOCH 和 TIME_UNIT 指定的历元。其中时间变量的单位 属性将会默认与上述两个参数一致。

## 示例

使用 EGM96_to_36.txt 球谐系数文件创建 1 x 1 度全球网格:

    gmt sph2grd @EGM96_to_36.txt -GEGM96_to_36.nc -Rg -I1 -V

## 参考文献

Holmes, S. A., and Featherstone, W. E., 2002, A unified approach to the Clenshaw summation and the recursive computation of very high degree and order normalized associated Legendre functions: J. Geodesy, v. 76, p. 279-299.

## 相关模块

grdfft, grdmath