makecpt
- 官方文档:
- 简介:
制作 GMT CPT 文件
在经典模式中,CPT 文件的内容会输出到屏幕标准输出中。而在现代模式中,该命令不会生成显式的 CPT 文件,而是隐式地将其自动设置为后续命令的默认 CPT 文件。因此无法使用经典的 gmt makecpt xxx > cpt
方式生成 CPT 文件。如果需要在现代模式中生成 CPT 文件,则可以使用 -H 选项: gmt makecpt xxx -H > cpt
。关于经典模式和现代模式的语法区别,建议阅读 经典模式 → 现代模式 章节。
该命令基于主 CPT 创建用户所需的 CPT,获得的 CPT 可以是离散或连续的,颜色也可相对主 CPT 反转。如果需使用 GMT 之外的 CPT 作为主 CPT,可在 cpt-city 中查询。
-T 选项所指定的 z 值范围以外的数值,分别使用 3 种颜色来表示,分别为:
背景色 (B,background color), 表示低于最小 z 值时所对应的颜色
前景色 (F,foreground color), 表示高于最大 z 值时所对应的颜色
以及 NaN 值颜色 (N),表示 z 值被定义为 NaN 时对应的颜色,即 z 值未定义的情况
默认情况下,这三种颜色会沿用 -C 选项所指定的主 CPT 文件的设置,但也可以使用 -D 、 -M 以及 -N 选项修改。或者使用 gmtset 命令对 COLOR_BACKGROUND、 COLOR_FOREGROUND 与 COLOR_NAN 进行自定义修改。需注意,选项总会覆盖自定义参数值。
颜色模式 (RGB, HSV, CMYK) 会沿用 -C 选项所指定的主 CPT 文件的设置。或者使用 gmtset 命令对 COLOR_MODEL 进行自定义修改。
语法
gmt makecpt [ -Atransparency[+a] ] [ -Ccpt ] [ -D[i|o] ] [ -E[nlevels] ] [ -F[R|r|h|c|x][+c[label]][+kkeys] ] [ -Gzlo/zhi ] [ -H ] [ -I[c][z] ] [ -M ] [ -N ] [ -Q ] [ -Smode ] [ -T[min/max/inc[+b|i|l|n]|file|list] ] [ -V[level] ] [ -W[w] ] [ -Z ] [ -bibinary ] [ -dinodata[+ccol] ] [ -hheaders ] [ -iflags ] [ --PAR=value ]
必选选项
无。
可选选项
- -Atransparency[+a]
设置透明度,transparency 的取值范围是 0 到 100。加上 +a 则将该透明度同时应用于前景色、背景色和 NaN 颜色 [默认不透明, 即 transparency 为 0]。
- -C[[section/] master_cpt[+h[hinge]][+u|Uunit]|local_cpt|color1,color2[,color3,…]]
输入主 CPT 文件名。一般情况下,输入文件为 GMT 内置 CPT (请见 内置CPT) 之一,可通过 master_cpt 或 section/master_cpt 的形式指定,但不能带有 .cpt 后缀。如果主 CPT 中存在软铰链(soft-hinge),则可使用 +h 激活铰链,其铰链值为 0。如果 CPT 中存在硬铰链(hard-hinge),则使用 +h[hinge] 激活铰链,并可修改铰链值为 hinge 。对于不存在铰链的内置 CPT,用户可使用 +Uunit 将 z 值从其他单位转换为米,或使用 +uunit 将米转换为其他单位,unit 可以从 e|f|k|M|n|u 中取值,详见 单位。
主 CPT 也可以为用户自己的 CPT 文件,这时,CPT 必须带有 .cpt 后缀。
此外,除设置主 CPT 文件名外, 也可指定一个颜色序列 color1,color2[,color3,…] 创建线性连续 CPT,其中 z 值从 0 开始,每种颜色递增 1。这种情况下,colorn 可以为 r/g/b 三元数(见 颜色)或者 HTML 16 进制颜色 (例如,#aabbcc)。
- -D[i|o]
将背景色和前景色分别设置为 CPT 文件中最小值和最大值对应的颜色, i 和 o 分别表示使用输出 CPT 或者输入 CPT [默认为 -D 或 -Do, 即输出 CPT 的背景色和前景色]。不设置本项时,GMT 默认使用主 CPT 文件规定的背景色与前景色,或是采用配置参数 COLOR_BACKGROUND、COLOR_FOREGROUND 与 COLOR_NAN 的设置。
- -E[nlevels]
从命令行或者标准输入中读取表数据文件,使用最后一列决定数据的范围,nlevels 表示生成的 CPT 文件会被重采样为 nlevels 个等间距的切片,上述两者即等同于 -T 选项作用。使用 -i 选项可选择其他列决定数据范围,二进制文件则需同时使用 -bi 。如果不给定 nlevels 参数,则默认其等于主 CPT 中切片数。
- -F[R|r|h|c|x][+c[label]][+kkeys]
-FR ,输出的 CPT 以 r/g/b 灰度值,或名称指定颜色[默认];
-Fr ,输出的 CPT 以 r/g/b 方式指定颜色;
-Fh ,输出的 CPT 以 h-s-v 方式指定颜色;
-Fc ,输出的 CPT 以 c/m/y/k 方式指定颜色;
附加 +c 以分类格式输出离散型 CPT。如果追加 label ,则在绘制 CPT 时,每个分类均创建标签。标签的格式可以是逗号分隔的列表(中间可通过不指定名称来跳过类别),也可以通过 start[-] 来指定以 start 为首,依次递增的标签。追加 - 则表示标签的范围为 start 到 start+1。注意,存在以下特殊情况:
如果使用 +cM 且类别数为 12,则 GMT 会自动创建月份名称列表
如果使用 +cD 且类别数为 7,则创建一周内每天名称列表
上述两种情况,标签的格式受 FORMAT_TIME_PRIMARY_MAP,GMT_LANGUAGE 和 TIME_WEEK_START 参数影响。
附加 +kkeys 选项表示使用字符而不是数字设置分类 CPT 的键值。keys 可以是一个文件,其中包含键值列表;keys 也可以是单个字符,例如:D,则键值列表为 D、E、F…。如果是逗号分隔的键值列表,则应使用 -T 选项,而不是该选项。
- -Gzlo/zhi
截断主 CPT 文件,将主 CPT 的最小和最大 z 值分别限制为 zlo 与 zhi。上述两值若设置为 NaN,则仍旧使用原本的最值。截断的操作发生在重采样之前。译注:该选项通常用于地形、深度等具有实际意义的 CPT。
- -H
仅限现代模式。默认情况下是将 CPT 保存为隐藏的当前 CPT,加上该选项会显式地将 CPT 写入标准输出。在写制作动画的脚本时,需要传递显式命名的 CPT 文件,因此需要使用本功能。建议阅读 经典模式 → 现代模式 。
- -I[c][z]
-Ic 选项翻转颜色的顺序,包括前景色和背景色以及 COLOR_BACKGROUND 和 COLOR_FOREGROUND 参数设置的前景色和背景色[默认]。详细用法和说明见 制作CPT 。
-Iz 选项翻转 CPT 的 z 值(不包括前景色、背景色)。该操作发生于 -G 和 -T 选项之前,因此使用上述两选项时,需先考虑 -Iz 操作后的 z 值的实际范围。
- -M
使用 gmt.conf 文件或者命令行中设置的 COLOR_BACKGROUND , COLOR_FOREGROUND 和 COLOR_NAN 覆盖 CPT 中的前景色、背景色和 NaN 值的颜色。如果和 -D 同时使用,则前景色和背景色均被 -D 覆盖。
- -N
不在生成的 CPT 中写入前景色,背景色和 NaN 值的颜色[默认写入]。
- -Q
-T 选项输入为对数值 log10(z) 时,通过对数值分配颜色,但是输出结果仍为原值 z。
- -Smode
从命令行或者标准输入中读取表数据文件,使用 -i 选项可调整输入列,从该文件中确定适合 -T 选项的范围。下述选项给出确定范围的类型:
-Sr 使用 min/max 作为范围
-Sinc[+d] 使用 min/max 作为范围,但四舍五入到最近的 inc, 以 inc 为间隔,追加 +d 生成离散 CPT
-Sascl 以平均值为对称中心,scl * sigma 为单边宽度生成范围
-Smscl 以中值为对称中心,scl * sigma 为单边宽度生成范围
-Spscl 以众数(通过 Least Median of squares 获取)为对称中心, scl * LMS_scale 为单边宽度生成范围
-Sqlow/high 设置低分位数和高分位数为范围(百分比格式)
- -T[min/max/inc[+b|i|l|n]|file|list]
定义要生成的 CPT 文件的 z 值范围及 z 值间隔。该选项可有如下几种形式:
若使用了 -C 选项且 inc 未指定,则 z 值间隔的数目与输入的主 CPT 文件相同
若 inc 后有 +n ,则将 inc 解释为 z 值间隔的数目而不是 z 值间隔
使用一个文件给定数值列表
使用一个数值列表
详见 生成一维数组 。
- -W[w]
不对输入主 CPT 内插,而是从 CPT 的开始选取输出颜色,直到所有区间的颜色都被分配完。这在与分类 CPT 同时使用时非常有用。使用 -Ww 可生成一个无限重复范围的循环 CPT。
- -Z
生成连续 CPT 文件。默认生成不连续 CPT 文件,即每个 Z 值切片内为同一颜色。
- -V[level] (more …)
设置 verbose 等级 [w]
- -bi[ncols][type][w][+l|b] (more …)
设置二进制输入数据的格式
- -dinodata (more …)
将输入数据中值为 nodata 的列替换为 NaN
- -h[i|o][n][+c][+d][+msegheader][+rremark][+ttitle] (more …)
跳过或生成指定数目的头段记录
- -icols[+l][+sscale][+ooffset][,…][,t[word]] (more …)
设置输入数据列及简单变换(0表示第一列,t 表示文本列)
- -^ 或 -
显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -)
- -+ 或 +
显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明
- -? 或无参数
显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明
- --PAR=value
临时修改GMT参数的值,可重复多次使用。参数列表见 配置参数
生成一维数组
下面将展示如何使用 gmtmath 生成一维数组(其中大部分操作也可通过 linux 中的 seq 命令方便地实现)
不使用任何子选项
以 0.1 为步长,生成 3.1 到 4.2 等等间隔序列
gmt math -o0 -T3.1/4.2/0.1 T =
3.1
3.2
...
4.2
+a 选项
该选项不对生成的数列进行运算操作,而是将该数列以列的形式追加到输出表数据,类似 linux 中的 paste 命令。
+b 选项
以 3 和 20 分别为起点和终点,创建一个 2 的整数幂的列表,将生成的整数幂以 1 为步长取值 -T3/20/1+b
gmt math -o0 -T3/20/1+b T =
4
8
16
+l 选项
以 7 和 135 分别为起点和终点,先创建一个 10 的整数幂的列表,当 inc 为 1 时,输出该列表;当 inc 为 2 时,同时输出该列表中每个元素的 1,2,5 倍值(不包括超出原始数据范围的部分); 当 inc 为 3 时,同时输出该列表中每个元素的 1,2,…,9 倍值(同样不包括超出原始数据范围的部分)。 -T7/135/2+l 将会生成如下数列
gmt math -o0 -T7/135/2+l T =
10
20
50
100
inc 为负整数时,将实现如下效果
gmt math -o0 -T1e-4/1e4/-2+l T =
0.0001
0.01
1
100
10000
+i 选项
该选项将以 1 作为默认步长,第三个数字做为每步长中的数字个数 length。假设需要在 1 分钟内每 24 秒生成一帧
gmt math -o0 -T0/60/24+i T =
0
0.0416666666667
0.0833333333333
0.125
0.166666666667
...
60
+n 选项
生成固定长度的数列。以 3.44 和 7.82 为起点和终点,生成长度为 5 的等间隔序列
gmt math -o0 -T3.44/7.82/5+n T =
3.44
4.535
5.63
6.725
7.82
-T 后直接加文件或逗号分隔的数列
-T 后可以直接加文件,文件中即为要生成的列表;另外,可以直接使用逗号分隔,将列表附加到 -T 选项后,如下为 Fibonacci 数列前 6 项
gmt math -o0 -T0,1,1,2,3,5 T =
0
1
1
2
3
5
注 : 如果数列只包含一个值,必须在其后加逗号以表明仍是一个数列
+u 选项
如果文件或者逗号分隔的数列中有重复数字或未排序,可以使用 +u 选项去重并排序。
+t 选项
生成绝对时间序列。在 inc 后分别添加 y ,o ,d ,h , m 和 s 表示时间步长的单位为年,月,日,时,分,秒。在其后附加 +t 选项,可以进一步强调生成时间序列,也可以不加
gmt math -o0 -T2020-03-01T/2020-03-07T/1d T =
2020-03-01T00:00:00
2020-03-02T00:00:00
2020-03-03T00:00:00
2020-03-04T00:00:00
2020-03-05T00:00:00
2020-03-06T00:00:00
2020-03-07T00:00:00
生成距离序列
如果输入文件中包含两列以上的数据,可以使用前两列计算距离,并生成等距序列。在 inc 后分别添加 d,m,s,e,f,M,n 和 u 表示距离步长的单位为度,分,秒,米,英尺,公里,英里,海里,英尺。如果为笛卡尔坐标,使用 c 作为距离步长单位。
+e 选项
如果只给定 inc 而从数据中获取最大值和最小值,则 (max - min)/inc 可能不是整数,GMT 讲会自动对 inc 进行一定的调整。如果不想调整 inc ,则可以使用 +e 选项,GMT 会固定最小值,适当调整最大值。
颜色铰链
某些 GMT 动态 CPT 是两个独立的 CPT 合成的,合成位置称为铰链值。铰链两侧的颜色通常会有较大的变化,用于两个不同的方面(例如,陆地和海洋的高程和深度)。一般情况下,颜色的动态变化不受铰链的影响,将整个颜色范围拉伸得到最终的 CPT。但激活铰链值时,CPT 铰链两侧的部分将分别拉伸到所需的范围。铰链分为硬铰链和软铰链,铰链必须通过在 CPT 后追加 +h[hinge] 激活。如果设定的拉伸范围不包括铰链值,则只在 CPT 中选取与范围相关的一半重新采样颜色。
离散 CPT 和连续 CPT
所有的 CPT 都可以拉伸,但只建议使用连续 CPT 在 -T 指定的新节点上采样,如果使用离散 CPT 采样,则会警告,但仍可使用。GMT 这样做的原因是防止重采样原始 CPT 导致混叠。
示例
以 polar CPT 为主 CPT,创建一个范围为 -200 到 200,间距为 25 的离散 CPT
gmt makecpt -Cpolar -T-200/200/25 > colors.cpt
使用默认的 turbo CPT 为主 CPT,创建一个范围为 -2 到 6 的等距 CPT
gmt makecpt -T-2/6 > colors.cpt
在 gebco 的基础上,创建一个适用于 v3206_06.txt 数据文件的 CPT,颜色区间个数为 24 个
gmt makecpt -Cgebco @v3206_06.txt -E24 > my_depths.cpt
创建一个震源深度 CPT 文件,红色表示深度为 0-100 km,绿色表示 100-300 km,蓝色表示 300-1000 km
gmt makecpt -Cred,green,blue -T0,80,300,1000 -N > seis.cpt
创建一个连续 CPT,从 3-10 变化时,颜色从白色过度到蓝色
gmt makecpt -Cwhite,blue -T3/10 > cold.cpt
创建一个 0-500 范围的循环 CPT,如果值范围超过 500 或小于 0,则使用循环后的值,而不是 NaN 对应的颜色
gmt makecpt -Cjet -T0/500 -Ww > wrapped.cpt
创建一个拥有三个类别的分类 CPT,并指定类别名
gmt makecpt -Ccubhelix -T0/2/1 -F+cClouds,Trees,Water > cat.cpt
创建一个拥有 10 个类别的分类 CPT,类别名从 A、B、C 等开始编号
gmt makecpt -Cjet -T0/10/1 -F+cA
使用字符串键值创建一个分类 CPT
gmt makecpt -Ccategorical -Twood,water,gold