27 #include "../../../geometry/Polygon.h"
28 #include "../../../geometry/Point.h"
29 #include "../../../geometry/Utils.h"
30 #include "../../../datatype/DateTime.h"
31 #include "../../../datatype/DateTimeInstant.h"
32 #include "../../../datatype/DateTimeUtils.h"
37 #include "../interpolator/AbstractCoverageSeriesInterp.h"
38 #include "../interpolator/NearestCoverageAtTimeInterp.h"
51 m_interpolator(interp),
59 return m_observations;
69 return m_sextent.get();
90 m_observations.insert(o);
95 return m_observations.size();
111 CoverageSeriesObservationSet::const_iterator itcs = m_observations.find(aux);
119 CoverageSeriesObservationSet::const_iterator it = m_observations.find(aux);
120 if(it!=m_observations.end())
121 return std::auto_ptr<te::st::Coverage>(it->second->clone());
123 return std::auto_ptr<te::st::Coverage>(m_interpolator->estimate(*
this,t));
126 std::auto_ptr<te::st::TimeSeries>
130 result->setLocation(static_cast<te::gm::Geometry*>(l.
clone()));
132 CoverageSeriesObservationSet::const_iterator it = m_observations.begin();
133 while(it!=m_observations.end())
136 std::auto_ptr<te::dt::AbstractData> value(it->second->getValue(l,p));
137 result->add(dt, value.release());
145 CoverageSeriesObservationSet::const_iterator it = m_observations.begin();
146 if(it==m_observations.end())
149 unsigned int numts = it->second->getNumberOfProperties();
150 for(
unsigned int i=0; i<numts; ++i)
153 ts->setLocation(static_cast<te::gm::Geometry*>(l.
clone()));
157 while(it!=m_observations.end())
159 boost::ptr_vector<te::dt::AbstractData> values;
160 it->second->getValue(l,values);
161 for(
unsigned int i=0; i<numts; ++i)
162 r[i].add(static_cast<te::dt::DateTime*>(it->first->clone()), &values[i]);
171 CoverageSeriesObservationSet::const_iterator it = m_observations.begin();
172 if(it==m_observations.end())
177 boost::ptr_vector<te::dt::AbstractData> values;
178 it->second->getValue(l,p,values);
180 for(
unsigned int i=0; i<values.size(); ++i)
183 result->setLocation(static_cast<te::gm::Geometry*>(l.
clone()));
184 result->add(static_cast<te::dt::DateTime*>(it->first->clone()), &values[i]);
191 while(it!=m_observations.end())
194 it->second->getValue(l,p,values);
196 for(
unsigned int i=0; i<values.size(); ++i)
197 r[i].add(static_cast<te::dt::DateTime*>(it->first->clone()), &values[i]);
206 boost::ptr_vector<TimeSeries>& r)
const
210 getTimeSeries(*pol, p, r);
216 CoverageSeriesObservationSet::const_iterator it = m_observations.begin();
217 if(it==m_observations.end())
222 boost::ptr_vector<te::dt::AbstractData> values;
223 it->second->getValue(l,values);
225 for(
unsigned int i=0; i<values.size(); ++i)
228 result->setLocation(static_cast<te::gm::Geometry*>(l.
clone()));
229 result->add(static_cast<te::dt::DateTime*>(it->first->clone()), &values[i]);
236 while(it!=m_observations.end())
239 it->second->getValue(l,values);
241 for(
unsigned int i=0; i<values.size(); ++i)
242 r[i].add(static_cast<te::dt::DateTime*>(it->first->clone()), &values[i]);
254 getTimeSeries(*pol, r);
261 std::auto_ptr<te::st::CoverageSeries> aux = getPatch(t,tr);
262 return aux->getTimeSeries(l,p);
268 std::auto_ptr<te::st::CoverageSeries> aux = getPatch(t,tr);
269 return aux->getTimeSeries(l,r);
275 std::auto_ptr<te::st::CoverageSeries> aux = getPatch(t,tr);
276 return aux->getTimeSeries(l,p,r);
283 std::auto_ptr<te::st::CoverageSeries> aux = getPatch(t,tr);
284 return aux->getTimeSeries(e,p,r);
291 std::auto_ptr<te::st::CoverageSeries> aux = getPatch(t,tr);
292 return aux->getTimeSeries(l,r);
298 std::auto_ptr<te::st::CoverageSeries> aux = getPatch(t,tr);
299 return aux->getTimeSeries(e,r);
302 std::auto_ptr<te::st::CoverageSeries>
307 CoverageSeriesObservationSet::const_iterator itb = m_observations.end();
308 CoverageSeriesObservationSet::const_iterator ite = m_observations.end();
314 itb = m_observations.upper_bound(shrdt);
318 itb = m_observations.find(shrdt);
319 if(itb==m_observations.end())
320 itb = m_observations.upper_bound(shrdt);
324 itb = m_observations.begin();
325 ite = m_observations.find(shrdt);
326 if(ite==m_observations.end())
327 ite = m_observations.upper_bound(shrdt);
331 itb = m_observations.begin();
332 ite = m_observations.upper_bound(shrdt);
339 itb = m_observations.find(t1);
340 if(itb==m_observations.end())
341 itb = m_observations.upper_bound(t1);
342 ite = m_observations.upper_bound(t2);
346 std::pair<CoverageSeriesObservationSet::const_iterator, CoverageSeriesObservationSet::const_iterator> itPair;
347 itPair = m_observations.equal_range(shrdt);
350 if(ite!= m_observations.end())
363 std::auto_ptr<te::st::CoverageSeries>
366 return std::auto_ptr<te::st::CoverageSeries>();
369 std::auto_ptr<te::st::CoverageSeries>
372 return std::auto_ptr<te::st::CoverageSeries>();
376 std::auto_ptr<te::st::CoverageSeries>
380 return std::auto_ptr<te::st::CoverageSeries>();
384 std::auto_ptr<te::st::CoverageSeries>
388 return std::auto_ptr<te::st::CoverageSeries>();
An abstract class for interpolation function or interpolator that estimate coverages at non-observed ...
std::auto_ptr< te::st::TimeSeries > getTimeSeries(const te::gm::Point &l, unsigned int p=0) const
It returns a time series of the p-th property associated to a given location.
This file contains a class to represent a CoverageSeries observation.
CoverageSeriesIterator end() const
It returns an iterator that points to the end of the time series.
CoverageSeriesIterator begin() const
It returns an iterator that points to the first observation of the point coverage.
std::map< te::dt::DateTimeShrPtr, CoverageShrPtr, CompareShrDateTime > CoverageSeriesObservationSet
boost::shared_ptr< te::st::Coverage > CoverageShrPtr
std::pair< te::dt::DateTimeShrPtr, CoverageShrPtr > CoverageSeriesObservation
virtual DateTimeInstant * getInitialInstant() const =0
It gets the initial date time instant.
CoverageType
An enum for the types of coverage.
TemporalRelation
Temporal relations between date and time (Source: Allen, 1991).
SpatialRelation
Spatial relations between geometric objects.
boost::shared_ptr< DateTime > DateTimeShrPtr
virtual te::dt::AbstractData * clone() const
It clones the linestring.
A class to traverse the observations of a CoverageSeries.
A point with x and y coordinate values.
An Envelope defines a 2D rectangular region.
virtual te::dt::AbstractData * clone() const
It clones the point.
const CoverageSeriesObservationSet & getObservations() const
It returns the coverage series observations.
virtual DateTimeInstant * getFinalInstant() const =0
It gets the final date time instant.
CoverageSeriesIterator at(te::dt::DateTime *t) const
It returns an iterator that points to an observation at a given time.
CoverageSeries()
A constructor.
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
This file contains a class to represent a coverage series.
std::auto_ptr< CoverageSeries > getPatch(const te::dt::DateTime &dt, te::dt::TemporalRelation r=te::dt::DURING) const
It returns a subset or patch of the coverage series considering a given temporal restriction.
std::size_t size() const
It returns the size of the coverage series observations.
A class to represent a coverage series.
Polygon is a subclass of CurvePolygon whose rings are defined by linear rings.
An abstract class to represent a period of date and time.
A class to represent time series.
CoverageType getType() const
It returns the type of the internal coverages.
te::gm::Geometry * getSpatialExtent() const
It returns the spatial extent of the coverage series.
An abstract class to represent a coverage.
It is an interpolation function the estimates the nearest coverage at a given non-observed time...
std::auto_ptr< te::dt::DateTimePeriod > getTemporalExtent() const
It returns the temporal extent of the coverage series.
TEDATATYPEEXPORT DateTimePeriod * GetTemporalExtent(const DateTime *t1, const DateTime *t2)
It returns the temporal extent of two date and time types.
virtual ~CoverageSeries()
Virtual destructor.
virtual AbstractData * clone() const =0
It returns a clone of this object.
void add(te::dt::DateTime *time, te::st::Coverage *cv)
It adds an observation (time and coverage) into the coverage series.
TEGEOMEXPORT Geometry * GetGeomFromEnvelope(const Envelope *const e, int srid)
It creates a Geometry (a polygon) from the given envelope.
std::auto_ptr< te::st::Coverage > getCoverage(te::dt::DateTime *t) const
It returns the coverage associated to a given date and time.