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>();
TEDATATYPEEXPORT DateTimePeriod * GetTemporalExtent(const DateTime *t1, const DateTime *t2)
It returns the temporal extent of two date and time types.
virtual DateTimeInstant * getInitialInstant() const =0
It gets the initial date time instant.
CoverageSeriesIterator end() const
It returns an iterator that points to the end of the time series.
virtual te::dt::AbstractData * clone() const
It clones the point.
TEGEOMEXPORT Geometry * GetGeomFromEnvelope(const Envelope *const e, int srid)
It creates a Geometry (a polygon) from the given envelope.
virtual AbstractData * clone() const =0
It returns a clone of this object.
This file contains a class to represent a CoverageSeries observation.
boost::shared_ptr< te::st::Coverage > CoverageShrPtr
boost::shared_ptr< DateTime > DateTimeShrPtr
Polygon is a subclass of CurvePolygon whose rings are defined by linear rings.
std::map< te::dt::DateTimeShrPtr, CoverageShrPtr, CompareShrDateTime > CoverageSeriesObservationSet
std::auto_ptr< te::st::Coverage > getCoverage(te::dt::DateTime *t) const
It returns the coverage associated to a given date and time.
CoverageSeriesIterator begin() const
It returns an iterator that points to the first observation of the point coverage.
std::auto_ptr< te::dt::DateTimePeriod > getTemporalExtent() const
It returns the temporal extent of the coverage series.
SpatialRelation
Spatial relations between geometric objects.
It is an interpolation function the estimates the nearest coverage at a given non-observed time...
std::size_t size() const
It returns the size of the coverage series observations.
An abstract class to represent a period of date and time.
An abstract class to represent a coverage.
This file contains a class to represent a coverage series.
virtual DateTimeInstant * getFinalInstant() const =0
It gets the final date time instant.
const CoverageSeriesObservationSet & getObservations() const
It returns the coverage series observations.
An abstract class for interpolation function or interpolator that estimate coverages at non-observed ...
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
CoverageSeries()
A constructor.
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.
A point with x and y coordinate values.
TemporalRelation
Temporal relations between date and time (Source: Allen, 1991).
std::pair< te::dt::DateTimeShrPtr, CoverageShrPtr > CoverageSeriesObservation
A class to traverse the observations of a CoverageSeries.
te::gm::Geometry * getSpatialExtent() const
It returns the spatial extent of the coverage series.
A class to represent time series.
CoverageSeriesIterator at(te::dt::DateTime *t) const
It returns an iterator that points to an observation at a given time.
virtual te::dt::AbstractData * clone() const
It clones the linestring.
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.
void add(te::dt::DateTime *time, te::st::Coverage *cv)
It adds an observation (time and coverage) into the coverage series.
CoverageType
An enum for the types of coverage.
virtual ~CoverageSeries()
Virtual destructor.
A class to represent a coverage series.
An Envelope defines a 2D rectangular region.
CoverageType getType() const
It returns the type of the internal coverages.