def __cone_search(self, coordinate, radius, async_job=False, background=False, output_file=None, output_format="votable", verbose=False, dump_to_file=False): """Cone search sorted by distance TAP & TAP+ Parameters ---------- coordinate : astropy.coordinate, mandatory coordinates center point radius : astropy.units, mandatory radius async_job : bool, optional, default 'False' executes the job in asynchronous/synchronous mode (default synchronous) background : bool, optional, default 'False' when the job is executed in asynchronous mode, this flag specifies whether the execution will wait until results are available output_file : str, optional, default None file name where the results are saved if dumpToFile is True. If this parameter is not provided, the jobid is used instead output_format : str, optional, default 'votable' results format verbose : bool, optional, default 'False' flag to display information about the process dump_to_file : bool, optional, default 'False' if True, the results are saved in a file instead of using memory Returns ------- A Job object """ coord = self.__getCoordInput(coordinate, "coordinate") raHours, dec = commons.coord_to_radec(coord) ra = raHours * 15.0 # Converts to degrees if radius is not None: radiusQuantity = self.__getQuantityInput(radius, "radius") radiusDeg = commons.radius_to_unit(radiusQuantity, unit='deg') query = "SELECT DISTANCE(POINT('ICRS',"+str(self.MAIN_GAIA_TABLE_RA)+","\ + str(self.MAIN_GAIA_TABLE_DEC)+"), \ POINT('ICRS',"+str(ra)+","+str(dec)+")) AS dist, * \ FROM "+str(self.MAIN_GAIA_TABLE)+" WHERE CONTAINS(\ POINT('ICRS',"+str(self.MAIN_GAIA_TABLE_RA)+","+str(self.MAIN_GAIA_TABLE_DEC)+"),\ CIRCLE('ICRS',"+str(ra)+","+str(dec)+", "+str(radiusDeg)+"))=1 \ ORDER BY dist ASC" if async_job: return self.__gaiatap.launch_job_async(query=query, output_file=output_file, output_format=output_format, verbose=verbose, dump_to_file=dump_to_file, background=background) else: return self.__gaiatap.launch_job(query=query, output_file=output_file, output_format=output_format, verbose=verbose, dump_to_file=dump_to_file)
def __cone_search(self, coordinate, radius, async_job=False, background=False, output_file=None, output_format="votable", verbose=False, dump_to_file=False): """Cone search sorted by distance TAP & TAP+ Parameters ---------- coordinate : astropy.coordinate, mandatory coordinates center point radius : astropy.units, mandatory radius async_job : bool, optional, default 'False' executes the job in asynchronous/synchronous mode (default synchronous) background : bool, optional, default 'False' when the job is executed in asynchronous mode, this flag specifies whether the execution will wait until results are available output_file : str, optional, default None file name where the results are saved if dumpToFile is True. If this parameter is not provided, the jobid is used instead output_format : str, optional, default 'votable' results format verbose : bool, optional, default 'False' flag to display information about the process dump_to_file : bool, optional, default 'False' if True, the results are saved in a file instead of using memory Returns ------- A Job object """ coord = self.__getCoordInput(coordinate, "coordinate") raHours, dec = commons.coord_to_radec(coord) ra = raHours * 15.0 # Converts to degrees if radius is not None: radiusQuantity = self.__getQuantityInput(radius, "radius") radiusDeg = commons.radius_to_unit(radiusQuantity, unit='deg') query = "SELECT DISTANCE(POINT('ICRS',"+str(MAIN_GAIA_TABLE_RA)+","\ + str(MAIN_GAIA_TABLE_DEC)+"), \ POINT('ICRS',"+str(ra)+","+str(dec)+")) AS dist, * \ FROM "+str(MAIN_GAIA_TABLE)+" WHERE CONTAINS(\ POINT('ICRS',"+str(MAIN_GAIA_TABLE_RA)+","+str(MAIN_GAIA_TABLE_DEC)+"),\ CIRCLE('ICRS',"+str(ra)+","+str(dec)+", "+str(radiusDeg)+"))=1 \ ORDER BY dist ASC" if async_job: return self.__gaiatap.launch_job_async(query=query, output_file=output_file, output_format=output_format, verbose=verbose, dump_to_file=dump_to_file, background=background) else: return self.__gaiatap.launch_job(query=query, output_file=output_file, output_format=output_format, verbose=verbose, dump_to_file=dump_to_file)
def region(*, ra=None, dec=None, name=None, radius): if not isinstance(radius, u.quantity.Quantity): raise ValueError("radious must be astropy.units.quantity.Quantity") if not ((name is not None) ^ (ra is not None and dec is not None)): raise ValueError("'name' or 'ra' and 'dec' are required (not both)") if name is not None: if not isinstance(name, str): raise ValueError("name must be string") else: coord = simbad_search(name) if (ra, dec) != (None, None): if not isinstance(ra, (float, int)) or not isinstance(dec, (float, int)): raise ValueError("ra and dec must be numeric") else: coord = SkyCoord(ra, dec, unit=(u.degree, u.degree), frame="icrs") radiusDeg = radius_to_unit(radius, unit="deg") query = Query(radius=radiusDeg, coords=coord) return query
def query_region(*, ra=None, dec=None, name=None, radius): """Make a cone search type query for retrieving data. Parameters ---------- ra : int, float, optional Right ascention of the center of the cone search. dec : int, float, optional Declination of the center of the cone search. name : str, optional Name of the Simbad identifier to set the center of the cone search. radius : astropy.units.quantity.Quantity Radius of the cone search. Returns ------- query : Query class instance Raises ------ ValueError if an attribute does not match type, or if both name and ra & dec are provided. """ if not isinstance(radius, u.quantity.Quantity): raise ValueError("radious must be astropy.units.quantity.Quantity") if not ((name is not None) ^ (ra is not None and dec is not None)): raise ValueError("'name' or 'ra' and 'dec' are required (not both)") if name is not None: if not isinstance(name, str): raise ValueError("name must be string") else: coord = simbad_search(name) if (ra, dec) != (None, None): if not isinstance(ra, (float, int)) or not isinstance(dec, (float, int)): raise ValueError("ra and dec must be numeric") else: coord = SkyCoord(ra, dec, unit=(u.degree, u.degree), frame="icrs") radiusDeg = radius_to_unit(radius, unit="deg") query = Query(radius=radiusDeg, coords=coord) return query
def __cone_search(self, coordinate, radius, table_name=MAIN_GAIA_TABLE, ra_column_name=MAIN_GAIA_TABLE_RA, dec_column_name=MAIN_GAIA_TABLE_DEC, async_job=False, background=False, output_file=None, output_format="votable", verbose=False, dump_to_file=False, columns=[]): """Cone search sorted by distance TAP & TAP+ Parameters ---------- coordinate : astropy.coordinate, mandatory coordinates center point radius : astropy.units, mandatory radius table_name : str, optional, default main gaia table table name doing the cone search against ra_column_name : str, optional, default ra column in main gaia table ra column doing the cone search against dec_column_name : str, optional, default dec column in main gaia table dec column doing the cone search against async_job : bool, optional, default 'False' executes the job in asynchronous/synchronous mode (default synchronous) background : bool, optional, default 'False' when the job is executed in asynchronous mode, this flag specifies whether the execution will wait until results are available output_file : str, optional, default None file name where the results are saved if dumpToFile is True. If this parameter is not provided, the jobid is used instead output_format : str, optional, default 'votable' results format verbose : bool, optional, default 'False' flag to display information about the process dump_to_file : bool, optional, default 'False' if True, the results are saved in a file instead of using memory columns: list, optional, default [] if empty, all columns will be selected Returns ------- A Job object """ coord = self.__getCoordInput(coordinate, "coordinate") raHours, dec = commons.coord_to_radec(coord) ra = raHours * 15.0 # Converts to degrees if radius is not None: radiusQuantity = self.__getQuantityInput(radius, "radius") radiusDeg = commons.radius_to_unit(radiusQuantity, unit='deg') if columns: columns = ','.join(map(str, columns)) else: columns = "*" query = """ SELECT {row_limit} {columns}, DISTANCE( POINT('ICRS', {ra_column}, {dec_column}), POINT('ICRS', {ra}, {dec}) ) AS dist FROM {table_name} WHERE 1 = CONTAINS( POINT('ICRS', {ra_column}, {dec_column}), CIRCLE('ICRS', {ra}, {dec}, {radius}) ) ORDER BY dist ASC """.format( **{ 'ra_column': ra_column_name, 'row_limit': "TOP {0}".format(self.ROW_LIMIT) if self.ROW_LIMIT > 0 else "", 'dec_column': dec_column_name, 'columns': columns, 'ra': ra, 'dec': dec, 'radius': radiusDeg, 'table_name': table_name }) if async_job: return self.launch_job_async(query=query, output_file=output_file, output_format=output_format, verbose=verbose, dump_to_file=dump_to_file, background=background) else: return self.launch_job(query=query, output_file=output_file, output_format=output_format, verbose=verbose, dump_to_file=dump_to_file)