;+ ; PROJECT : VOlib (CTIO) ; ; NAME: ; WESIX ; ; CATEGORY: ; Utility ; ; PURPOSE: ; Calls the WESIX (http://nvo.phyast.pitt.edu) webservice. ; Has the ability to take an image, find the sources via ; SEXtractor and cross-match to the Open SkyQuery NVO service. ; ; CALLING SEQUENCE: ; IDL> wesix, image, str=str [,query] ; ; INPUTS: ; image = string of the image name (fits) ; ; OPTIONAL INPUTS: ; query - A string containing the ADQL query ; ; OUTPUTS: ; str: a structure containing the data. Type ; IDL> help, /str, str ; to find out the name of the colmnes returned. ; ; KEYWORD PARAMETERS: ; ; DEPENDENCIES: ; MAKE_ADQL.PRO which creates the query string. ; The VOlib IDL/Java class libraries (included with VOlib). ; ; MODIFICATION HISTORY: ; Written: 2/04/05 Christopher J. Miller (NOAO/CTIO) ; Contact : cmiller@noao.edu ; ; EXAMPLES: ; ; KNOWN ISSUES: ;- PRO wesix, image, str=str, qry=qry if (n_params(0) eq 0 and n_elements(qry) eq 0) then begin print,"wesix, image str=str [,qry=qrystring]" return endif ;IF (n_elements(qry) eq 0) THEN BEGIN ;Make the query ; make_adql, qry=qry, ra,dec,sr,chisq0 ;ENDIF ;The Web Services stuff: nullit = OBJ_NEW() resource = OBJ_NEW('IDLJavaObject$Static$FR_U_STRASBG_VIZIER_XML_VOTABLE_1_1_XSD_RESOURCE', 'fr.u_strasbg.vizier.xml.VOTable_1_1_xsd/RESOURCE') vot = OBJ_NEW('IDLJavaObject$Static$FR_U_STRASBG_VIZIER_XML_VOTABLE_1_1_XSD_VOTABLE', 'fr.u_strasbg.vizier.xml.VOTable_1_1_xsd/VOTABLE') serve = OBJ_NEW('IDLJavaObject$EDU_PITT_PHYAST_WESIXTEST_WESIXSERVICELOCATOR','edu.pitt.phyast.wesixtest.WesixServiceLocator') serve ->getWesixTestAddress stub = serve -> getWesixTest() sparms = stub -> getSexParams() oparms = stub -> getSexOutputParams() oparms -> setALPHA_B1950,0 oparms -> setDELTA_B1950,0 oparms -> setALPHA_J2000,1 oparms -> setDELTA_J2000,1 oparms -> setMAG_ISO,1 oparms -> setMAG_ISOCOR,1 oparms -> setMAG_AUTO,1 sparms -> setCLEAN, "N" sparms -> setCLEAN_PARAM, 3.0 sparms -> setQuery2, " o, SDSSDR2:PhotoPrimary t WHERE XMATCH(o,t)<3.5" ;Make the query call, return a VOTable vod = stub -> wsextractorURL3VOXmatch(image,sparms,oparms,1) vot = vod ->getVOTABLE() ;Parse the VOTable into a structure resource = vot ->getResource(0) table = resource ->getTable(0) fields = table->getFIELD() cols = n_elements(fields) getdata = table -> getDATA() tabledata = getdata ->getTABLEDATA() tr = tabledata -> getTR() fName = strarr(cols) tName = strarr(cols) for i = 0, cols -1 DO BEGIN fields = table->getFIELD(i) types2 = fields->getDataType() tName[I] = types2 ->toString() fields2 = fields->getName() fName[i] = fields2 ->toString() endfor IF (n_elements(row) eq 0) THEN row = strarr(n_elements(tr), cols) ; print, fName ic = 0 FOR i = ic*n_elements(tr), ic*n_elements(tr) + (ic + 1)*n_elements(tr) -1L DO BEGIN myRow = tr[i] IF (myrow ne OBJ_NEW()) THEN BEGIN row[i,*] = myrow->getTD() ENDIF ; print, row ENDFOR ;At the moment (11/25/04), we handle 6 data types ;If not yet defined, define and fill structure IF (strtrim(tName[0],2) eq 'long') THEN A = CREATE_STRUCT(strtrim(fName[0],2), long64(row[0,0])) IF (strtrim(tName[0],2) eq 'int') THEN A = CREATE_STRUCT(strtrim(fName[0],2), long(row[0,0])) IF (strtrim(tName[0],2) eq 'short') THEN A = CREATE_STRUCT(strtrim(fName[0],2), long(row[0,0])) IF (strtrim(tName[0],2) eq 'double') THEN A = CREATE_STRUCT(strtrim(fName[0],2), double(row[0,0])) IF (strtrim(tName[0],2) eq 'float') THEN A = CREATE_STRUCT(strtrim(fName[0],2), float(row[0,0])) IF (strtrim(tName[0],2) eq 'char') THEN A = CREATE_STRUCT(strtrim(fName[0],2), string(row[0,0])) FOR J = 1, cols -1 DO BEGIN IF (strtrim(tName[J],2) eq 'long') THEN A = CREATE_STRUCT(a, strtrim(fName[J],2), long(row[0,J])) IF (strtrim(tName[J],2) eq 'int') THEN A = CREATE_STRUCT(a, strtrim(fName[J],2), long(row[0,J])) IF (strtrim(tName[J],2) eq 'short') THEN A = CREATE_STRUCT(a, strtrim(fName[J],2), long(row[0,J])) IF (strtrim(tName[J],2) eq 'double') THEN A = CREATE_STRUCT(a, strtrim(fName[J],2), double(row[0,J])) IF (strtrim(tName[J],2) eq 'float') THEN A = CREATE_STRUCT(a, strtrim(fName[J],2), float(row[0,J])) IF (strtrim(tName[J],2) eq 'char') THEN A = CREATE_STRUCT(a, strtrim(fName[J],2), string(row[0,J])) ENDFOR a_all = replicate(a,n_elements(tr)) FOR J = 0, cols -1 DO BEGIN a_all.(J) = row[*,J] ENDFOR str = a_all OBJ_DESTROY, nullit OBJ_DESTROY, resource OBJ_DESTROY, vot OBJ_DESTROY, stub OBJ_DESTROY, vod,table OBJ_DESTROY, fields OBJ_DESTROY, getdata OBJ_DESTROY, tabledata OBJ_DESTROY, tr OBJ_DESTROY, types2 OBJ_DESTROY, fields2 OBJ_DESTROY, myRow return END