private void GenerateExtraIndexingData(IFitsFileInfo ff, FitsHeaderIndexedRow indexingData) { // Convert RA, DEC to decimal format for searches. try { if (ff.HasHeaderSingleValue("RA") && ff.HasHeaderSingleValue("DEC")) { indexingData.ParsedRa = (double)ff.GetSingleHeaderValue("RA").Value; indexingData.ParsedDec = (double)ff.GetSingleHeaderValue("DEC").Value; } else if (ff.HasHeaderSingleValue("RA_OBJ") && ff.HasHeaderSingleValue("DEC_OBJ")) { indexingData.ParsedRa = (double)ff.GetSingleHeaderValue("RA_OBJ").Value; indexingData.ParsedDec = (double)ff.GetSingleHeaderValue("DEC_OBJ").Value; } else if (ff.HasHeaderSingleValue("OBJCTRA") && ff.HasHeaderSingleValue("OBJCTDEC")) { string ra = (string)ff.GetSingleHeaderValue("OBJCTRA").Value; string dec = (string)ff.GetSingleHeaderValue("OBJCTDEC").Value; indexingData.ParsedRa = CoordinateTransform.HmsToDegrees(ra); indexingData.ParsedDec = CoordinateTransform.DmsToDegrees(dec); } } catch (Exception e) { _log?.Write(LogEventCategory.Error, $"Failed to convert RA/DEC coordinates to search index format with file '{ff.FilePath}'", e); } }
/// <summary> /// Add a RA/DEC constraint to the query. /// RA and DEC can be in either decimal degrees or in HH MM SS.sss, +/-DD MM SS.sss format. /// Radius is expected as arc minutes. /// </summary> /// <param name="ra">Center RA, either in degrees or 'HH MM SS.sss' format</param> /// <param name="dec">Center DEC, either in degrees or '+/-DD MM SS.sss' format</param> /// <param name="radius">Search radius, in arc minutes</param> /// <returns>The same FitsQueryBuilder for chaining.</returns> public IFitsQueryExpression RaDecRadius(string ra, string dec, double radius) { var dRa = CoordinateTransform.HmsToDegrees(ra); var dDec = CoordinateTransform.DmsToDegrees(dec); var dRadius = CoordinateTransform.ArcminToDegrees((int)radius); return(RaDecRadius(dRa, dDec, dRadius)); }