diff options
author | Aaron LI <aaronly.me@outlook.com> | 2017-05-21 14:23:02 +0800 |
---|---|---|
committer | Aaron LI <aaronly.me@outlook.com> | 2017-05-21 14:23:02 +0800 |
commit | 0a8e96145bfa3aac3aeb1a013f07e88c7a6db1b8 (patch) | |
tree | 063d1b3d1469777bccf180cc028b9441b644ba7c /bin | |
parent | bd6eb2f4400babee3dd540bf6986686f383ea380 (diff) | |
download | atoolbox-0a8e96145bfa3aac3aeb1a013f07e88c7a6db1b8.tar.bz2 |
Add bin/radec.py: Convert coordinate among different formats
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/radec.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/bin/radec.py b/bin/radec.py new file mode 100755 index 0000000..4cc2b71 --- /dev/null +++ b/bin/radec.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +# +# Copyright (c) 2017 Aaron LI <aly@aaronly.me> +# MIT License +# + +""" +Convert among various (R.A., Dec.) coordinate formats. +""" + +import argparse + +from astropy import units as au +from astropy.coordinates import Angle + + +def parse_coord(c): + if len(c) == 6: + # h m s d m s + ra = Angle((float(c[0]), float(c[1]), float(c[2])), unit=au.hourangle) + dec = Angle((float(c[3]), float(c[4]), float(c[5])), unit=au.deg) + elif len(c) == 2: + ra = Angle(float(c[0]), unit=au.deg) + dec = Angle(float(c[1]), unit=au.deg) + else: + raise ValueError("invalid coordinate: {0}".format(c)) + return (ra, dec) + + +def main(): + parser = argparse.ArgumentParser( + description="Convert among multiple coordinate formats") + parser.add_argument("coord", nargs="+") + args = parser.parse_args() + + ra, dec = parse_coord(args.coord) + info = ( + "%-14s %-14s\n" % ("R.A.", "Dec.") + + "%s--%s\n" % ("-"*14, "-"*14) + + "%-14.3f %-+14.3f\n" % (ra.deg, dec.deg) + + "%-14s %-14s\n" % ( + ra.to_string(unit=au.hourangle, precision=4), + dec.to_string(unit=au.deg, alwayssign=True, precision=3)) + + "%-14s %-14s\n" % ( + ra.to_string(unit=au.hourangle, sep=":", precision=4), + dec.to_string(unit=au.deg, alwayssign=True, + sep=":", precision=3)) + + "%-14s %-14s\n" % ( + ra.to_string(unit=au.hourangle, sep=" ", precision=4), + dec.to_string(unit=au.deg, alwayssign=True, + sep=" ", precision=3)) + ) + print(info) + + +if __name__ == "__main__": + main() |