ObservationDataSetInfo.cpp
Go to the documentation of this file.
1 /* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18 */
19 
20 /*!
21  \file ObservationDataSetInfo.cpp
22 
23  \brief This file contains a class called ObservationDataSetInfo
24 */
25 
26 //TerraLib
27 #include "../../../common/StringUtils.h"
28 #include "../../../geometry/Geometry.h"
29 #include "../../../geometry/GeometryProperty.h"
30 #include "../../../datatype/DateTimeProperty.h"
31 #include "../../../datatype/DateTime.h"
32 #include "../../../datatype/DateTimeInstant.h"
33 #include "../../../datatype/DateTimePeriod.h"
34 
35 //ST
36 #include "ObservationDataSetInfo.h"
37 
39  const te::da::DataSourceInfo& dsInfo, const std::string& dsName)
40  : m_dsInfo(dsInfo),
41  m_dsName(dsName),
42 
43  m_idPropIndex(-1),
44  m_idPropName(""),
45  m_id("")
46 
47 {
48 }
49 
51 {
52  *this = obs;
53 }
54 
57 {
58  if(this == &rhs)
59  return *this;
60 
61  m_dsInfo = rhs.m_dsInfo;
62  m_dsName = rhs.m_dsName;
63 
64  m_phTimePropInfo.clear();
65  for(unsigned int i = 0; i<rhs.m_phTimePropInfo.size(); ++i)
66  {
68  m_phTimePropInfo.push_back(prop);
69  }
70 
71  m_phTime.reset();
72  if(rhs.m_phTime.get()!=nullptr)
73  m_phTime.reset(dynamic_cast<te::dt::DateTime*>(rhs.m_phTime->clone()));
74 
75  m_validTimePropInfo.clear();
76  for(unsigned int i = 0; i<rhs.m_validTimePropInfo.size(); ++i)
77  {
79  m_validTimePropInfo.push_back(prop);
80  }
81 
82  m_validTime.reset();
83  if(rhs.m_validTime.get()!=nullptr)
84  m_validTime.reset(dynamic_cast<te::dt::DateTimePeriod*>(rhs.m_validTime->clone()));
85 
86  m_resultTimePropInfo.reset();
87  if(rhs.m_resultTimePropInfo.get()!=nullptr)
88  {
90  m_resultTimePropInfo.reset(propAux);
91  }
92 
93  m_resultTime.reset();
94  if(rhs.m_resultTime.get()!=nullptr)
95  m_resultTime.reset(dynamic_cast<te::dt::DateTimeInstant*>(rhs.m_resultTime->clone()));
96 
99 
100  m_geomPropInfo.reset();
101  if(rhs.m_geomPropInfo.get()!=nullptr)
102  {
104  m_geomPropInfo.reset(prop);
105  }
106 
107  m_geom.reset();
108  if(rhs.m_geom.get()!=nullptr)
109  m_geom.reset(dynamic_cast<te::gm::Geometry*>(rhs.m_geom.get()->clone()));
110 
113  m_id = rhs.m_id;
114 
115  m_spatialExtent.reset();
116  if(rhs.m_spatialExtent.get()!=nullptr)
117  m_spatialExtent.reset(dynamic_cast<te::gm::Geometry*>(rhs.m_spatialExtent.get()->clone()));
118 
119  m_temporalExtent.reset();
120  if(rhs.m_temporalExtent.get()!=nullptr)
121  m_temporalExtent.reset(dynamic_cast<te::dt::DateTimePeriod*>(rhs.m_temporalExtent.get()->clone()));
122 
123  return *this;
124 }
125 
127  const std::string& dsName)
128 {
129  m_dsInfo = dsInfo;
130  m_dsName = dsName;
131 }
132 
134 {
135  m_phTimePropInfo.clear();
136  m_phTimePropInfo.push_back(tpInfo);
137 }
138 
140  te::dt::DateTimeProperty* tpInfo2)
141 {
142  m_phTimePropInfo.clear();
143  m_phTimePropInfo.push_back(tpInfo1);
144  m_phTimePropInfo.push_back(tpInfo2);
145 }
146 
148 {
149  m_phTime.reset(t);
150 }
151 
153 {
154  m_validTimePropInfo.clear();
155  m_validTimePropInfo.push_back(tpInfo);
156 }
157 
159  te::dt::DateTimeProperty* tpInfo2)
160 {
161  m_validTimePropInfo.clear();
162  m_validTimePropInfo.push_back(tpInfo1);
163  m_validTimePropInfo.push_back(tpInfo2);
164 }
165 
167 {
168  m_validTime.reset(t);
169 }
170 
172 {
173  m_resultTimePropInfo.reset(tpInfo);
174 }
175 
177 {
178  m_resultTime.reset(t);
179 }
180 
181 void te::st::ObservationDataSetInfo::setObsPropInfo(const std::vector<int>& props)
182 {
183  m_observedPropIdx = props;
184 }
185 
186 void te::st::ObservationDataSetInfo::setObsPropInfo(const std::vector<std::string>& props)
187 {
188  m_observedPropName = props;
189 }
190 
192 {
193  m_geomPropInfo.reset(prop);
194 }
195 
197 {
198  m_geom.reset(geom);
199 }
200 
202 {
203  m_idPropIndex = idProp;
204 }
205 
206 void te::st::ObservationDataSetInfo::setIdPropInfo(const std::string& idProp)
207 {
208  m_idPropName = idProp;
209 }
210 
211 void te::st::ObservationDataSetInfo::setId(const std::string& id)
212 {
213  m_id = id;
214 }
215 
217 {
218  m_spatialExtent.reset(se);
219 }
220 
222 {
223  m_temporalExtent.reset(te);
224 }
225 
227 {
228  return m_phTimePropInfo.size()>0;
229 }
230 
232 {
233  return m_phTimePropInfo.size()==2;
234 }
235 
237 {
238  return m_phTime.get()!=nullptr;
239 }
240 
242 {
243  return m_validTimePropInfo.size()>0;
244 }
245 
247 {
248  return m_validTimePropInfo.size()==2;
249 }
250 
252 {
253  return m_validTime.get()!=nullptr;
254 }
255 
257 {
258  return m_resultTimePropInfo.get()!=nullptr;
259 }
260 
262 {
263  return m_resultTime.get()!=nullptr;
264 }
265 
267 {
268  return m_geomPropInfo.get()!=nullptr;
269 }
270 
272 {
273  return m_geom.get()!=nullptr;
274 }
275 
277 {
278  if(m_idPropIndex >= 0 || !m_idPropName.empty())
279  return true;
280  return false;
281 }
282 
284 {
285  return !m_id.empty();
286 }
287 
289 {
290  return (m_spatialExtent.get()!=nullptr);
291 }
292 
294 {
295  return (m_temporalExtent.get()!=nullptr);
296 }
297 
300 {
301  return m_dsInfo;
302 }
303 
304 std::string
306 {
307  return m_dsName;
308 }
309 
312 {
313  if(hasTimeProp())
314  return &m_phTimePropInfo[0];
315  return nullptr;
316 }
317 
320 {
321  if(hasTwoTimeProp())
322  return &m_phTimePropInfo[1];
323  return nullptr;
324 }
325 
326 const te::dt::DateTime*
328 {
329  return m_phTime.get();
330 }
331 
334 {
335  if(hasVlTimeProp())
336  return &m_validTimePropInfo[0];
337  return nullptr;
338 }
339 
342 {
343  if(hasTwoVlTimeProp())
344  return &m_validTimePropInfo[1];
345  return nullptr;
346 }
347 
350 {
351  return m_validTime.get();
352 }
353 
356 {
357  return m_resultTimePropInfo.get();
358 }
359 
362 {
363  return m_resultTime.get();
364 }
365 
366 const std::vector<int>&
368 {
369  return m_observedPropIdx;
370 }
371 
372 const std::vector<std::string>&
374 {
375  return m_observedPropName;
376 }
377 
380 {
381  return m_geomPropInfo.get();
382 }
383 
384 const te::gm::Geometry*
386 {
387  return m_geom.get();
388 }
389 
391 {
392  return m_idPropIndex;
393 }
394 
396 {
397  return m_idPropName;
398 }
399 
401 {
402  return m_id;
403 }
404 
405 /*
406 int te::st::ObservationDataSetInfo::getBeginTimePropIdx() const
407 {
408  if(hasTimeProp())
409  return m_phTimePropInfo[0].getId();
410  return -1;
411 }
412 */
413 
414 std::string
416 {
417  if(hasTimeProp())
418  return m_phTimePropInfo[0].getName();
419  return "";
420 }
421 
422 /*
423 int te::st::ObservationDataSetInfo::getEndTimePropIdx() const
424 {
425  if(hasTwoTimeProp())
426  return m_phTimePropInfo[1].getId();
427  return -1;
428 }
429 */
430 
431 std::string
433 {
434  if(hasTwoTimeProp())
435  return m_phTimePropInfo[1].getName();
436  return "";
437 }
438 
439 /*
440 int te::st::ObservationDataSetInfo::getGeomPropIdx() const
441 {
442  if(hasGeomProp())
443  return m_geomPropInfo->getId();
444  return -1;
445 }
446 */
447 
449 {
450  if(hasGeomProp())
451  return m_geomPropInfo->getName();
452  return "";
453 }
454 
457  {
458  if(hasTemporalExtent())
459  return m_temporalExtent.get();
460  return nullptr;
461  }
462 
463  const te::gm::Geometry*
465  {
466  if(hasSpatialExtent())
467  return m_spatialExtent.get();
468  return nullptr;
469  }
470 
472 {
474 }
475 
void setSpatialExtent(te::gm::Geometry *se)
It sets the spatial extent of all observations.
void setRsTime(te::dt::DateTimeInstant *t)
It sets the result time associated to all observations.
Geometric property.
std::string getBeginTimePropName() const
It returns the name of the DataSet property that contains the phenomenon beginning time...
void setVlTime(te::dt::DateTimePeriod *t)
It sets the valid time associated to all observations.
boost::ptr_vector< te::dt::DateTimeProperty > m_validTimePropInfo
Valid time: information about the DataSet properties that contain the valid time. ...
const te::dt::DateTime * getTime() const
It returns the phenomenon time.
This file contains a class called ObservationDataSetInfo.
std::string getObsId() const
It returns the identifier associated to all observations.
const te::dt::DateTimeInstant * getRsTime() const
It returns the result time.
A class that contains infos about a DataSet that contains observations.
const te::gm::Geometry * getSpatialExtent() const
It returns the spatial extent of the observations.
const std::vector< int > & getObsPropIdxs() const
It returns the indexes of the DataSet properties that are observed over time.
std::string getGeomPropName() const
It returns the name of the property that is a geometry property.
te::da::DataSourceInfo m_dsInfo
Information about the DataSource from which the DataSet come.
const te::dt::DateTimePeriod * getVlTime() const
It returns the valid time.
std::string m_dsName
The DataSet name.
std::string Convert2UCase(const std::string &value)
It converts a string to upper case.
Definition: StringUtils.h:168
void setDataSourceInfo(const te::da::DataSourceInfo &dsinfo, const std::string &dsName)
It sets the information about the DataSource and the DataSet name that contains the observations...
void setTime(te::dt::DateTime *t)
It sets the phenomenon time associated to all observations.
const te::gm::GeometryProperty * getGeomPropInfo() const
It returns the DataSet property information that contains the geometry.
const te::gm::Geometry * getGeometry() const
It returns the geometry associated to all observations.
std::unique_ptr< te::gm::GeometryProperty > m_geomPropInfo
Geometry: information about the property that has the observation spatial location.
std::unique_ptr< te::dt::DateTimePeriod > m_temporalExtent
Temporal extent.
std::unique_ptr< te::dt::DateTime > m_phTime
Phenomenon time: the phenomenon time, when the time is not inside a DataSet.
void setVlTimePropInfo(te::dt::DateTimeProperty *tpInfo)
It sets the property info that contains the valid time.
std::vector< std::string > m_observedPropName
Observed properties: the names of DataSet properties that are observed.
const std::vector< std::string > & getObsPropNames() const
It returns the names of the DataSet properties that are observed over time.
void setIdPropInfo(int idProp)
It sets the index of the DataSet property that contains identifiers that groups the observations...
URI C++ Library.
Definition: Attributes.h:37
const te::dt::DateTimeProperty * getVlEndTimePropInfo() const
It returns the DataSet property information that contains the valid end time.
std::unique_ptr< te::dt::DateTimeProperty > m_resultTimePropInfo
Result time: information about the DataSet property that contains the result time.
void setGeometry(te::gm::Geometry *geom)
It sets the geometry associated to all observations.
const te::dt::DateTimeProperty * getBeginTimePropInfo() const
It returns the DataSet property information that contains the phenomenon beginning time...
const te::da::DataSourceInfo & getDataSourceInfo() const
It returns the information about the DataSource.
void setId(const std::string &id)
It sets the identifier associated to all observations.
void setRsTimePropInfo(te::dt::DateTimeProperty *tpInfo)
It sets the property info that contains the result time.
std::string m_idPropName
Id: the name of DataSet property that contain the id of each group of observation.
const te::dt::DateTimeProperty * getVlBeginTimePropInfo() const
It returns the DataSet property information that contains the valid beginning time.
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
std::string getDSId() const
It returns an id (as a string) that identifies the DataSet.
const te::dt::DateTimePeriod * getTemporalExtent() const
It returns the temporal extent of the observations.
void setTemporalExtent(te::dt::DateTimePeriod *te)
It sets the temporal extent of all observations.
std::unique_ptr< te::gm::Geometry > m_geom
Geometry: the geometry, when the spatial location of the observations are not in the DataSet...
const std::string & getId() const
std::vector< int > m_observedPropIdx
Observed properties: the indexes of DataSet properties that are observed.
const te::dt::DateTimeProperty * getEndTimePropInfo() const
It returns the DataSet property information that contains the phenomenon end time.
std::unique_ptr< te::gm::Geometry > m_spatialExtent
Spatial extent.
virtual ~ObservationDataSetInfo()
Virtual destructor.
int getIdPropIdx() const
It returns the index of the property that contains identifiers that groups observations.
const te::dt::DateTimeProperty * getRsTimePropInfo() const
It returns the DataSet property information that contains the result time.
void setTimePropInfo(te::dt::DateTimeProperty *tpInfo)
It sets the property info that contains the phenomenon time.
An abstract class to represent a period of date and time.
The type for date and time types: date, date period, date duration, time duration, time instant, time period, time instant with time zone or time period with time zone.
std::string m_id
Id: the id associated to all observations.
A class that represents a data source component.
std::string getDataSetName() const
It returns the DataSet name.
std::string getEndTimePropName() const
It returns the name of the DataSet property that contains the phenomenon end time.
void setGeomPropInfo(te::gm::GeometryProperty *prop)
It sets the info about the property that contains the observation location.
void setObsPropInfo(const std::vector< int > &props)
It sets the indexes of the DataSet properties that are observed over time.
std::string getIdPropName() const
It returns the name of the property that contains identifiers that groups observations.
int m_idPropIndex
Id: the index of DataSet property that contain the id of each group of observation.
std::unique_ptr< te::dt::DateTimePeriod > m_validTime
Valid time: the valid time, when the time is not inside a DataSet.
ObservationDataSetInfo(const te::da::DataSourceInfo &dsInfo, const std::string &dsName)
Constructor.
std::unique_ptr< te::dt::DateTimeInstant > m_resultTime
Result time: the result time, when the time is not inside a DataSet.
An abstract class to represent an instant of date and time.
boost::ptr_vector< te::dt::DateTimeProperty > m_phTimePropInfo
Phenomenon time: information about the DataSet properties that contain the phenomenon time...
const ObservationDataSetInfo & operator=(const ObservationDataSetInfo &rhs)
Assignment operator.