ObservationDataSetLayer.h
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 terralib/st/maptools/ObservationDataSetLayer.h
22 
23  \brief A layer with a reference to an ObservationDataSet.
24 */
25 
26 #ifndef __TERRALIB_ST_INTERNAL_OBSERVATIONDATASETLAYER_H
27 #define __TERRALIB_ST_INTERNAL_OBSERVATIONDATASETLAYER_H
28 
29 // ST
30 #include "../Config.h"
31 #include "AbstractSTDataSetLayer.h"
32 
33 namespace te
34 {
35  namespace st
36  {
37 
38  //Forward declarations
39  class ObservationDataSet;
41 
43 
44  /*!
45  \class ObservationDataSetLayer
46 
47  \brief A layer with reference to a dataset that contains observations.
48 
49  \sa AbstractLayer, AbstractSTDataSetLayer
50  */
52  {
53  public:
54 
55  /*!
56  \brief It initializes a new layer.
57 
58  \param parent The parent layer (NULL if it has no parent).
59  \param info Infos about the data source and its data set that contains observations.
60 
61  \note It will take the ownership of the given pointer info
62  */
63  ObservationDataSetLayer(AbstractLayer* parent, ObservationDataSetInfo* info);
64 
65  /*!
66  \brief It initializes a new layer.
67 
68  \param id The layer id.
69  \param parent The parent layer (NULL if it has no parent).
70  \param info Infos about the data source and its data set that contains observations.
71 
72  \note It will take the ownership of the given pointer info
73  */
74  ObservationDataSetLayer(const std::string& id, AbstractLayer* parent, ObservationDataSetInfo* info);
75 
76  /*!
77  \brief It initializes a new Layer.
78 
79  \param id The layer id.
80  \param title The title is a brief description about the layer.
81  \param parent The parent layer (NULL if it has no parent).
82  \param info Infos about the data source and its data set that contains observations.
83 
84  \note It will take the ownership of the given pointer info
85  */
86  ObservationDataSetLayer(const std::string& id, const std::string& title, AbstractLayer* parent, ObservationDataSetInfo* info);
87 
88  /*! \brief Destructor. */
90 
91  std::auto_ptr<LayerSchema> getSchema() const;
92 
93  /*!
94  \brief It returns the layer temporal extent.
95 
96  \return The layer temporal extent.
97  */
98  te::dt::DateTimePeriod* getTemporalExtent() const;
99 
100  std::auto_ptr<te::da::DataSet> getData(te::common::TraverseType travType = te::common::FORWARDONLY,
101  const te::common::AccessPolicy accessPolicy = te::common::RAccess) const;
102 
103  std::auto_ptr<te::da::DataSet> getData(const std::string& propertyName,
104  const te::gm::Envelope* e,
107  const te::common::AccessPolicy accessPolicy = te::common::RAccess) const;
108 
109  std::auto_ptr<te::da::DataSet> getData(const std::string& propertyName,
110  const te::gm::Geometry* g,
113  const te::common::AccessPolicy accessPolicy = te::common::RAccess) const;
114 
115  std::auto_ptr<te::da::DataSet> getData(te::da::Expression* restriction,
117  const te::common::AccessPolicy accessPolicy = te::common::RAccess) const;
118 
119  std::auto_ptr<te::da::DataSet> getData(const te::da::ObjectIdSet* oids,
121  const te::common::AccessPolicy accessPolicy = te::common::RAccess) const;
122 
123  std::auto_ptr<te::st::ObservationDataSet> getObservationDataset(te::common::TraverseType travType = te::common::FORWARDONLY) const;
124 
125  std::auto_ptr<te::st::ObservationDataSet> getObservationDataset(const te::gm::Envelope& e,
128 
129  std::auto_ptr<te::st::ObservationDataSet> getObservationDataset(const te::gm::Geometry& g,
132 
133  std::auto_ptr<te::da::DataSet> getData( const te::dt::DateTime& dt, te::dt::TemporalRelation r = te::dt::DURING,
136 
137  std::auto_ptr<te::da::DataSet> getData( const te::dt::DateTime& dt, te::dt::TemporalRelation tr,
141 
142  std::auto_ptr<te::da::DataSet> getData( const te::dt::DateTime& dt, te::dt::TemporalRelation tr,
146 
147  std::auto_ptr<te::st::ObservationDataSet> getObservationDataset( const te::dt::DateTime& dt, te::dt::TemporalRelation r = te::dt::DURING,
149 
150  std::auto_ptr<te::st::ObservationDataSet> getObservationDataset( const te::dt::DateTime& dt, te::dt::TemporalRelation tr,
153 
154  std::auto_ptr<te::st::ObservationDataSet> getObservationDataset( const te::dt::DateTime& dt, te::dt::TemporalRelation tr,
157 
158  bool isValid() const;
159 
160  void draw(te::map::Canvas* canvas, const te::gm::Envelope& bbox, int srid, const double& scale, bool* cancel);
161 
162  /*!
163  \brief It returns the layer type: OBSERVATIONDATASETLAYER.
164 
165  \return The layer type: OBSERVATIONDATASETLAYER.
166  */
167  const std::string& getType() const;
168 
169  /*!
170  \brief
171 
172  \return
173  */
174  const std::string& getDataSourceId() const;
175 
176  /*!
177  \brief
178 
179  \return
180  */
181  const std::string& getRendererType() const;
182 
183  /*!
184  \brief
185 
186  \param t
187  */
188  void setRendererType(const std::string& t);
189 
190  private:
191 
192  std::auto_ptr<ObservationDataSetInfo> m_info; //!< Infos about the data source and its data set that contains observations.
193  std::string m_rendererType; //!< A pointer to the internal renderer used to paint this layer.
194  static const std::string sm_type; //!< A static data member used in the implementation of getType method.
195  };
196 
197  typedef boost::intrusive_ptr<ObservationDataSetLayer> ObservationDataSetLayerPtr;
198 
199  } // end namespace st
200 } // end namespace te
201 
202 #endif // __TERRALIB_ST_INTERNAL_OBSERVATIONDATASETLAYER_H
203 
#define TESTEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:88
A layer with reference to a dataset that contains observations.
std::auto_ptr< ObservationDataSetInfo > m_info
Infos about the data source and its data set that contains observations.
A class that contains infos about a DataSet that contains observations.
boost::intrusive_ptr< ObservationDataSetLayer > ObservationDataSetLayerPtr
A class that models the description of a dataset.
Definition: DataSetType.h:72
This file has the AbstractSTDataSetLayer class that provides an abstract interface for layers that co...
TemporalRelation
Temporal relations between date and time (Source: Allen, 1991).
Definition: Enums.h:140
SpatialRelation
Spatial relations between geometric objects.
Definition: Enums.h:127
This is an abstract class that models a query expression.
Definition: Expression.h:47
static const std::string sm_type
A static data member used in the implementation of getType method.
AccessPolicy
Supported data access policies (can be used as bitfield).
Definition: Enums.h:40
TraverseType
A dataset can be traversed in two ways:
Definition: Enums.h:53
A layer with reference to a dataset that contains spatiotemporal data.
te::da::DataSetType LayerSchema
An Envelope defines a 2D rectangular region.
Definition: Envelope.h:51
This class represents a set of unique ids created in the same context. i.e. from the same data set...
Definition: ObjectIdSet.h:55
URI C++ Library.
std::string m_rendererType
A pointer to the internal renderer used to paint this layer.
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
Definition: Geometry.h:74
A canvas is an abstraction of a drawing area.
Definition: Canvas.h:92
An abstract class to represent a period of date and time.