diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
commit | fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch) | |
tree | bdda434976bc09c864f2e4fa6f16ba1952b1e555 /vo/votools/obslogoverlay.cl | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'vo/votools/obslogoverlay.cl')
-rw-r--r-- | vo/votools/obslogoverlay.cl | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/vo/votools/obslogoverlay.cl b/vo/votools/obslogoverlay.cl new file mode 100644 index 00000000..0fdc6863 --- /dev/null +++ b/vo/votools/obslogoverlay.cl @@ -0,0 +1,166 @@ +#{ OBSLOGOVERLAY -- Overlay an observation catalog on the display. + +procedure obslogoverlay (field, mission) + +string field { prompt = "Query image/field name" } +string mission { prompt = "Mission name?" } + +real size = 0.25 { prompt = "Query size" } +int frame = 1 { prompt = "Display frame" } +bool display = yes { prompt = "Display image/field?" } +bool print = no { prompt = "List instead of overlay?" } +int mkcolor = 0 { prompt = "Marker color" } +int mksize = 60 { prompt = "Marker size (arcsec)" } +int maxobs = 0 { prompt = "Max observations to draw" } + +bool verbose = yes { prompt = "Verbose output?" } +int status = 0 { prompt = "Service status code" } + +begin + string obs, lname, olog, tvcoords, rad, raw, pcols + real ra, dec, sz, scale + bool verb, disp, llist + int mcol, fr, nres, max, mksz + + + lname = field # Get params to local variables + obs = mission + fr = frame + sz = size + max = maxobs + mksz = mksize * 10 + mcol = mkcolor + verb = verbose + llist = print + if (llist) + disp = no + else + disp = display + + + if (imaccess (lname) == yes) { + iferr { wcsinfo (lname) } then { + status = 1 + error (0, "Cannot determine image coords for `"//lname//"'") + } else { + ra = wcsinfo.midx + dec = wcsinfo.midy + sz = wcsinfo.size + scale = wcsinfo.scale + if (disp) + display (lname, fr, >& "dev$null") + } + } else { + sesame (lname, verbose-) + ra = sesame.ra + dec = sesame.dec + scale = 0.1 + if (disp) + dss (lname, use_disp+) + lname = "cache$" // lname // ".fits" + } + + + # Do a generic 1' box + printf ("%.1f,%.1f\n", (scale*mksz), (scale*mksz)) | scan(rad) + + # Create temp file for the output + olog = mktemp ("tmp$olog") + raw = mktemp ("tmp$olog") + + # Get observation log sources + switch (substr (strupr (obs), 1, 1)) { + case "E": # EXOSAT Observation log + { vodata ("ivo://nasa.heasarc/exolog", "", ra=ra, dec=dec, + size=sz, format="raw", >& raw) + pcols = "4,5" + if (mcol == 0) + mcol = 206 + } + case "F": # FUSE Observation log + { vodata ("ivo://nasa.heasarc/fuselog", "", ra=ra, dec=dec, + size=sz, format="raw", >& raw) + pcols = "4,5" + if (mcol == 0) + mcol = 208 + } + case "H": # HST Observation log + { vodata ("ivo://nasa.heasarc/hstaec", "", ra=ra, dec=dec, + size=sz, format="raw", >& raw) + pcols = "3,4" + if (mcol == 0) + mcol = 204 + } + case "I": # IUE Observation log + { vodata ("ivo://nasa.heasarc/iuelog", "", ra=ra, dec=dec, + size=sz, format="raw", >& raw) + pcols = "3,4" + if (mcol == 0) + mcol = 208 + } + case "S": # Spitzer Observation log + { vodata ("ivo://nasa.heasarc/spitzmastr", "", ra=ra, dec=dec, + size=sz, format="raw", >& raw) + pcols = "3,4" + if (mcol == 0) + mcol = 205 + } + case "X": # XMM Observation log + { vodata ("ivo://nasa.heasarc/xmmmaster", "", ra=ra, dec=dec, + size=sz, format="raw", >& raw) + pcols = "5,6" + if (mcol == 0) + mcol = 207 + } + + # ================================================================= + # FIXME -- These no longer work. Mar2012 + # ================================================================= + case "R": # Rosat Observation log + { # FIXME + vodata ("rosatlog", "", ra=ra, dec=dec, size=sz, + format="raw", >& raw) + pcols = "10,11" + if (mcol == 0) + mcol = 208 + } + case "C": # Chandra Observation log + { # FIXME + vodata ("ivo://CDS.VizieR/B/chandra", "", ra=ra, dec=dec, + size=sz, format="raw", >& raw) + pcols = "3,4" + if (mcol == 0) + mcol = 205 + } + } + + votpos (raw, number-, >& olog) + count (olog) | scan (nres) + if (max == 0) + max = nres + if (verbose) + printf ("%d observations found for %s\n", max, strupr(obs)) + + + # Mark the display. + if (llist) { + type (raw) + } else { + tvcoords = mktemp ("tmp$tvc") + + type (olog) | head ("STDIN", nl=max) | \ + wcsctran ("STDIN", tvcoords, lname, verbose=verb, + inwcs="world", outwcs="logical", units="n n") + tvmark (frame=fr, coords=tvcoords, mark="rectangle", length=rad, + color=mcol, txsize=1, lab+) + + delete (tvcoords, verify-, >& "dev$null") + } + + # Clean up. + #delete (raw, verify-, >& "dev$null") + #delete (olog, verify-, >& "dev$null") + + status = 0 +end + |