gmt-template/gmt-colorBar.sh
2023-03-19 19:41:55 +08:00

105 lines
3.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 包含GMT自带脚本文件 其中包含了一些有用的功能 比如获取网格文件的范围
. gmt_shell_functions.sh
# 包含dispOption脚本
. dispOptions.sh
#GMT画一个色度条
# 初始化参数
data='null'
unit='m'
color='rainbow'
range='null'
overwriteRange='null'
overwrite=0
bartick="a" #色标轴标轴间隔 a表示自动
opFile=0
hori=''
# 从命令行获取参数
while getopts "hi:r:u:c:v:os" arg
do
case $arg in
h)
dispTitle "${0##*/}" "plot a color bar using GMT script. The template accepts a grid (.nc .grid) file as input and outputs a .png and a .eps file. \
For further explanations, please look for GMT's manuscripts."
dispAuthorInfo "Yi Zhang (zhangyi.cugwuhan@gmail.com)"
dispUsage "${0##*/} -i<grid-data> [-r<xmin>/<xmax>/<ymin>/<ymax>] [-c<cpt-file>] [-o] [-s] [-u<unit>] [-v<bar-tick>]"
dispOptionShort "-i" "input grid file."
dispOptionShort "-r" "data range. The template will detect the input data range automatically, the use of this option will overwrite the range."
dispOptionShort "-c" "color cpt, The default is rainbow."
dispOptionShort "-o" "open file in finder, the default is using imgcat."
dispOptionShort "-s" "plot the color bar horizontally."
dispOptionShort "-u" "data unit. The default is meter."
dispOptionShort "-v" "intervals of color bar's labels. the script will set the intervals automatically if -v option is not set."
exit 0;;
i)
data=$OPTARG;;
u)
unit=$OPTARG;;
c)
color=$OPTARG;;
v)
bartick=$OPTARG;;
r)
overwrite=1
overwriteRange=$OPTARG;;
o)
opFile=1;;
v)
bartick=$OPTARG;;
s)
hori='+h';;
?)
printf "error: unknow argument\nuse -h option to see help information\n"
exit 1;;
esac
done
# 进行必要的参数检查
if [[ $data == "null" ]]; then
printf "error: no input file name\nuse -h option to see help information\n"
exit 1
else
# 初始化临时文件名
cptfile=user.cpt
psfile=${data%.*}.ps
jpgfile=${data%.*}.png
# 获取网格范围
if [[ $overwrite == 1 ]]; then
range=${overwriteRange}
else
range=$(gmt_get_gridregion ${data})
fi
# 设置绘图参数
gmt gmtset \
FONT_ANNOT_PRIMARY=7p,Times-Roman,black \
MAP_FRAME_PEN=thinnest,black \
MAP_TICK_LENGTH_PRIMARY=1p/0.5p \
MAP_TITLE_OFFSET=7p \
MAP_GRID_CROSS_SIZE_PRIMARY=2p \
FONT_LABEL=7p,Times-Roman,black \
MAP_FRAME_AXES=WeSnZ \
MAP_LABEL_OFFSET=2p \
MAP_ANNOT_OFFSET_PRIMARY=2.5p
gmt grd2cpt ${data} -C${color} -R${range} -Z -D > $cptfile
#-C${cptfile}+Uk 使用km色标单位除1000
#如果unit等于km则在cptfile后面添加+Uk
if [[ ${unit} == 'km+Uk' ]]; then
gmt psscale -Dx1.6i/0.1i+w1.2i/0.07i${hori} -C${cptfile}+Uk -Bx${bartick} -By+l${unit} > $psfile
else
gmt psscale -Dx1.6i/0.1i+w1.2i/0.07i${hori} -C${cptfile} -Bx${bartick} -By+l${unit} > $psfile
fi
gmt psconvert $psfile -A -TEG -E500
# 删除临时文件 使用linux终端rm命令
rm $cptfile $psfile gmt.history gmt.conf
if [[ $plotgrad == 1 ]]; then
rm $gradfile
fi
if [[ $opFile == 1 ]]; then
# 打开图片文件 此命令使用MacOS终端open命令
open $jpgfile
else
# 在终端显示图像 此命令需要imgcat.sh脚本和iTerm终端
imgcat $jpgfile
fi
fi