27 #include "../../../datatype/DateTime.h" 
   28 #include "../../../datatype/DateTimePeriod.h" 
   29 #include "../../../datatype/DateTimeInstant.h" 
   30 #include "../../../datatype/DateTimeUtils.h" 
   31 #include "../../../datatype/SimpleData.h" 
   32 #include "../../../datatype/AbstractData.h" 
   33 #include "../../../geometry/Geometry.h" 
   38 #include "../interpolator/AbstractTimeSeriesInterp.h" 
   39 #include "../interpolator/NearestValueAtTimeInterp.h" 
   59     m_interpolator(interp),
 
   68     m_interpolator(interp),
 
   76   : m_observations(obs),
 
   77     m_interpolator(interp),
 
   86     m_interpolator(interp),
 
   91   while(it!=patch.
end())
 
   99   : m_observations(ts.m_observations),
 
  100     m_interpolator(ts.m_interpolator),
 
  101     m_location(static_cast<te::gm::Geometry*>(ts.m_location->clone())),
 
  112     m_location.reset(static_cast<te::gm::Geometry*>(other.
m_location->clone()));
 
  120   TimeSeries* result = 
new TimeSeries(m_interpolator, m_id, static_cast<te::gm::Geometry*>(m_location->clone()));
 
  121   TimeSeriesObservationSet::const_iterator it = m_observations.begin();
 
  122   TimeSeriesObservationSet::const_iterator ite = m_observations.end();
 
  135   return m_observations;
 
  140   return m_interpolator;
 
  145   m_interpolator = interp;
 
  160   return m_location.get();
 
  165   m_location.reset(geom);
 
  171   m_observations.insert(item);
 
  178   m_observations.insert(item);
 
  185   m_observations.insert(item);
 
  192   m_observations.insert(item);
 
  197   m_observations.insert(item);
 
  202   return m_observations.size();
 
  207   TimeSeriesObservationSet::const_iterator it = m_observations.begin();
 
  213   TimeSeriesObservationSet::const_iterator it = m_observations.end();
 
  220   TimeSeriesObservationSet::const_iterator it = m_observations.find(item);
 
  227   TimeSeriesObservationSet::const_iterator it = m_observations.find(item);
 
  228   TimeSeriesObservationSet::const_iterator ite = m_observations.end();
 
  230     return std::auto_ptr<te::dt::AbstractData>(it->getValue()->clone());
 
  231   return std::auto_ptr<te::dt::AbstractData>(m_interpolator->estimate(*
this,t));
 
  236   std::auto_ptr<te::dt::AbstractData> v(getValue(t));
 
  237   return atof(v->toString().c_str());
 
  242   std::auto_ptr<te::dt::AbstractData> v(getValue(t));
 
  243   return atoi(v->toString().c_str());
 
  248   std::auto_ptr<te::dt::AbstractData> v(getValue(t));
 
  249   return v->toString();
 
  254   TimeSeriesObservationSet::iterator it1 = m_observations.begin();
 
  255   TimeSeriesObservationSet::reverse_iterator it2 = m_observations.rbegin();
 
  265   minValue = m_observations.get<1>().begin()->getDouble();
 
  266   minValue = m_observations.get<1>().rbegin()->getDouble();
 
  272   minValue = m_observations.get<1>().begin()->getInt();
 
  273   minValue = m_observations.get<1>().rbegin()->getInt();
 
  278   minValue = m_observations.get<2>().begin()->getString();
 
  279   minValue = m_observations.get<2>().rbegin()->getString();
 
  286   TimeSeriesObservationSet::const_iterator itb = m_observations.
end();
 
  287   TimeSeriesObservationSet::const_iterator ite = m_observations.end();
 
  292     itb = m_observations.upper_bound(item);
 
  298     itb = m_observations.find(item);
 
  299     if(itb==m_observations.end())
 
  300       itb = m_observations.upper_bound(item);
 
  306     itb = m_observations.begin();
 
  307     ite = m_observations.find(item);
 
  308     if(ite==m_observations.end())
 
  309       ite = m_observations.upper_bound(item);
 
  315     itb = m_observations.begin();
 
  316     ite = m_observations.upper_bound(item); 
 
  321     std::auto_ptr<te::dt::DateTimePeriod> period(static_cast<te::dt::DateTimePeriod*>(dt.
clone()));
 
  324     itb = m_observations.find(item1);
 
  325     if(itb==m_observations.end())
 
  326       itb = m_observations.upper_bound(item1);
 
  327     ite = m_observations.upper_bound(item2); 
 
  333     std::pair<TimeSeriesObservationSet::const_iterator, TimeSeriesObservationSet::const_iterator> itPair;
 
  334     itPair = m_observations.equal_range(item);
 
  337     if(ite!= m_observations.end())
 
  346                           std::vector<TimeSeriesPatch>& result)
 const 
  349   std::map<te::dt::DateTime*, te::dt::AbstractData*, te::dt::CompareDateTime> resultTS;
 
  350   getResultOrderedByTime(v, r, resultTS);
 
  354   std::map<te::dt::DateTime*, te::dt::AbstractData*, 
 
  358   TimeSeriesObservationSet::const_iterator itOriginBegin = m_observations.find(item);
 
  359   TimeSeriesObservationSet::const_iterator itOriginEnd = m_observations.end();
 
  361   TimeSeriesObservationSet::const_iterator patchBegin;
 
  362   TimeSeriesObservationSet::const_iterator patchEnd;
 
  364   while(itResultBegin!=itResultEnd && itOriginBegin!=itOriginEnd)
 
  366      patchBegin = itOriginBegin; 
 
  369      while( (itResultBegin!=itResultEnd) && (itOriginBegin!=itOriginEnd) && 
 
  370             (itResultBegin->first == itOriginBegin->getTime())) 
 
  372         patchEnd = itOriginBegin;
 
  379      if(patchEnd!=itOriginEnd)
 
  385      if(itResultBegin!=itResultEnd)
 
  387        item.
setTime(static_cast<te::dt::DateTime*>(itResultBegin->first->clone()));
 
  388        itOriginBegin = m_observations.find(item);
 
  397                             std::vector<TimeSeriesPatch>& result)
 const 
  401   std::vector<TimeSeriesPatch> patches;
 
  404   std::vector<TimeSeriesPatch>::const_iterator it = patches.begin();
 
  405   TimeSeriesObservationSet::const_iterator ite = m_observations.end();
 
  407   while(it!=patches.end())
 
  416     if(itAuxBegin!=ts.
end())
 
  423     if(itAuxEnd==ts.
end())
 
  444                              std::map<te::dt::DateTime*, te::dt::AbstractData*, te::dt::CompareDateTime>& result)
 const 
  446   TimeSeriesByValue::const_iterator itResultBeg = m_observations.get<1>().end();
 
  447   TimeSeriesByValue::const_iterator itResultEnd = m_observations.get<1>().end();
 
  451     itResultBeg = m_observations.get<1>().begin();
 
  452     itResultEnd = m_observations.get<1>().find(v);
 
  453     if(itResultEnd==m_observations.get<1>().end())
 
  454       itResultEnd = m_observations.get<1>().upper_bound(v);
 
  458     itResultBeg = m_observations.get<1>().upper_bound(v);
 
  462     std::pair<TimeSeriesByValue::const_iterator, TimeSeriesByValue::const_iterator> itPair;
 
  463     itPair = m_observations.get<1>().equal_range(v);
 
  464     itResultBeg = itPair.first;
 
  465     itResultEnd = itPair.second;
 
  466     if(itResultEnd!= m_observations.get<1>().end())
 
  471     itResultBeg = m_observations.get<1>().begin();
 
  472     itResultEnd = m_observations.get<1>().upper_bound(v); 
 
  476     itResultBeg = m_observations.get<1>().find(v);
 
  477     if(itResultBeg==m_observations.get<1>().end())
 
  478       itResultBeg = m_observations.get<1>().upper_bound(v);
 
  482   while(itResultBeg!=itResultEnd)
 
  484     result.insert(std::pair<te::dt::DateTime*,te::dt::AbstractData*>(itResultBeg->getTime(), itResultBeg->getValue()));
 
TimeSeriesIterator at(te::dt::DateTime *t) const 
It returns an iterator that points to an observation at a given time. 
 
boost::multi_index_container< TimeSeriesObservation, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::identity< TimeSeriesObservation > >, boost::multi_index::ordered_non_unique< boost::multi_index::const_mem_fun< TimeSeriesObservation, double,&TimeSeriesObservation::getDouble > >, boost::multi_index::ordered_non_unique< boost::multi_index::const_mem_fun< TimeSeriesObservation, std::string,&TimeSeriesObservation::getString > > > > TimeSeriesObservationSet
 
