✍️ 何星辰 • 📅 2025-10-18

# grdrotater

官方文档:

  grdrotater

简介:

  地理网格的有限旋转重构

grdrotater 读取一个地理网格，并根据给定的总重建旋转参数对其进行重建。 用户可以提供一个多段线格式的裁剪多边形文件； 此时仅使用该多边形内的网格区域来确定重建后的区域范围。 如果旋转区域不是整个地球，还会返回重建区域的轮廓线。

## 语法

gmt grdrotater ingrid `-E` rot_file|lon/lat/angle[+i] `-G` outgrid [ `-A` region ] [ `-D` rotoutline ] [ `-F` polygonfile ] [ `-N` ] [ `-R` region ] [ `-S` ] [ `-T` ages ] [ `-V`[level] ] [ `-bi` binary ] [ `-bo` binary ] [ `-d` nodata[+c col] ] [ `-f` flags ] [ `-g` gaps ] [ `-h` headers ] [ `-n` flags ] [ `-o` flags ] [ `-:`[i|o] ] [ --PAR=value ]

## 输入数据

ingrid[=ID|?varname][+b band][+d divisor][+n invalid][+o offset][+s scale]

> 输入网格名。通过追加 =ID 可指定 网格格式 [默认为 =nf]。 追加 ?varname 可指定 NetCDF 变量 [默认为 GMT 找到的第一个 2-D 网格]。 参数详细介绍请参考 读 netCDF 文件。

## 必须选项

-E

-E rot_file|ID1-ID2|lon/lat/angle[+i]

  可通过以下三种方式之一指定旋转参数：

  - 提供一个包含旋转参数的文件。该文件必须为每个旋转包含一条记录， 每条记录的格式如下：

    lon lat tstart [tstop] angle [ khat a b c d e f g df ]

    其中 tstart 和 tstop 以百万年（Myr）为单位，lon lat angle 均以度为单位。 tstart 和 tstop 分别为阶段的起始与结束年龄。 若记录中未提供 tstop，则表示为一次总重建旋转，此时 tstop 默认设为 0， 且文件中其他记录也不应指定 tstop。 若旋转的协方差矩阵 C 可用，则必须按照括号中列出的九个可选项提供： 此处 C = (g/khat)*[ a b d; b c e; d e f ]， 即 C 由三个行向量组成。 若拟合旋转的自由度 (df) 为 0 或未给出，则默认设置为 10000。 文件中空行以及以 # 开头的记录将被忽略。

  - 提供由两个板块 ID 组成的文件名（以连字符连接，例如 PAC-MBL）， 程序将从 GPlates 旋转数据库中提取相应的旋转参数。 若未找到对应旋转，将返回错误。

  - 直接指定 lon/lat/angle，即旋转极的经度、纬度与旋转角度（均以度为单位）， 用于单一的总重建旋转。

    无论采用哪种方式，都可以在参数后附加 +i， 表示希望对旋转进行反转（invert rotation）。

-G

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

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

## 可选选项

-A

-A region

  直接指定旋转后网格的区域范围。默认情况下，输出网格的范围与旋转后的区域完全匹配； 使用 `-A` 可将输出范围裁剪或扩展为指定的 region。

-D

-D rotoutline

  指定输出旋转后网格轮廓线的文件名。它表示网格在指定时间重建后的轮廓。 若涉及多个重建时间，则 rotoutline 必须包含 C 格式化说明符来输出时间。 若仅指定一个时间且未使用 `-D`，则轮廓将输出到标准输出（除非使用 `-N`）。

-F

-F polygonfile

  指定一个闭合的多段线多边形文件，定义网格内需要投影的区域 [默认投影整个网格]。 注意：如果同时给出 `-F` 和 `-R`，则以 `-R` 为准。

-N

-N

  不输出旋转后的多边形轮廓线 [默认将其写入标准输出，或通过 `-D` 写入文件]。

-R

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

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

-S

-S

  仅旋转多边形轮廓线，而不旋转网格（若未提供网格文件，则必须使用 `-F`）。

-T

-T ages

  设置所需的重建时间：

  - 对于单个时间，直接追加数值。

  - 对于等间隔的时间范围，格式为 `-T` start/stop/inc。 若希望 inc 表示“点数”，请追加 +n。

  - 若为不等间距时间序列，请通过文件第一列提供，例如 `-T` agefile。

  若未指定 `-T` 且 `-E` 指定了旋转文件，则默认使用旋转文件中的时间作为重建时间。

