#!/bin/bash
# usage:
#   geotiff2kal map.tif > map.kal
#
# convert GeoTIFF Calibration to Glopus KAL

if [ $# -ne 1 ]; then
  echo 'Syntax: geotiff2kal map.tif > map.kal'
  exit
fi

image=$1
imageinfo=$1.info
gdalinfo "$image" > "$imageinfo"

base=${image%.*}
tempcoo=$base.coordinates

utmzone=`cat "$imageinfo" | grep "^PROJCS" | sed "s/^PROJCS.*UTM zone \(.*\)\".*/\1/"`
datum=`cat "$imageinfo" | grep "GEOGCS" | sed "s/GEOGCS\[\"\(.*\)\".*/\1/"`

sizex=`cat "$imageinfo" | grep "^Size is " | sed "s/^Size is \(.*\), \(.*\)/\1/"`
sizey=`cat "$imageinfo" | grep "^Size is " | sed "s/^Size is \(.*\), \(.*\)/\2/"`

ul=`cat "$imageinfo" | grep "^Upper Left" | sed "s/^Upper Left  ( \(.*\), \(.*\)) .*/\1 \2/"`
ll=`cat "$imageinfo" | grep "^Lower Left" | sed "s/^Lower Left  ( \(.*\), \(.*\)) .*/\1 \2/"`
ur=`cat "$imageinfo" | grep "^Upper Right" | sed "s/^Upper Right ( \(.*\), \(.*\)) .*/\1 \2/"`
lr=`cat "$imageinfo" | grep "^Lower Right" | sed "s/^Lower Right ( \(.*\), \(.*\)) .*/\1 \2/"`
c=`cat "$imageinfo" | grep "^Center" | sed "s/^Center      ( \(.*\), \(.*\)) .*/\1 \2/"`

rm "$imageinfo"

#echo $utmzone $datum

echo -e $ul "\n" $ll "\n" $ur "\n" $lr | \
cs2cs +proj=utm +zone=$utmzone +to +proj=longlat +datum=WGS84 -f %.9f | cut -s -f 1 -d " " > $tempcoo
#+datum=$datum

echo -e 0 0 "\n" 0 $sizey "\n" $sizex 0 "\n" $sizex $sizey | \
paste $tempcoo - | asc2kal "$image" $sizex $sizey

rm $tempcoo
