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

# pmodeler

官方文档:

  pmodeler

简介:

  评估特定位置的板块运动模型

pmodeler 读取包含 lon, lat，以及可选 age 三列的表格文件， 并结合一个板块运动模型计算多种模型预测结果。 用户可以选择提供一个多段格式的裁剪多边形文件； 在这种情况下，仅使用多边形内部的点进行模型预测， 多边形外的点将被跳过。结果输出到标准输出。

## 语法

gmt pmodeler table `-E` rot_file|ID1-ID2|lon/lat/angle[+i] `-S` flags [ `-F` polygonfile ] [ `-T` age ] [ `-V`[level] ] [ `-bi` binary ] [ `-d` nodata[+c col] ] [ `-e` regexp ] [ `-f` flags ] [ `-g` gaps ] [ `-h` headers ] [ `-i` flags ] [ `-o` flags ] [ `-q` flags ] [ `-s` flags ] [ `-:`[i|o] ] [ --PAR=value ]

## 输入数据

table

  包含地理坐标 (lon, lat)，以及可选的地壳年龄（Myr）的一个或多个表格文件名。 如果未指定文件，则从标准输入读取数据。

## 必须选项

-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）。

-S

-S flags

  指定要计算的模型预测类型，可附加一个或多个标识符：

  - a ：板块运动方位角（azimuth）

  - d ：当前位置与洋中脊生成点的球面距离（单位：km）

  - s ：板块运动模型阶段 ID（1 表示最年轻阶段）

  - v ：板块运动速率（mm/yr）

  - w ：板块旋转速率（度/Myr）

  - x ：相对于生成点的经度变化量

  - y ：相对于生成点的纬度变化量

  - X ：地壳生成时的经度

  - Y ：地壳生成时的纬度

  如果未指定任何参数，则默认计算全部 [adsvwxyXY]。

## 可选选项

-F

-F polygonfile

  指定一个多段闭合多边形文件，用于定义模型计算区域。 多边形外的点将被忽略。 [默认使用所有数据点。]

-T

-T age

  使用固定年龄进行模型计算（即忽略输入表格中的年龄值）。 此选项可用于生成某一时刻的模型快照。 若输入表中未包含年龄列，则必须使用此选项。

-V

-V[level]

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

-bi

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

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

-d

-d[i|o]nodata

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

-e

-e[~]"pattern" | -e[~]/regexp/[i]

  筛选或剔除匹配指定模式的数据记录。 (参数详细介绍)

-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

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

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

-o

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

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

-q

-q[i|o][~]rows[+c col][+a|f|s]

  对输入或输出的行进行筛选，该选项在一定程度上可以代替 gawk 的某些功能。 (参数详细介绍)

-s

-s[cols][+a|+r]

  设置 NaN 记录的处理方式。 (参数详细介绍)

-:

-:[i|o]

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

-^ 或 -

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

-+ 或 +

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

-? 或无参数

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

--PAR=value

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

## 大地坐标与地心坐标

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

## 点位于多边形内/外

为了确定点在多边形内，外或在边界上，GMT 会平衡数据类型以及多边形形状等因素来 确定算法。对于笛卡尔坐标，GMT 使用 non-zero winding 算法，该算法非常快。对于 地理坐标，如果多边形不包括两极点且多边形的经度范围不超过 360 度，同样使用该 算法。否则，GMT 会采用 full spherical ray-shooting 方法。

## 示例

我们将使用一个包含太平洋地壳位置和年龄的表格 (pac_age.txt)、一个板块运动 模型 (Pac_APM.txt) 以及一个包含当前太平洋板块轮廓的多边形 (pac_clip_path.txt)。 要评估太平洋板块当前的板块运动方位角，请尝试:

    gmt pmodeler pac_age.txt -EPac_APM.txt -V -Fpac_clip_path.txt \
         -Sa -T0 > pac_dir_0.txt

要确定自地壳形成以来整个太平洋板块的纬度变化，请尝试:

    gmt pmodeler pac_age.txt -EPac_APM.txt -V -Fpac_clip_path.txt \
         -Sy > pac_dlat.txt

要确定太平洋地壳形成时的有效板块运动速度，请尝试:

    gmt pmodeler pac_age.txt -EPac_APM.txt -V -Fpac_clip_path.txt \
         -Sv > pac_vel.txt

要确定地壳自形成以来已经移动了多远，请尝试:

    gmt pmodeler pac_age.txt -EPac_APM.txt -V -Fpac_clip_path.txt \
         -Sd > pac_dist.txt

要保存地壳形成时的坐标，请尝试:

    gmt pmodeler pac_age.txt -EPac_APM.txt -V -Fpac_clip_path.txt \
         -SXY > ac_origin_xy.txt

## 备注

GMT 发布了 EarthByte 旋转模型 Global_EarthByte_230-0Ma_GK07_AREPS.rot。 如需使用替代的旋转文件，请创建一个名为 GPLATES_ROTATIONS 的环境变量，使其指向该替代的旋转文件。

## 相关模块

backtracker, grdpmodeler, grdrotater, grdspotter, hotspotter, originater, rotconverter