#!/bin/ksh
#
# latlon_rad [-s]
#
# Quickly establishes whether (lat,lon) are in radians or degrees
#
# Returns 1, if in radians, 0 if not and -1 if could not be determined
#
# Use -s (s for slow) to scan all pool files.
# By default uses quick mode and checks the very first pool only
#
# (lat,lon) are assumed to be lat@hdr and lon@hdr
# Override via ODB_LAT and ODBLON, respectively
#

set -eu

mode="-mxQ"
if [[ $# -ge 1 ]] ; then
  if [[ $1 -eq '-s' ]] ; then
    mode="-mx"
  else
    echo "Usage: latlon_rad [-s]" >&2
    exit 1
  fi
fi

export ODB_LAT=${ODB_LAT:="lat@hdr"}
export ODB_LON=${ODB_LON:="lon@hdr"}

tables=$(echo "${ODB_LAT} ${ODB_LON}" |\
         perl -pe 's/\w+\@(\w+)\b/$1/g; s/[,:\s]+/\n/g' | sort -u)

# pi
pi=$(echo "4*a(1)" | bc -l)
eps=0.01  # Added to pi to just accept abs(values) < pi + eps
#eps=$pi  # treat abs(lat,lon-values) < 2*pi as radians

(echo "$pi $eps"; 
 dcagen $mode -t "$tables" -c "${ODB_LAT}" -c "${ODB_LON}" 2>/dev/null) |\
awk 'BEGIN { res=0; nrec=0; } { \
     if (NR==1) { pi=$1; eps=$2; gaagaa=pi+eps; } else { nrec++;\
        if ($2 > -gaagaa && $3 < gaagaa) { res++; } } } \
     END { if (nrec==0) { res=-1; } else { res/=nrec; } \
           printf("%d\n",res); }'


