✍️ 周茂 • 📅 2025-12-29

# blockmean

官方文档:

  blockmean

简介:

  使用均值估计对表数据做区块平均

blockmean 读取 xyz 形式的表数据（或可在最后加一列权重）, 并对 `-R` 和 `-I` 定义 的每个区块输出一个平均的位置和值到标准输出。使用 `-G` 可直接输出为网格文件。在进行 surface 模块时，为避免短波信号混淆，应提前使用 blockmean ，blockmedian , 或 blockmode 。这些操作在用来抽稀数据或者平均数据时很有用。用户可通过设置 FORMAT_FLOAT_OUT 参数设置输出数据有效数字以避免精度损失。

## 语法

gmt blockmean [ table ] `-I` increment `-R` region [ `-A` fields ] [ `-C` ] [ `-E`[+p|P] ] [ `-G`[grdfile] ] [ `-S`[m|n|s|w] ] [ `-V`[level] ] [ `-W`[i|o][+s|w] ] [ `-a` flags ] [ `-bi` binary ] [ `-bo` binary ] [ `-d` nodata[+c col] ] [ `-e` regexp ] [ `-f` flags ] [ `-h` headers ] [ `-i` flags ] [ `-o` flags ] [ `-q` flags ] [ `-r` reg ] [ `-w` flags ] [ `-:`[i|o] ] [ --PAR=value ]

## 输入数据

table

  一个或多个ASCII或二进制表数据。若不提供表数据，则会从标准输入中读取。

## 必须选项

-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]

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

## 可选选项

-A

-A field

  指定写入每个网格中的字段，该选项需要 `-G` 选项。其中字段通过字符设置：

  - z ：z 值的平均值，见 `-S`

  - s ：标准差

  - l ：最小值

  - h ：最大值

  - w ：权重，见 `-W`

  s|l|h 需要同时设置 `-E` 选项；默认字符为 z

-C

-C

  使用区块的中心作为输出位置，默认使用平均位置

-E

-E[+p|P]

  输出额外的报告，见 `-A` 。输出顺序为 x,y,z,s,l,h[,w] 。 使用 `-W` 可设置输出权重。使用 -E+p|P 时，则表明输入数据中包含不确定度， s 将变为加权后的值（+p） 或者（+P）z 的平均值的传播误差。

-G

-G grdfile

  将结果输出为网格；使用该选项时，将不会输出到标准输出。如果输出网格中的 字段超过一个（`-A`），则网格名必须包含 `%s` 以便将字段名写入到网格 文件名中来区别不同的输出网格。注 : 使用该选项时不能使用 `-C` 选项。

-S

-S[m|n|s|w]

  - n 报告落入每个区块中的输入点的个数

  - s 报告落入每个区块中的输入点的 z 值的和

  - w 报告落入每个区块中的输入点的权重的和

  - m 报告落入每个区块中的输入点的均值 [默认]

-W

-W[i|o][+s|w]

  计算加权结果。加权结果的输入和输出都为 4 列，输入数据的第 4 列为权重，输出 数据的第四列为权重的和。使用 i 和 u 分别表示用于加权输入和加权输出 [默认不使用不加权的输入和输出]。如果数据权重为不确定度，即一倍中误差，则可以 追加 +s ，则在程序内部，权重定义为 weight = 1/sigma^2 。否则，直接使用 第四列作为权重。

-V

-V[level]

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

-a

-a[[col=]name][,...]

  控制输入或输出为 OGR/GMT 格式时对非空间元数据的处理方式。 (参数详细介绍)

-bi

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

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

-bo

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

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

-d

-d[i|o]nodata

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

-e

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

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

-f

-f[i|o]colinfo

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

-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 的某些功能。 (参数详细介绍)

-r

-r[g|p]

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

-w

-wy|a|w|d|h|m|s|c period[/phase][+c col]

  将输入坐标转换为循环坐标。 (参数详细介绍)

-:

-:[i|o]

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

-^ 或 -

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

-+ 或 +

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

-? 或无参数

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

--PAR=value

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

## ASCII 格式精度

ASCII 格式输出数据通过 gmt.conf 配置文件控制。控制经纬度格式的参数为 FORMAT_GEO_OUT ；控制绝对时间的的参数包括 FORMAT_DATE_OUT 和 FORMAT_CLOCK_OUT ；普通浮点数通过参数 FORMAT_FLOAT_OUT 控制。上述格式控制可能会导致精度损失，这会在下游计算中导致一些问题。 如果用户需要保证数据精度，则应考虑将数据写为二进制文件，或者使用 FORMAT_FLOAT_OUT 指定更多的有效数字。

## 示例

从 `ship_15.txt` 文件中获取 5 分区块的平均值

    gmt blockmean @ship_15.txt -R245/255/20/30 -I5m > ship_5x5.txt

确定每个 5 分的区块中数据点的个数

    gmt blockmean @ship_15.txt -R245/255/20/30 -I5m -Sn > ship_5x5_count.txt

确定 10 分的区块中数据的均值和标准差，并将结果保存到两个文件中

    gmt blockmean @ship_15.txt -I10m -R-115/-105/20/30 -E -Gfield_%s.nc -Azs

## 相关模块

blockmedian, blockmode, greenspline, nearneighbor, sphtriangulate, surface, triangulate