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 选项修改。或者使用 set 命令对 COLOR_BACKGROUND、
COLOR_FOREGROUND 与 COLOR_NAN 进行自定义修改。需注意,选项总会覆盖
自定义参数值。
颜色模式 (RGB, HSV, CMYK) 会沿用 -C 选项所指定的主 CPT 文件的设置。
或者使用 set 命令对 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 ]
必选选项
无。
可选选项
- -A
- -Atransparency[+a]
设置透明度,transparency 的取值范围是 0 到 100。 加上 +a 则将该透明度同时应用于前景色、背景色和 NaN 颜色 [默认不透明, 即 transparency 为 0]。
- -C
- -C
- -C[[section/]master_cpt[+h[hinge]][+u|Uunit]|local.cpt|color\(_1\),color\(_2\)[,color\(_3\),…]]
指定主 CPT 名称,CPT 文件或用逗号分割的多个颜色, 以创建一个 CPT。如果不指定参数,则在现代模式下使用当前 CPT(如果可用)。 支持以下多种输入:
主 CPT 名称,例如 earth (详见 内置CPT ), 可使用 CPT 名称 master 或包括相对路径的 section/master 来指定(内置 CPT 不可添加 .cpt 扩展名)。
自定义 CPT 文件 cpt ,例如 local.cpt 。
自动从多个颜色 color\(_1\),color\(_2\)[,color\(_3\),…] 中创建线性连续的 CPT,其中 z 值从 0 开始, 每添加一种颜色 z 值加 1。在这种情况下, color\(_i\) 可以是 r/g/b (e.g. 255/100/75), h-s-v (e.g. 180-0.8-1), c/m/y/k (e.g. 80/50/40/30),HTML十六进制 (e.g. #aabbcc) 或 颜色名称。逗号之间不能有空格。
支持以下选项:
+h - 对于有软铰链 (soft hinge) 的主 CPT,可指定 hinge 值启用铰链, 而对于有硬铰链 (harde hinge) 的 CPT,可以修改铰链位置 hinge ,但不能禁用。
+u - 对于任何其他主 CPT,可以通过指定其原始单位 unit 将其 z 值单位转换为米。
+U - 与 +u 类似,但是将 z 值单位从米转换为指定单位 unit 。
注意 - 对于 +u**|**U,必须从 e**|**f**|**k**|**M**|**n**|**u 中选择一种单位。
- -D
- -D[i|o]
将背景色和前景色分别设置为 CPT 文件中最小值和最大值对应的颜色, i 和 o 分别 表示使用输出 CPT 或者输入 CPT [默认为
-D或 -Do, 即输出 CPT 的背景色和前景色]。 不设置本项时,GMT 默认使用主 CPT 文件规定的背景色与前景色,或是采用配置参数 COLOR_BACKGROUND、COLOR_FOREGROUND 与 COLOR_NAN 的设置。
- -E
- -E[nlevels]
从命令行或者标准输入中读取表数据文件,使用最后一列决定数据的范围,nlevels 表示 生成的 CPT 文件会被重采样为 nlevels 个等间距的切片,上述两者即等同于
-T选项 作用。使用 -i 选项可选择其他列决定数据范围,二进制文件则需同时使用 -bi 。 如果不给定 nlevels 参数,则默认其等于主 CPT 中切片数。
- -F
- -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选项,而不是该选项。
- -G
- -Gzlo/zhi
截断主 CPT 文件,将主 CPT 的最小和最大 z 值分别限制为 zlo 与 zhi。上述两值 若设置为 NaN,则仍旧使用原本的最值。截断的操作发生在重采样之前。译注:该选项 通常用于地形、深度等具有实际意义的 CPT。
- -H
- -H
仅限现代模式。 默认情况下是将 CPT 保存为隐藏的当前 CPT,加上该选项会显式地将 CPT 写入标准输出。 在写制作动画的脚本时,需要传递显式命名的 CPT 文件,因此需要使用本功能。 建议阅读 经典模式 → 现代模式 。
- -I
- -I[c][z]
-Ic 选项翻转颜色的顺序,包括前景色和背景色以及 COLOR_BACKGROUND 和 COLOR_FOREGROUND 参数设置的前景色和背景色[默认]。详细用法和说明见 制作CPT 。
-Iz 选项翻转 CPT 的 z 值(不包括前景色、背景色)。该操作发生于
-G和-T选项之前,因此使用上述两选项时,需先考虑 -Iz 操作后的 z 值的实际范围。
- -M
- -M
使用 gmt.conf 文件或者命令行中设置的 COLOR_BACKGROUND , COLOR_FOREGROUND 和 COLOR_NAN 覆盖 CPT 中的前景色、背景色和 NaN 值 的颜色。如果和
-D同时使用,则前景色和背景色均被-D覆盖。
- -N
- -N
不在生成的 CPT 中写入前景色,背景色和 NaN 值的颜色[默认写入]。
- -Q
- -Q
-T选项输入为对数值 log10(z) 时,通过对数值分配颜色,但是输出结果仍为原值 z。
- -S
- -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
- -T[min/max/inc[+b|i|l|n]|file|list]
定义要生成的 CPT 文件的 z 值范围及 z 值间隔。该选项可有如下几种形式:
若使用了
-C选项且 inc 未指定,则 z 值间隔的数目与输入的主 CPT 文件相同若 inc 后有 +n ,则将 inc 解释为 z 值间隔的数目而不是 z 值间隔
使用一个文件给定数值列表
使用一个数值列表
详见 生成一维数组 。
- -W
- -W[w]
不对输入主 CPT 内插,而是从 CPT 的开始选取输出颜色,直到所有区间的颜色都被分配完。 这在与分类 CPT 同时使用时非常有用。使用 -Ww 可生成一个无限重复范围的循环 CPT。
- -Z
- -Z
生成连续 CPT 文件。默认生成不连续 CPT 文件,即每个 Z 值切片内为同一颜色。
- -V
- -V[level]
设置 verbose 等级 [w]。 (参数详细介绍)
- -bi
- -bi[ncols][type][w][+l|b]
控制二进制文件的输入格式。 (参数详细介绍)
- -di
- -dinodata
将输入数据某些特定值当作NaN。 (参数详细介绍)
- -h
- -h[i|o][n][+c][+d][+msegheader][+rremark][+ttitle]
在读/写数据时跳过文件开头的若干个记录。 (参数详细介绍)
- -i
- -icols[+l][+sscale][+ooffset][,…][,t[word]]
对输入的数据进行列选择以及简单的代数运算。 (参数详细介绍)
- -^ 或 -
显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -)
- -+ 或 +
显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明
- -? 或无参数
显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明
- --PAR=value
临时修改GMT参数的值,可重复多次使用。参数列表见 配置参数
生成一维数组
下面将展示如何使用 math 生成一维数组(其中大部分操作也可通过 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