To begin making projected geoTiffs for ArcGIS and ISIS, start with the txt files generated when making the photometric cubes. The scripts used produce the following txt files:
IoverF-<bigmap>-<img>.txt (Ex. IoverF-LEADHL-N1563651588.txt)
- LEADHL-a.TXT
- LEADHL-e.TXT
- LEADHL-i.TXT
The above files need to be uploaded to the Hawk cluster, while keeping their parent directory structure.
Go to the photocube directory for each bigmap
rsync -hapvP --exclude=*.cub --exclude=*.prt N1* [email protected]:/home/jweirich/Tethys/geoTiffTethys/LEADHL/
Also copy the output from backplanesGMT and config.txt
Ex. config.txt
BIGMAP=LEADHL ARGR=-R226.209259/261.399750/3.66536975/33.9945526 ARGI=-I801+n DEGPX=0.0378641483770287 PROJECT=60300 BODY=Tethys RUNALL=No VERSION=1
The basic command being run is similar to the Topography step above:
echo "Blockmean"
gmt blockmean $var $argR $argI > ${product}out
echo "sphereinterpolate"
cat ${product}out | gmt sphinterpolate $argR $argI -G${product}.nc... where $product is going to be IoverF, a, e, or i. Everything else is just a wrapper to deconflict all the files since we're running in parallel.
I have the GMT commands above in a script called makeaGeoBig.sh which reads most of the inputs from config.txt. makeGeoBig.sh is called by makeIoverFGeoBig.sh, makePhaseGeoBig.sh, makeEmissGeoBig.sh, and makeIncGeoBig.sh
The key lines in these scripts are: (Ex. below is for Incidence)
echo "getting ready for GMT ..." ~/bin/bustGrid $bigmap-i.TXT > bustedi-$bigmap-$img.txt paste ../$bigmap-lonlat.txt bustedi-$bigmap-$img.txt > $var echo "calling makeGeoTiffBig.sh" sh ~/bin/makeGeoTiffBig.sh $var $product
$product is as before, while $var is IoverF.ll, phase.ll, emiss.ll, or inc.ll
The above four scripts are called by run4.sh, which is essentially a copy/paste script with different images. Note the use of & and "wait". & is to get multiple processors running on each machine, and "wait" is to keep the script running until all four processes complete.
The key lines from run4.sh look like this:
cd $img sh ~/bin/makeIoverFGeoBig.sh $img & sh ~/bin/makePhaseGeoBig.sh $img & sh ~/bin/makeEmissGeoBig.sh $img & sh ~/bin/makeIncGeoBig.sh $img & cd .. wait
Since there are 8 processors per Hawk node, we want to call 2 images per node. To do this we have a script that uses sbatch commands. Here's what one of those looks like:
#\!/bin/bash # #SBATCH -J Call1.sh # Job name #SBATCH -t 2-0:00 # time (D-HH:MM) #SBATCH --partition=cpu #SBATCH -o slurm.%N.%j.out # STDOUT #SBATCH -e slurm.%N.%j.err # STDERR sh ~/bin/run4.sh N1563651588 & sh ~/bin/run4.sh N1563651648 & wait
Rather than type each by hand, I instead have a script (makeScript.sh) to make a bunch of these:
# 29 Sep 2021 - John R. Weirich
# Script to call different photo scripts
imgList=$1
if [ -z $imgList ]; then
echo "Please select a list of images"
echo "Usage: <program> <Image List File>"
exit
fi
list=`cat $imgList`
top=1
count=0
rm -f Call*.sh
for i in $list
do
if [ $top = "1" ]
then
let count=$count+1
out="Call$count.sh"
echo "#!/bin/bash" > $out
echo "#" >> $out
echo "#SBATCH -J $out # Job name" >> $out
echo "#SBATCH -t 2-0:00 # time (D-HH:MM)" >> $out
echo "#SBATCH --partition=cpu" >> $out
echo "#SBATCH -o slurm.%N.%j.out # STDOUT" >> $out
echo "#SBATCH -e slurm.%N.%j.err # STDERR" >> $out
echo " " >> $out
echo "sh ~/bin/run4.sh $i &" >> $out
top=2
else
echo "sh ~/bin/run4.sh $i &" >> $out
echo " " >> $out
echo "wait" >> $out
top=1
fi
done
if [ $top = "2" ]
then
echo " " >> $out
echo "wait" >> $out
fiTo fire everything off, you'll make a copy/paste that will look like this:
sbatch Call1.sh sbatch Call2.sh etc.
Once all those processes are finished, you'll have converted each *.txt file into a *.nc file. Now pull that back down to your local machine to run through GDAL.
rsync -hapvP --prune-empty-dirs --include="*/" --include="*.nc" --exclude="*" [email protected]:/home/jweirich/Tethys/geoTiffTethys/LEADHL/ .
Once downloaded, run
sh ../bin/wrapperAfterClusterImage.sh imgListLEADHL
wrapperAfterClusterImages.sh is this:
# 30 Sep 2021 - John R. Weirich
# Wrapper to turn all the *.nc into geoTIFFS
imgList=$1
if [ -z $imgList ]; then
echo "Please select a list of images"
echo "Usage: <program> <Image List File>"
exit
fi
list=`cat $imgList`
for i in $list
do
cd $i
sh /usr/local/spc/bin/afterClusterImage.sh IoverF $i
sh /usr/local/spc/bin/afterClusterImage.sh a $i
sh /usr/local/spc/bin/afterClusterImage.sh e $i
sh /usr/local/spc/bin/afterClusterImage.sh i $i
cd ..
doneAnd afterClusterImage.sh is this:
# 28 Sep 2021 - John R. Weirich
# Make the various geoTiffs using GDAL
# Run from geoTiff[directory]/
# 30 Sep 2021: Began modifying, then undid changes (hopefully they are undone correctly!)
# Usage in geoTiff directory : sh /usr/local/spc/bin/afterClusterBigmap.sh <product/type name> <image>
type=$1
img=$2
if [ -z $type ]; then
echo "Please select the type"
echo "Usage: <program> <type> <Image>"
exit
fi
if [ -z $img ]; then
echo "Please select the image"
echo "Usage: <program> <type> <Image>"
exit
fi
if [ ! -e ../config.txt ]
then
echo "Make config.txt!"
exit
fi
source ../config.txt
if [ ! -e ./${type}.nc ]
then
echo "Make ${type}.nc!"
exit
fi
bigmap=$BIGMAP
argR=$ARGR
argI=$ARGI
degPx=$DEGPX
proj=$PROJECT
body=$BODY
runAll=$RUNALL
ver=$VERSION
echo "$bigmap"
echo "$argR"
echo "$argI"
echo "$degPx"
echo "$proj"
echo "$body"
echo "$runAll"
# Make normal GeoTiff
echo "gdal translate"
gdal_translate -of GTiff -b 1 -a_srs ../support/$proj.prj NETCDF:${type}.nc ${bigmap}-${img}-${type}-v${ver}.tif
#Make GeoTiff readable by ISIS
gdal_translate -of ISIS3 -tr $degPx $degPx -r bilinear -b 1 -co TARGET_NAME=$body -co DATA_LOCATION=GEOTIFF -a_srs ../support/$proj.prj NETCDF:${type}.nc ${bigmap}-${img}-${type}-ISIS-v${ver}.lblNote: See "Grid to GeoTIF" for a better program than gdal_translate, since gdal_translate doesn't always write the projection.