#! /usr/bin/env python3
"""proj_ra2ll_ascii — ASCII variant of proj_ra2ll.

Python port of csh proj_ra2ll_ascii.csh (D. Sandwell 2007).

Usage:  proj_ra2ll_ascii trans.dat phase_ra.txt phase_ll.txt

Inputs:
  trans.dat        — file generated by SAT_llt2rat (r a topo lon lat)
  phase_ra.txt     — ASCII file of (range azimuth value)
Output:
  phase_ll.txt     — ASCII file of (lon lat value)

The raln.grd / ralt.grd intermediate files are kept if they already exist,
so calling this repeatedly with the same trans.dat is cheap.
"""
import os
import sys
from gmtsar_lib import run


def proj_ra2ll_ascii():
    if len(sys.argv) < 4:
        sys.exit(
            "Usage: proj_ra2ll_ascii trans.dat phase_ra.txt phase_ll.txt\n"
            "  trans.dat    - file generated by SAT_llt2rat (r a topo lon lat)\n"
            "  phase_ra.txt - input ASCII file of (range azimuth value)\n"
            "  phase_ll.txt - output ASCII file of (lon lat value)"
        )
    trans, phase_ra, phase_ll = sys.argv[1], sys.argv[2], sys.argv[3]
    V = "" if os.path.isfile(os.path.expanduser("~/.quiet")) else "-V"

    if not (os.path.isfile("raln.grd") and os.path.isfile("ralt.grd")):
        run(f"gmt gmtconvert {trans} -o0,1,3 -bi5d -bo3f > raln")
        run(f"gmt gmtconvert {trans} -o0,1,4 -bi5d -bo3f > ralt")
        run(f"gmt surface raln `gmt gmtinfo {phase_ra} -I16/32` "
            f"-bi3f -I8/32 -T.50 -Graln.grd {V}")
        run(f"gmt surface ralt `gmt gmtinfo {phase_ra} -I16/32` "
            f"-bi3f -I8/32 -T.50 -Gralt.grd {V}")

    # Sample lon, lat at each (range, azimuth) point; output (lon lat value)
    run(f"gmt grdtrack {phase_ra} -nl -Graln.grd -Gralt.grd -o3,4,2 > {phase_ll}")
    run("rm -f rap* llp llpb")


if __name__ == "__main__":
    proj_ra2ll_ascii()
