diff --git a/gmtxy-image2.sh b/gmtxy-image2.sh index d255b5a..7184463 100755 --- a/gmtxy-image2.sh +++ b/gmtxy-image2.sh @@ -3,6 +3,27 @@ . gmt_shell_functions.sh # 包含dispOption脚本 . dispOptions +# 定义一个函数 执行输入的语句或者将其显示在屏幕上 +RunOrEcho() +{ + first_str=`echo ${2// /''}` + if [[ x${3} != x ]]; then + sec_str=`echo ${3// /''}` + fi + + if [[ ${1} == 1 ]]; then + ${first_str} + if [[ x${3} != x ]]; then + ${sec_str} + fi + else + if [[ x${3} != x ]]; then + printf "%s\n%s\n" "${first_str}" "${sec_str}" + else + printf "%s\n" "${first_str}" + fi + fi +} # GMT显示平面数据脚本,输入文件为网格文件,没有包含网格化语句因为网格化过程中的情况多样化,建议在其他脚本中个别添加再调用此脚本 # 准备几个常用的排版参数组 记录的参数包括 图片的宽度 默认坐标标示设定 色标位置 色标的大小 标示字体大小 com_layouts=("1.5i,WesNZ,0.1i/-0.2i,1.3i/0.05i+h,10.5p" \ @@ -161,32 +182,19 @@ else fi # 设置绘图参数 - if [[ ${run_command} == 0 && ${from_open} == '>' ]]; then - echo "gmt gmtset \ -FONT_ANNOT_PRIMARY=${layouts[4]},Times-Roman,black \ -MAP_FRAME_PEN=thinnest,black \ -MAP_GRID_PEN_PRIMARY=thinnest,black \ -MAP_TICK_PEN_PRIMARY=thinnest,black \ -MAP_TICK_LENGTH_PRIMARY=1p/0.5p \ -MAP_TITLE_OFFSET=7.5p \ -MAP_GRID_CROSS_SIZE_PRIMARY=2p \ -FONT_LABEL=${layouts[4]},Times-Roman,black \ -MAP_FRAME_AXES=${frameset} \ -MAP_LABEL_OFFSET=2.5p \ -MAP_ANNOT_OFFSET_PRIMARY=2.5p" - else - gmt gmtset \ - FONT_ANNOT_PRIMARY=${layouts[4]},Times-Roman,black \ - MAP_FRAME_PEN=thinnest,black \ - MAP_GRID_PEN_PRIMARY=thinnest,black \ - MAP_TICK_PEN_PRIMARY=thinnest,black \ - MAP_TICK_LENGTH_PRIMARY=1p/0.5p \ - MAP_TITLE_OFFSET=7.5p \ - MAP_GRID_CROSS_SIZE_PRIMARY=2p \ - FONT_LABEL=${layouts[4]},Times-Roman,black \ - MAP_FRAME_AXES=${frameset} \ - MAP_LABEL_OFFSET=2.5p \ - MAP_ANNOT_OFFSET_PRIMARY=2.5p + if [[ ${from_open} == '>' ]]; then + RunOrEcho ${run_command} "gmt gmtset \ + FONT_ANNOT_PRIMARY=${layouts[4]},Times-Roman,black \ + MAP_FRAME_PEN=thinnest,black \ + MAP_GRID_PEN_PRIMARY=thinnest,black \ + MAP_TICK_PEN_PRIMARY=thinnest,black \ + MAP_TICK_LENGTH_PRIMARY=1p/0.5p \ + MAP_TITLE_OFFSET=7.5p \ + MAP_GRID_CROSS_SIZE_PRIMARY=2p \ + FONT_LABEL=${layouts[4]},Times-Roman,black \ + MAP_FRAME_AXES=${frameset} \ + MAP_LABEL_OFFSET=2.5p \ + MAP_ANNOT_OFFSET_PRIMARY=2.5p" fi # 处理-B选项的参数 @@ -198,26 +206,14 @@ MAP_ANNOT_OFFSET_PRIMARY=2.5p" axistick[1]=${axistick[1]}g${axistick[1]} fi - if [[ ${run_command} == 0 ]]; then - echo "gmt grd2cpt ${data} -C${color} -R${range} -Z -D > ${cptfile}" - else - gmt grd2cpt ${data} -C${color} -R${range} -Z -D > ${cptfile} - fi + RunOrEcho ${run_command} "gmt grd2cpt ${data} -C${color} -R${range} -Z -D > ${cptfile}" if [[ $plotgrad == 1 ]]; then gradfile=${data%.*}Grad.nc if [[ $gridData == 'null' ]]; then - if [[ ${run_command} == 0 ]]; then - echo "gmt grdgradient ${data} -G${gradfile} -Nt -A0/45" - else - gmt grdgradient ${data} -G${gradfile} -Nt -A0/45 - fi + RunOrEcho ${run_command} "gmt grdgradient ${data} -G${gradfile} -Nt -A0/45" else - if [[ ${run_command} == 0 ]]; then - echo "gmt grdgradient ${gridData} -G${gradfile} -Nt -A0/45" - else - gmt grdgradient ${gridData} -G${gradfile} -Nt -A0/45 - fi + RunOrEcho ${run_command} "gmt grdgradient ${gridData} -G${gradfile} -Nt -A0/45" fi if [[ ${run_command} == 0 ]]; then @@ -243,11 +239,7 @@ MAP_ANNOT_OFFSET_PRIMARY=2.5p" # 画多边形 if [[ $polyfile != 'null' ]]; then - if [[ ${run_command} == 0 ]]; then - echo "gmt psxy ${polyfile} -JX${layouts[0]}/${pic_height}i -W0.25p,black,- -R${range} -L -K -O >> $psfile" - else - gmt psxy ${polyfile} -JX${layouts[0]}/${pic_height}i -W0.25p,black,- -R${range} -L -K -O >> $psfile - fi + RunOrEcho ${run_command} "gmt psxy ${polyfile} -JX${layouts[0]}/${pic_height}i -W0.25p,black,- -R${range} -L -K -O >> $psfile" fi #添加号码 @@ -267,21 +259,11 @@ MAP_ANNOT_OFFSET_PRIMARY=2.5p" #如果unit等于km则在cptfile后面添加+Uk if [[ ${plot_colorbar} == 1 ]]; then if [[ ${unit} == 'km+Uk' ]]; then - if [[ ${run_command} == 0 ]]; then - echo "gmt psscale -Dx${layouts[2]}+w${layouts[3]} -C${cptfile}+Uk -Bx${bartick} -By+l${unit} \ --X${bar_origin[0]}i -Y${bar_origin[1]}i -O -K >> $psfile" - else - gmt psscale -Dx${layouts[2]}+w${layouts[3]} -C${cptfile}+Uk -Bx${bartick} -By+l${unit} \ - -X${bar_origin[0]}i -Y${bar_origin[1]}i -O -K >> $psfile - fi + RunOrEcho ${run_command} "gmt psscale -Dx${layouts[2]}+w${layouts[3]} -C${cptfile}+Uk -Bx${bartick} -By+l${unit} \ + -X${bar_origin[0]}i -Y${bar_origin[1]}i -O -K >> $psfile" else - if [[ ${run_command} == 0 ]]; then - echo "gmt psscale -Dx${layouts[2]}+w${layouts[3]} -C${cptfile} -Bx${bartick} -By+l${unit} \ --X${bar_origin[0]}i -Y${bar_origin[1]}i -O -K >> $psfile" - else - gmt psscale -Dx${layouts[2]}+w${layouts[3]} -C${cptfile} -Bx${bartick} -By+l${unit} \ - -X${bar_origin[0]}i -Y${bar_origin[1]}i -O -K >> $psfile - fi + RunOrEcho ${run_command} "gmt psscale -Dx${layouts[2]}+w${layouts[3]} -C${cptfile} -Bx${bartick} -By+l${unit} \ + -X${bar_origin[0]}i -Y${bar_origin[1]}i -O -K >> $psfile" fi fi @@ -296,25 +278,12 @@ MAP_ANNOT_OFFSET_PRIMARY=2.5p" fi # 输出 eps 和 png 文件 - if [[ ${run_command} == 0 ]]; then - echo "gmt psconvert $psfile -A -TEG -E300" - else - gmt psconvert $psfile -A -TEG -E300 - fi + RunOrEcho ${run_command} "gmt psconvert $psfile -A -TEG -E300" # 删除临时文件 使用linux终端rm命令 - if [[ ${run_command} == 0 ]]; then - echo "rm $cptfile $psfile gmt.history gmt.conf" - else - rm $cptfile $psfile gmt.history gmt.conf - fi - + RunOrEcho ${run_command} "rm $cptfile $psfile gmt.history gmt.conf" if [[ $plotgrad == 1 ]]; then - if [[ ${run_command} == 0 ]]; then - echo "rm $gradfile" - else - rm $gradfile - fi + RunOrEcho ${run_command} "rm $gradfile" fi # 在终端显示图像 此命令需要imgcat.sh脚本和iTerm终端