Files
insar-management-system-v2/third_party/PyINT/pyint/gmt_grdview.sh
T

84 lines
3.6 KiB
Bash

#!/usr/bin/env bash
# GMT modern mode bash template
# Date: 2024-10-01
#Purpose: quickly generate basic GMT plot
#Author: <chenweicug@126.com>
#Dependencies: GNUPlot, GMT v6
#Written for: GNU/Linux
if [ $# -lt 1 ]; then
more <<EOF
gmt_plot_interf.sh is quickly plot the unwrapped phase interferograms and the Los displacement.
Usage: gmt_plot_interf.sh grdfile satellite
where
grdfile: grd file which contains unwrapped phase
satellite: satellite names: ALOS, S1
Example:
bash gmt_plot_interf.sh s1a_20200530_103025_scn1_unw_ifgramPhase.grd S1
bash gmt_plot_interf.sh ALOS_PHDR_unw_V10_1089_S1.grd ALOS
EOF
exit
fi
export GMT_SESSION_NAME=$$ # Set a unique session name
gmt set FONT 14p
gmt set FONT_LABEL 10P
export grdfile=$1
export xmin=`gmt grdinfo $grdfile | grep 'x_min' | awk '{print $3}'`
export xmax=`gmt grdinfo $grdfile | grep 'x_min' | awk '{print $5}'`
export ymin=`gmt grdinfo $grdfile | grep 'y_min' | awk '{print $3}'`
export ymax=`gmt grdinfo $grdfile | grep 'y_min' | awk '{print $5}'`
export vmin=`gmt grdinfo $grdfile | grep 'v_min' | awk '{print $3}'`
export vmax=`gmt grdinfo $grdfile | grep 'v_min' | awk '{print $5}'`
export flag=`gmt grdinfo $grdfile | grep 'v_min' | awk '{print $5+$3}'`
export region="$xmin/$xmax/$ymin/$ymax"
export color_file=polar
echo "the plot region is $region"
export gmt_basename=`basename ${grdfile}`
echo " flag is $flag and vmin is $vmin and vmax is $vmax "
if [ ` echo "$flag > 0 " | bc` == 1 ] && [ ` echo "$vmax > 1 " | bc` == 1 ]; then
echo "1"
export cmin=`echo | gmt grdinfo $grdfile | grep 'v_min' | awk '{print $5/$3 } '`
export max_num=`echo "scale=6; 1/$vmax" | bc `
export min_num=`echo "$max_num*$vmin" | bc `
gmt makecpt -C$color_file -T$vmin/$vmax/0.01 -G$cmin/1 -Z >1.cpt
elif [ ` echo "$flag < 0 " | bc` == 1 ] && [ ` echo "$vmin < -1 " | bc` == 1 ]; then
echo "2"
export cmax=`echo | gmt grdinfo $grdfile | grep 'v_min' | awk '{print $3/$5*-1} '`
export min_num=`echo "scale=6; 1/$vmin" | bc`
export max_num=`echo "$min_num*$vmax" | bc`
gmt makecpt -C$color_file -T$vmin/$vmax/0.01 -G-1/$cmax -Z >1.cpt
elif [ `echo " $flag > 0 " | bc` == 1 ] && [ ` echo "$vmax < 1 " | bc` == 1 ]; then
echo "3"
if [ ` echo "$vmax < 0.1 " | bc` == 1 ]; then
export vmin1=$(echo "scale=2; $vmin*10" | bc)
export vmax1=$(echo "scale=2; $vmax*10" | bc)
gmt makecpt -C$color_file -G$vmin1/$vmax1 -T$vmin/$vmax/0.01 -Z >1.cpt
else
gmt makecpt -C$color_file -G$vmin/$vmax -T$vmin/$vmax/0.01 -Z >1.cpt
fi
elif [ ` echo "$flag < 0 " | bc` == 1 ] && [ ` echo "$vmin > -1 " | bc` == 1 ]; then
if [ ` echo "$vmin >-0.1 " | bc` == 1 ]; then
echo "4"
export vmin1=$(awk "BEGIN{print($vmin*10)}")
export vmax1=$(awk "BEGIN{print($vmax*10)}")
gmt makecpt -C$color_file -G$vmin1/$vmax1 -T$vmin/$vmax/0.01 -Z >1.cpt
else
gmt makecpt -C$color_file -G$vmin/$vmax -T$vmin/$vmax/0.01 -Z >1.cpt
fi
else
echo "5"
gmt makecpt -C$color_file -T$vmin/$vmax/0.01 -Z >1.cpt
fi
gmt begin ${gmt_basename} png
gmt grdimage $grdfile -C1.cpt -JM7.3c -Bxa1 -Bya1 -BWSen -R$region
gmt colorbar -Dx3.5/-1c+w6c/0.25c+jBC+h -Bxa0.2f0.1 -C1.cpt
gmt end show