⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queryvizier.pro

📁 basic median filter simulation
💻 PRO
字号:
function Queryvizier, catalog, target, dis, VERBOSE=verbose, CANADA = canada, $               CONSTRAINT = constraint, ALLCOLUMNS=allcolumns, SILENT=silent;+; NAME: ;   QUERYVIZIER;; PURPOSE: ;   Query any catalog in the Vizier database by position; ; EXPLANATION:;   Uses the IDL SOCKET command to provide a positional query of any catalog ;   in the the Vizier (http://vizier.u-strasbg.fr/) database over the Web and;   return results in an IDL structure.    ;   Modified in May 2006 to return an anonymous rather than a named structure.; ;    ; CALLING SEQUENCE: ;     info = QueryVizier(catalog, targetname_or_coords, [ dis;                        /ALLCOLUMNS, /CANADA, CONSTRAINT= ,/VERBOSE ]);; INPUTS: ;      CATALOG - Scalar string giving the name of the VIZIER catalog to be;            searched.    The complete list of catalog names is available at;            http://vizier.u-strasbg.fr/vizier/cats/U.htx . ;;            Popular VIZIER catalogs include  ;            'II/282' - Sloan SDSS photometric catalog Release 6 (2007);            '2MASS-PSC' - 2MASS point source catalog (2003);            'GSC2.3' - Version 2.3.2 of the HST Guide Star Catalog (2006);            'USNO-B1' - Verson B1 of the US Naval Observatory catalog (2003);            'NVSS'  - NRAO VLA Sky Survey (1998);            'B/DENIS/DENIS' - 2nd Deep Near Infrared Survey of southern Sky;            'I/259/TYC2' - Tycho-2 main catalog (2000);            'I/311/HIP2' - Hipparcos main catalog, new reduction (2007);;          Note that some names will prompt a search of multiple catalogs;          and QUERYVIZIER will only return the result of the first search.;          Thus, setting catalog to "HIP2" will search all catalogs ;          associated with the Hipparcos mission, and return results for the;          first catalog found.    To specifically search the Hipparcos or;          Tycho main catalogs use the VIZIER catalog names listed above;                             ;      TARGETNAME_OR_COORDS - Either a scalar string giving a target name, ;          (with J2000 coordinates determined by SIMBAD), or a 2-element;          numeric vector giving the J2000 right ascension in *degrees* and ;          the target declination in degrees.;          If the targetname is set to 'NONE' then QUERYVIZIER will perform;          an all-sky search using the constraints given in the CONSTRAINT;          keyword.   ; OPTIONAL INPUT:;    dis - scalar or 2-element vector.   If one value is supplied then this;          is the search radius in arcminutes.     If two values are supplied;          then this is the width (i.e., in longitude direction) and height;          of the search box.   Default is a radius search with radius of;          5 arcminutes;; OUTPUTS: ;   info - Anonymous IDL structure containing information on the catalog stars ;          within the specified distance of the specified center.     The ;          structure tag names are identical with the VIZIER  catalog column ;          names, with the exception of an occasional underscore;          addition, if necessary to convert the column name to a valid ;          structure tag.    The VIZIER Web  page should consulted for the ;          column names and their meaning for each particular catalog..;           ;          If the tagname is numeric and the catalog field is blank then either;          NaN  (if floating) or -1 (if integer) is placed in the tag.;;          If no sources are found within the specified radius, or an;          error occurs in the query then -1 is returned. ; OPTIONAL KEYWORDS:;          /ALLCOLUMNS - if set, then all columns for the catalog are returned;                 The default is to return a smaller VIZIER default set. ;;          /CANADA - By default, the query is sent to the main VIZIER site in;            Strasbourg, France.   If /CANADA is set then the VIZIER site;            at the Canadian Astronomical Data Center (CADC) is used instead.;            Note that not all Vizier sites have the option to return;            tab-separated values (TSV) which is required by this program.;   ;          CONSTRAINT - string giving additional nonpositional numeric ;            constraints on the entries to be selected.     For example, when ;            in the GSC2.2  catalog, to only select sources with Rmag < 16 set ;            Constraint = 'Rmag<16'.    Multiple constraints can be ;            separated by commas.    Use '!=' for "not equal", '<=' for smaller;            or equal, ">=" for greater than or equal.  See the complete list;            of operators at  ;                 http://vizier.u-strasbg.fr/doc/asu.html#AnnexQual;            For this keyword only, **THE COLUMN NAME IS CASE SENSITIVE** and ;            must be written exactly as displayed on the VIZIER Web page.  ;            Thus for the GSC2.2 catalog one must use 'Rmag' and not 'rmag' or;            'RMAG'.    In addition, *DO NOT INCLUDE ANY BLANK SPACE* unless it ;            is a necessary part of the query.;         ;           /SILENT - If set, then no message will be displayed if no sources;                are found.    Errror messages are still displayed.;           /VERBOSE - If set then the query sent to the VIZIER site is;               displayed, along with the returned title(s) of found catalog(s); EXAMPLES: ;          (1) Plot a histogram of the J magnitudes of all 2MASS point sources ;          stars within 10 arcminutes of the center of the globular cluster M13 ;;          IDL>  info = queryvizier('2MASS-PSC','m13',10);          IDL> plothist,info.jmag,xran=[10,20];;          (2)  Find the brightest R magnitude GSC2.2 source within 3' of the ;               J2000 position ra = 10:12:34, dec = -23:34:35;          ;          IDL> str = queryvizier('GSC2.2',[ten(10,12,34)*15,ten(-23,34,35)],3);          IDL> print,min(str.rmag,/NAN);;          (3) Find sources with V < 19 in the Magellanic Clouds Photometric ;              Survey (Zaritsky+, 2002) within 5 arc minutes of  the position ;              00:47:34 -73:06:27;;              Checking the VIZIER Web page we find that this catalog is;          IDL>  catname =  'J/AJ/123/855/table1';          IDL>  ra = ten(0,47,34)*15 & dec = ten(-73,6,27);          IDL> str = queryvizier(catname, [ra,dec], 5, constra='Vmag<19');;          (4) Perform an all-sky search of the Tycho-2 catalog for stars with;              BTmag = 13+/-0.1;;         IDL> str = queryvizier('I/259/TYC2','NONE',constrain='BTmag=13+/-0.1');; PROCEDURES USED:;          GETTOK(),IDL_VALIDNAME()(if prior to V6.0), REMCHAR, REPSTR(),;          STRCOMPRESS2(), WEBGET(); TO DO:;       (1) Allow specification of output sorting; MODIFICATION HISTORY: ;         Written by W. Landsman  SSAI  October 2003;         Give structure name returned by VIZIER not that given by user;                    W. Landsman   Feburary 2004 ;         Don't assume same format for all found sources W. L. March 2004;         Added CONSTRAINT keyword for non-positional constraints WL July 2004;         Remove use of EXECUTE() statement WL June 2005;         Make dis optional as advertised WL August 2005;         Update for change in Vizier output format WL February 2006;         Fix problem in Feb 2006 update when only 1 object found;                     WL/D.Apai        March 2006;         Accept 'E' format for floating point. M. Perrin April 2006;         Added /ALLCOLUMNS option to return even more data.  M. Perrin, May 2006;         Return anonymous structure W. Landsman  May 2006;         Removed V6.0 notation to restore V5 compatibility W.Landsman July2006;         Accept target='NONE' for all-sky search, allow '+/-' constraints;                W. Landsman  October 2006;         Use HTTP 1.0 protocol in call to webget.pro;         Use vector form of IDL_VALIDNAME if V6.4 or later W.L. Dec 2007;         Update Strasbourg Web address for target name W.L. 3 March 2008;         Also update Web address for coordinate search W.L. 7 March 2008 ;         Allow for 'D' specification format  R. Gutermuth/W.L.  June 2008;         Allow for possible lower-case returned formats  W.L. July 2008;         Use STRCOMPRESS2()to remove blanks around operators in constraint;              string  W.L.  August 2008;         Added /SILENT keyword  W.L.  Jan 2009;-  compile_opt idl2  if N_params() LT 2 then begin       print,'Syntax - info = QueryVizier(catalog, targetname_or_coord, dis,'       print,'         [/ALLCOLUMNS, /SILENT, /VERBOSE, /CANADA, CONSTRAINT= ]'       print,'                       '       print,'  Coordinates (if supplied) should be J2000 RA (degrees) and Dec'       print,'  dis -- search radius or box in arcminutes'       if N_elements(info) GT 0 then return,info else return, -1  endif if keyword_set(canada) then root = "http://vizier.hia.nrc.ca/cgi-bin/" $                       else  root = "http://webviz.u-strasbg.fr/viz-bin/"  silent = keyword_set(silent)   if N_elements(catalog) EQ 0 then $            message,'ERROR - A catalog name must be supplied as a keyword'  targname = 0b if N_elements(dis) EQ 0 then dis = 5 nopoint = 0b if N_elements(dis) EQ 2 then $    search = "&-c.bm=" + strtrim(dis[0],2) + '/' + strtrim(dis[1],2) else $    search = "&-c.rm=" + strtrim(dis,2)     if N_elements(target) EQ 2 then begin      ra = float(target[0])      dec = float(target[1])   endif else begin       nopoint = strupcase( strtrim(target,2) ) EQ 'NONE'        object = repstr(target,'+','%2B')        object = repstr(strcompress(object),' ','+')       targname = 1b   endelse; Add any addition constraints to the search.    Convert an URL special ; special characters in the constraint string. if N_elements(constraint) EQ 0 then constraint = ''  if strlen(constraint) GT 0 then begin     urlconstrain = strtrim(constraint,2)     urlconstrain = strcompress2(constraint,['<','>','='])      urlconstrain = repstr(urlconstrain, ',','&')     urlconstrain = repstr(urlconstrain, '<','=%3C')     urlconstrain = repstr(urlconstrain, '>','=%3E')     urlconstrain = repstr(urlconstrain, '+','%2B')     urlconstrain = repstr(urlconstrain, '/','%2F')     urlconstrain = repstr(urlconstrain, '!','=!')     if nopoint then search = urlconstrain else $                     search = search + '&' + urlconstrain endif ; if nopoint then $  QueryURL = root + "asu-tsv/?-source=" + catalog + '&' + $              search + '&-out.max=unlimited' else $ if targname then $  QueryURL = $   root + "asu-tsv/?-source=" + catalog + $     "&-c=" + object + search + '&-out.max=unlimited' else $  queryURL = $   root + "asu-tsv/?-source=" + catalog + $       "&-c.ra=" + strtrim(ra,2) + '&-c.dec=' + strtrim(dec,2) + $       search + '&-out.max=unlimited'  if keyword_set(allcolumns) then queryURL = queryURL + '&-out.all=1' if keyword_set(verbose) then message,queryurl,/inf  Result = webget(QueryURL,/http10, silent=silent);  t = strtrim(result.text,2)  keyword = strtrim(strmid(t,0,7),2)  linecon = where(keyword EQ '#---Lis', Ncon)  if Ncon GT 0 then remove,linecon, t, keyword   lcol = where(keyword EQ "#Column", Nfound)  if Nfound EQ 0 then begin       if max(strpos(strlowcase(t),'errors')) GE 0 then begin             message,'ERROR - Unsuccessful VIZIER query',/CON             print,t       endif else if not silent then $            message,'No sources found within specified radius',/INF       return,-1  endif  ; Check to see if more than one catalog has been searched  if N_elements(lcol) GT 1 then begin      diff  = lcol[1:*] - lcol      g = where(diff GT 1, Ng)      if Ng GT 0 then lcol = lcol[0:g[0]]  endif  if keyword_set(verbose) then begin    titcol = where(keyword EQ '#Title:', Ntit)        if Ntit GT 0 then message,/inform, $        strtrim(strmid(t[titcol[0]],8),2)  endif;Check if any Warnings or fatal errors in the VIZIER output   badflag = strmid(keyword,0,5)   warn = where(badflag EQ '#++++', Nwarn)   if Nwarn GT 0 then for i=0,Nwarn-1 do $        message,'Warning: ' + strtrim(t[warn[i]],2),/info      fatal = where(badflag EQ '#****', Nfatal)   if Nfatal GT 0 then for i=0,Nfatal-1 do $        message,'Error: ' + strtrim(t[fatal[i]],2),/info  trow = t[lcol]  dum = gettok(trow,' ')  colname = gettok(trow,' ')  fmt = gettok(trow,' ')  remchar,fmt,'('  remchar,fmt,')'   remchar,colname,')'  val = fix(strmid(fmt,1,4))  if !VERSION.RELEASE GE '6.4' then $          colname = IDL_VALIDNAME(colname,/convert_all) else $  for i=0,N_elements(colname)-1 do $         colname[i] = IDL_VALIDNAME(colname[i],/convert_all) ntag = N_elements(colname) fmt = strupcase(fmt) for i=0,Ntag-1 do begin case strmid(fmt[i],0,1) of    'A': cval = ' '  'I': cval = (val[i] LE 4) ? 0 : 0L         ;16 bit integer if 4 chars or less  'F': cval = (val[i] LE 7) ? 0. : 0.0d      ;floating point if 7 chars or less  'E': cval = (val[i] LE 7) ? 0. : 0.0d   'D': cval = (val[i] LE 7) ? 0. : 0.0d    else: message,'ERROR - unrecognized format ' + fmt[i]   endcase   if i EQ 0 then   info = create_struct(colname[0], cval) else begin	   ; If you set the /ALLCOLUMNS flag, in some cases (2MASS) you	   ; get a duplicate column name. Check for this and avoid it by appending	   ; an extra bit to the duplicate name	   if where(tag_names(info) eq strupcase(colname[i])) ge 0 then $	      colname[i] = colname[i] + '_2'   info =  create_struct(temporary(info), colname[i],cval)   endelse endfor  i0 = max(lcol) + 4    iend = where( t[i0:*] EQ '', Nend)  if Nend EQ  0  then iend = N_elements(t) else iend = iend[0] + i0  nstar = iend - i0     info = replicate(info, nstar); Find positions of tab characters   t = t[i0:iend-1]  for j=0,Ntag-1 do begin      x = strtrim( gettok(t,string(9b),/exact ),2)       dtype = size(info[0].(j),/type)       if dtype NE 7 then begin       bad = where(strlen(x) EQ 0, Nbad)      if (Nbad GT 0) then $           if (dtype EQ 4) or (dtype EQ 5) then x[bad] = 'NaN' $                                           else x[bad] = -1      endif      info.(j) = x    endfor return,infoEND   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -