#ifndef _atm_GOESDB_h_ #define _atm_GOESDB_h_ #include #include namespace utl { class Point; } namespace atm { /** \class GOESDB \brief Detector description interface for GOES cloud data \author T. Paul \author T. Yapici \author M. Unger \date 17 August 2012 \version $Id$ \ingroup atm */ class GOESDB { public: //! Check if cloud probability data exists for a given pixel at the current time bool HasData(const unsigned int pixelId) const; //! Get cloud probability from the pixel id double GetCloudProbability(const unsigned int pixelId) const; //! Get cloud probability for a particular point /** Since the cloud probability here comes from GOES measurements, the height is not used in the calculation */ double GetCloudProbability(const utl::Point& p) const; double GetCloudProbability(const utl::UTMPoint& p) const; //! Get max. cloud probability along line of sight between pos1 and pos2 double GetMaximumCloudProbability(const utl::Point& pos1, const utl::Point& pos2) const; const utl::UTMPoint& GetPixelCenter(const unsigned int pixelId) const; double GetPixelWidthEasting() const; double GetPixelWidthNorthing() const; unsigned int GetNumberOfPixels() const; private: int GetPixelId(const double easting, const double northing) const; double GetCloudProbability(const double easting, const double northing) const; int GetCloudProbabilityIndex(const unsigned int pixelId) const; double IndexToProbability(const unsigned int cpIndex) const; GOESDB(const GOESDB&); GOESDB& operator=(GOESDB&); GOESDB() {} virtual ~GOESDB() {} int GetNorthPixel(const double northing) const; int GetEastPixel(const double easting, const int northPixel) const; mutable std::map fPixelMap; mutable std::vector fPixelCenters; friend class Atmosphere; }; } #endif // _atm_GOESDB_h_