summaryrefslogtreecommitdiffstats
path: root/ds9/library/catsdss.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'ds9/library/catsdss.tcl')
-rw-r--r--ds9/library/catsdss.tcl176
1 files changed, 176 insertions, 0 deletions
diff --git a/ds9/library/catsdss.tcl b/ds9/library/catsdss.tcl
new file mode 100644
index 0000000..a2d6769
--- /dev/null
+++ b/ds9/library/catsdss.tcl
@@ -0,0 +1,176 @@
+# Copyright (C) 1999-2016
+# Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+# For conditions of distribution and use, see copyright notice in "copyright"
+
+package provide DS9 1.0
+
+proc CATSDSS {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ global debug
+ if {$debug(tcl,cat)} {
+ puts stderr "CATSDSS $varname"
+ }
+
+ set var(proc,reader) CATSDSSReader
+
+ # coord (degrees)
+ switch $var(skyformat) {
+ degrees {
+ set xx $var(x)
+ set yy $var(y)
+ }
+ sexagesimal {
+ set xx [h2d [Sex2H $var(x)]]
+ set yy [Sex2D $var(y)]
+ }
+ }
+
+ # size (arcmin)
+ switch $var(rformat) {
+ degrees {
+ set ww [expr $var(width)*60.]
+ set hh [expr $var(height)*60.]
+ }
+ arcmin {
+ set ww $var(width)
+ set hh $var(height)
+ }
+ arcsec {
+ set ww [expr $var(width)/60.]
+ set hh [expr $var(height)/60.]
+ }
+ }
+
+ # now to radius
+ set rr [expr sqrt($ww*$ww+$hh*$hh)/2.]
+
+ set query {}
+ append query "ra=$xx&"
+ append query "dec=$yy&"
+ append query "radius=$rr&"
+
+# append query "min_ra=[expr $xx-$ww/2.]&max_ra=[expr $xx+$ww/2.]&"
+# append query "min_dec=[expr $yy-$hh/2.]&max_dec=[expr $yy+$hh/2.]&"
+
+ # output
+ if {$var(allrows)} {
+ append query "entries=all&"
+ } else {
+ append query "topnum=$var(max)&"
+ }
+ append query "format=csv&"
+
+ set var(url) "http://cas.sdss.org/astrodr${var(catalog)}/en/tools/search/x_radial.asp?$query"
+
+ set var(query) {}
+
+ CATLoadIncr $varname
+}
+
+proc CATSDSSReader {t sock token} {
+ upvar #0 $t T
+ global $t
+
+ set result 0
+
+ if { ![info exists ${t}(state)] } {
+ set T(state) 0
+ }
+
+ switch -- $T(state) {
+ 0 {
+ # init db
+ fconfigure $sock -blocking 1
+ set T(Nrows) 0
+ set T(Ncols) 0
+ set T(Header) {}
+ set T(HLines) 0
+
+ set T(state) 1
+ }
+
+ 1 {
+ # process header
+ if {[gets $sock line] == -1} {
+ return
+ }
+
+ if {[string equal $line "No objects have been found"]} {
+ return
+ }
+
+ # cols
+ incr ${t}(HLines)
+ set n $T(HLines)
+ set result [string length "$line"]
+ set T(H_$n) $line
+ set T(Header) [split $T(H_$n) ","]
+
+ # dashes
+
+ set T(Dashes) [regsub -all {[A-Za-z0-9]} $T(H_$n) {-}]
+ set T(Ndshs) [llength $T(Dashes)]
+
+ starbase_colmap $t
+ set T(state) 2
+ }
+
+ 2 {
+ # process table
+ if {[gets $sock line] == -1} {
+ set T(state) 0
+ } else {
+ set result [string length "$line"]
+ set line [string trim $line]
+ if {$line != {}} {
+ # ok, save it
+ incr ${t}(Nrows)
+ set r $T(Nrows)
+
+ set NCols [starbase_ncols $t]
+ set c 1
+ foreach val [split $line ","] {
+ set T($r,$c) $val
+ incr c
+ }
+ for {} {$c <= $NCols} {incr c} {
+ set T($r,$c) {}
+ }
+ }
+ }
+ }
+ }
+
+ return $result
+}
+
+proc CATSDSSAck {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ set msg {Acknowledgments for SDSS
+
+Funding for the Sloan Digital Sky Survey (SDSS) has been provided
+by the Alfred P. Sloan Foundation, the Participating Institutions,
+the National Aeronautics and Space Administration, the National
+Science Foundation, the U.S. Department of Energy, the Japanese
+Monbukagakusho, and the Max Planck Society. The SDSS Web site is
+http://www.sdss.org/.
+
+The SDSS is managed by the Astrophysical Research Consortium (ARC)
+for the Participating Institutions. The Participating Institutions
+are The University of Chicago, Fermilab, the Institute for
+Advanced Study, the Japan Participation Group, The Johns Hopkins
+University, the Korean Scientist Group, Los Alamos National
+Laboratory, the Max-Planck-Institute for Astronomy (MPIA), the
+Max-Planck-Institute for Astrophysics (MPA), New Mexico State
+University, University of Pittsburgh, University of Portsmouth,
+Princeton University, the United States Naval Observatory, and the
+University of Washington.
+ }
+
+ SimpleTextDialog ${varname}ack [msgcat::mc {Acknowledgment}] \
+ 80 10 insert top $msg
+}