-V

-V[level]

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

-bi

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

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

-bo

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

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

-d

-d[i|o]nodata

  将某些特定值当作 NaN。 (参数详细介绍)

-f

-f[i|o]colinfo

  显式指定当前输入或输出数据中每一列的数据类型。 (参数详细介绍)

-g

-g[a]x|y|d|X|Y|D|[col]z gap[+n|p]

  确定数据或线段的间断。 (参数详细介绍)

-h

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

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

-:

-:[i|o]

  交换输入或输出数据的前两列。 (参数详细介绍)

-n

-n[b|c|l|n][+a][+b BC][+c][+t threshold]

  设置网格文件的插值方式。 (参数详细介绍)

-o

-o cols[,...][,t[word]]

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

-^ 或 -

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

-+ 或 +

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

-? 或无参数

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

--PAR=value

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

## 网格重采样的后果

在对网格进行重采样或重新取样时，会使用多种算法（参见 -n）， 这些算法可能导致重采样后的数值出现一定的失真或意外结果。 使用样条函数进行重采样的一个常见现象是：新的采样值可能会略微超出原始网格的全局最小值或最大值。 如果这种超出范围的现象不可接受，可以在 -n 选项中添加 +c 参数， 以对重采样结果进行裁剪，从而确保输出的数值不会超过输入网格的最小值和最大值。

## 大地坐标与地心坐标

所有球面旋转均作用于地心坐标。 这意味着输入的数据点和网格被视为采用大地坐标表示， 在进行旋转之前，必须先将其转换为地心坐标。 旋转操作完成后，最终重建得到的点将再转换回大地坐标。 如果将椭球设置参数 PROJ_ELLIPSOID 更改为 Sphere， 则可跳过此默认的转换过程。

## 示例

要将网格 topo.nc 和多边形 clip_path.txt 的数据旋转， 使用极点 (135.5, -33.0)、旋转角度 37.3° 的总重建旋转，并采用双三次插值，运行:

    gmt grdrotater topo.nc -E135.5/-33/37.3 -V -Fclip_path.txt -Grot_topo.nc > rot_clip_path.txt

要将网格 faa.nc 按 rotations.txt 文件的旋转参数反旋转至 32 Ma，并使用双线性插值，运行:

    gmt grdrotater faa.nc -Erotations.txt -T32 -V -Grot_faa.nc -nl > rot_faa_path.txt

若仅希望查看网格 large.nc 在相同旋转下的轮廓线，可运行:

    gmt grdrotater large.nc -Erotations.txt -T32 -V -S | gmt plot -Rg -JH180/6i -B30 -W0.5p | gv -

要将 topo.nc 网格按 rotations.txt 旋转文件回转至 100 Ma， 并每 10 Myr 生成一次重建网格及轮廓，运行:

    gmt grdrotater topo.nc -Erotations.txt -T10/100/10 -V -Grot_topo_%g.nc -Drot_topo_path_%g.txt

假设你已将 gridA.nc 和 gridB.nc 分别使用 多边形 polyA.txt 与 polyB.txt 限定区域， 并分别应用旋转 A = (123W,22S,16.4) 与 B = (108W,16S,-14.5)， 得到旋转后的 rot_gridA.nc 与 rot_gridB.nc。 要确定两者旋转后区域的重叠范围，可使用 grdmath:

    gmt grdmath 1 rot_gridA.nc ISNAN SUB 1 rot_gridB.nc ISNAN SUB 2 EQ = overlap.nc

网格 overlap.nc 在重叠区域的值为 1，其他区域为 0。 可以将其用作掩码，或通过 grdcontour -D 提取轮廓多边形。

## 备注

GMT 附带了 EarthByte 旋转模型 Global_EarthByte_230-0Ma_GK07_AREPS.rot。 若需使用其他旋转文件，可创建一个环境变量 GPLATES_ROTATIONS， 并将其指向相应的旋转文件路径。

## 相关模块

backtracker, grdcontour, pmodeler, grdmath, grdpmodeler, grdspotter, hotspotter, originater, rotconverter