TimeSeriesPatch getPatch(const te::dt::DateTime &dt, te::dt::TemporalRelation r=te::dt::DURING) const 
It returns a time series subset that satisfies a given temporal relation. 
 
TEDATATYPEEXPORT DateTimePeriod * GetTemporalExtent(const DateTime *t1, const DateTime *t2)
It returns the temporal extent of two date and time types. 
 
std::string m_id
The time series identification. 
 
void setLocation(te::gm::Geometry *geom)
It sets the time series location. 
 
virtual AbstractData * clone() const =0
It returns a clone of this object. 
 
BasicRelation
Relations between simple attribute values. 
 
std::auto_ptr< te::dt::AbstractData > getValue(te::dt::DateTime *t) const 
It returns the value associated to a given date and time. 
 
void setInterpolator(AbstractTimeSeriesInterp *interp)
It sets the interpolator associated to the time series. 
 
std::auto_ptr< te::gm::Geometry > m_location
The time series location. 
 
A template for atomic data types (integers, floats, strings and others). 
 
virtual ~TimeSeries()
It returns time series subsets that satisfy the given relations. 
 
A class to traverse the observations of a TimeSeries. 
 
int getInt(te::dt::DateTime *t) const 
It returns the value as an integer associated to a given date and time. 
 
void add(te::dt::DateTime *time, te::dt::AbstractData *value)
It adds an observation (time and attribute value) into the time series. 
 
TimeSeriesIterator end() const 
 
TimeSeriesIterator end() const 
It returns an iterator that points to the end of the time series. 
 
void getPatches(const double &v, te::dt::BasicRelation r, std::vector< TimeSeriesPatch > &result) const 
It returns time series subsets that satisfy a given relation. 
 
double getDouble(te::dt::DateTime *t) const 
It returns the value as a double associated to a given date and time. 
 
TimeSeries()
Empty constructor. 
 
This file contains a class to represent a time series observation. 
 
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards. 
 
SimpleData< std::string, STRING_TYPE > String
 
AbstractTimeSeriesInterp * m_interpolator
The interpolator used to estimate values at non-observed times. 
 
TimeSeries & operator=(const TimeSeries &other)
Copy assignment operator. 
 
TemporalRelation
Temporal relations between date and time (Source: Allen, 1991). 
 
te::gm::Geometry * getLocation() const 
It returns the time series location. 
 
A struct to represent a patch or a continuous piece of a time series. 
 
void getValueExtent(double &minValue, double &maxValue)
It returns the minimal and maximun values of the time series. 
 
It is an interpolation function the estimates the nearest value at a given non-observed time of a tim...
 
An abstract class for an interpolation function or interpolator that estimate a value at non-observav...
 
TimeSeriesIterator begin() const 
 
const TimeSeriesObservationSet & getObservations() const 
It returns the time series observations. 
 
void getResultOrderedByTime(const double &v, te::dt::BasicRelation r, std::map< te::dt::DateTime *, te::dt::AbstractData *, te::dt::CompareDateTime > &result) const 
It returns the result of a basic relation ordered by time. 
 
An auxiliary struct to compare two datetime pointers. 
 
A class to represent time series. 
 
void setTime(te::dt::DateTime *t)
It sets the date time. 
 
A base class for values that can be retrieved from the data access module. 
 
AbstractTimeSeriesInterp * getInterpolator() const 
It returns the interpolator associated to the time series. 
 
SimpleData< boost::int32_t, INT32_TYPE > Int32
 
void setId(const std::string &id)
It sets the time series identifier. 
 
SimpleData< double, DOUBLE_TYPE > Double
 
std::size_t size() const 
It returns the size of the time series observation set. 
 
std::auto_ptr< te::dt::DateTimePeriod > getTemporalExtent() const 
It returns the temporal extent or range of the time series. 
 
TimeSeriesObservationSet m_observations
The time series observations. 
 
te::dt::DateTime * getTime() const 
It returns the datetime pointed by the internal cursor. 
 
This file contains a class to represent a time series. 
 
std::string getString(te::dt::DateTime *t) const 
It returns the value as a string associated to a given date and time. 
 
TimeSeries * clone() const 
It returns a clone of this time series. 
 
A class to represent an observation (time and value) of a time series. 
 
std::string getId() const 
It returns the time series identifier. 
 
TimeSeriesIterator begin() const 
It returns an iterator that points to the first observation of the time series.