openModeller
Version 1.4.0
|
00001 00029 #ifndef _OCCURRENCEHH_ 00030 #define _OCCURRENCEHH_ 00031 00032 #include <openmodeller/om_defs.hh> 00033 #include <openmodeller/Sample.hh> 00034 #include <openmodeller/Normalizer.hh> 00035 00036 #include <openmodeller/refcount.hh> 00037 00038 #include <string> 00039 00040 /****************************************************************/ 00041 /************************** Occurrence **************************/ 00042 00043 class OccurrenceImpl; 00044 typedef ReferenceCountedPointer< OccurrenceImpl > OccurrencePtr; 00045 typedef ReferenceCountedPointer< const OccurrenceImpl > ConstOccurrencePtr; 00046 00053 class dllexp OccurrenceImpl : private ReferenceCountedObject 00054 { 00055 friend class ReferenceCountedPointer<OccurrenceImpl>; 00056 friend class ReferenceCountedPointer<const OccurrenceImpl>; 00057 public: 00058 00061 OccurrenceImpl( ) : 00062 id_( ), 00063 x_( 0.0 ), 00064 y_( 0.0 ), 00065 error_( 0.0 ), 00066 abundance_( 0.0 ), 00067 attr_(), 00068 unnormEnv_(), 00069 normEnv_() 00070 {} 00071 00085 OccurrenceImpl( const std::string& id, 00086 Coord x, Coord y, Scalar error, 00087 Scalar abundance, 00088 int num_attributes=0, 00089 Scalar *attributes=0, 00090 int num_env=0, 00091 Scalar *env=0) : 00092 id_( id ), 00093 x_( x ), 00094 y_( y ), 00095 error_( error ), 00096 abundance_( abundance ), 00097 attr_( num_attributes, attributes ), 00098 unnormEnv_( num_env, env ), 00099 normEnv_() 00100 { } 00101 00112 OccurrenceImpl( const std::string& id, 00113 Coord x, Coord y, Scalar error, 00114 Scalar abundance, 00115 std::vector<Scalar> attributes, 00116 std::vector<Scalar> env) : 00117 id_( id ), 00118 x_( x ), 00119 y_( y ), 00120 error_( error ), 00121 abundance_( abundance ), 00122 attr_( attributes ), 00123 unnormEnv_( env ), 00124 normEnv_() 00125 { } 00126 00137 OccurrenceImpl( const std::string& id, 00138 Coord x, Coord y, Scalar error, 00139 Scalar abundance, 00140 const Sample& attributes, 00141 const Sample& env) : 00142 id_( id ), 00143 x_( x ), 00144 y_( y ), 00145 error_( error ), 00146 abundance_( abundance ), 00147 attr_( attributes ), 00148 unnormEnv_( env ), 00149 normEnv_() 00150 { } 00151 00163 OccurrenceImpl( const std::string& id, 00164 Coord x, Coord y, 00165 Scalar abundance, 00166 int num_attributes=0, 00167 Scalar *attributes=0 ) : 00168 id_( id ), 00169 x_( x ), 00170 y_( y ), 00171 error_( -1.0 ), 00172 abundance_( abundance ), 00173 attr_( num_attributes, attributes ), 00174 unnormEnv_(), 00175 normEnv_() 00176 { } 00177 00178 ~OccurrenceImpl(); 00179 00180 OccurrenceImpl( const OccurrenceImpl& rhs ) : 00181 id_( rhs.id_ ), 00182 x_( rhs.x_ ), 00183 y_( rhs.y_ ), 00184 error_( rhs.error_ ), 00185 abundance_( rhs.abundance_ ), 00186 attr_( rhs.attr_ ), 00187 unnormEnv_( rhs.unnormEnv_ ), 00188 normEnv_( rhs.normEnv_ ) 00189 {}; 00190 00191 OccurrenceImpl& operator=(const OccurrenceImpl & ); 00192 00193 // Access to the locality information. 00194 std::string id() const { return id_; } 00195 Coord x() const { return x_; } 00196 Coord y() const { return y_; } 00197 Scalar error() const { return error_; } 00198 Scalar abundance() const { return abundance_; } 00199 00200 Sample const & attributes() const { return attr_; } 00201 00202 Sample const & environment() const; 00203 00204 Sample const & originalEnvironment() const; 00205 00206 void normalize( Normalizer * normalizerPtr, size_t categoricalThreshold=0 ); 00207 00208 void setNormalizedEnvironment( const Sample& s ); 00209 00210 void setUnnormalizedEnvironment( const Sample& s ); 00211 00212 bool hasEnvironment() const; 00213 00214 void setId( const std::string& id ); 00215 00216 void setAbundance( Scalar value ); 00217 00218 void dump() const; 00219 00220 private: 00221 00222 std::string id_; // Unique identifier 00223 Coord x_; // Longitude 00224 Coord y_; // Latitude 00225 Scalar error_; // coordinate uncertanty in meters (unused so far) 00226 Scalar abundance_; // used only to distinguish between presence (1) and absence (0) 00227 00228 Sample attr_; // extra attributes 00229 Sample unnormEnv_; // unnormalized environment 00230 Sample normEnv_; // normalized enviroment 00231 }; 00232 00233 #endif