TrajectoryDataSetLayer.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/TrajectoryDataSetLayer.h
22 
23  \brief A layer with a reference to an TrajectoryDataSet.
24 */
25 
26 #ifndef __TERRALIB_ST_INTERNAL_TRAJECTORYDATASETLAYER_H
27 #define __TERRALIB_ST_INTERNAL_TRAJECTORYDATASETLAYER_H
28 
29 // ST
30 #include "../Config.h"
31 #include "AbstractSTDataSetLayer.h"
32 
33 // Boost
34 #include <boost/ptr_container/ptr_vector.hpp>
35 
36 namespace te
37 {
38  namespace st
39  {
40 
41  //Forward declarations
42  class TrajectoryDataSet;
43  class TrajectoryDataSetInfo;
44 
46 
47  /*!
48  \class TrajectoryDataSetLayer
49 
50  \brief A layer with reference to a dataset that contains trajectories.
51 
52  \sa AbstractLayer, AbstractSTDataSetLayer
53  */
55  {
56  public:
57 
58 
59  /*!
60  \brief It initializes a new layer.
61 
62  \param parent The parent layer (NULL if it has no parent).
63  */
64  TrajectoryDataSetLayer(AbstractLayer* parent = 0);
65 
66  /*!
67  \brief It initializes a new layer.
68 
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  TrajectoryDataSetLayer(AbstractLayer* parent, TrajectoryDataSetInfo* info);
75 
76  /*!
77  \brief It initializes a new layer.
78 
79  \param id The layer id.
80  \param parent The parent layer (NULL if it has no parent).
81  \param info Infos about the data source and its data set that contains observations.
82 
83  \note It will take the ownership of the given pointer info
84  */
85  TrajectoryDataSetLayer(const std::string& id, AbstractLayer* parent, TrajectoryDataSetInfo* info);
86 
87  /*!
88  \brief It initializes a new Layer.
89 
90  \param id The layer id.
91  \param title The title is a brief description about the layer.
92  \param parent The parent layer (NULL if it has no parent).
93  \param info Infos about the data source and its data set that contains observations.
94 
95  \note It will take the ownership of the given pointer info
96  */
97  TrajectoryDataSetLayer(const std::string& id, const std::string& title, AbstractLayer* parent, TrajectoryDataSetInfo* info);
98 
99  /*! \brief Destructor. */
101 
102  std::auto_ptr<LayerSchema> getSchema() const;
103 
104  /*!
105  \brief It returns the layer temporal extent.
106 
107  \return The layer temporal extent.
108  */
109  te::dt::DateTimePeriod* getTemporalExtent() const;
110 
111  std::auto_ptr<te::da::DataSet> getData(te::common::TraverseType travType = te::common::FORWARDONLY,
112  const te::common::AccessPolicy accessPolicy = te::common::RAccess) const;
113 
114  std::auto_ptr<te::da::DataSet> getData(const std::string& propertyName,
115  const te::gm::Envelope* e,
118  const te::common::AccessPolicy accessPolicy = te::common::RAccess) const;
119 
120  std::auto_ptr<te::da::DataSet> getData(const std::string& propertyName,
121  const te::gm::Geometry* g,
124  const te::common::AccessPolicy accessPolicy = te::common::RAccess) const;
125 
126  std::auto_ptr<te::da::DataSet> getData(te::da::Expression* restriction,
128  const te::common::AccessPolicy accessPolicy = te::common::RAccess) const;
129 
130  std::auto_ptr<te::da::DataSet> getData(const te::da::ObjectIdSet* oids,
132  const te::common::AccessPolicy accessPolicy = te::common::RAccess) const;
133 
134  std::auto_ptr<te::st::TrajectoryDataSet> getTrajectoryDataset(te::common::TraverseType travType = te::common::FORWARDONLY) const;
135 
136  std::auto_ptr<te::st::TrajectoryDataSet> getTrajectoryDataset(const te::gm::Envelope& e,
139 
140  std::auto_ptr<te::st::TrajectoryDataSet> getTrajectoryDataset(const te::gm::Geometry& g,
143 
144  std::auto_ptr<te::da::DataSet> getData( const te::dt::DateTime& dt, te::dt::TemporalRelation r = te::dt::DURING,
147 
148  std::auto_ptr<te::da::DataSet> getData( const te::dt::DateTime& dt, te::dt::TemporalRelation tr,
152 
153  std::auto_ptr<te::da::DataSet> getData( const te::dt::DateTime& dt, te::dt::TemporalRelation tr,
157 
158  std::auto_ptr<te::st::TrajectoryDataSet> getTrajectoryDataset( const te::dt::DateTime& dt, te::dt::TemporalRelation r = te::dt::DURING,
160 
161  std::auto_ptr<te::st::TrajectoryDataSet> getTrajectoryDataset( const te::dt::DateTime& dt, te::dt::TemporalRelation tr,
164 
165  std::auto_ptr<te::st::TrajectoryDataSet> getTrajectoryDataset( const te::dt::DateTime& dt, te::dt::TemporalRelation tr,
168 
169  bool isValid() const;
170 
171  void draw(te::map::Canvas* canvas, const te::gm::Envelope& bbox, int srid, const double& scale);
172 
173  /*!
174  \brief It returns the layer type: TRAJECTORYDATASETLAYER.
175 
176  \return The layer type: TRAJECTORYDATASETLAYER.
177  */
178  const std::string& getType() const;
179 
180  /*!
181  \brief
182 
183  \return
184  */
185  const std::string& getDataSourceId() const;
186 
187  /*!
188  \brief
189 
190  \return
191  */
192  const std::string& getRendererType() const;
193 
194  /*!
195  \brief
196 
197  \param t
198  */
199  void setRendererType(const std::string& t);
200 
201  /*!
202  \brief Checks if the layer has any childs
203 
204  \return true if the layer has any childs, otherwise returns false
205  */
206 
207  bool hasChilds();
208 
209  private:
210 
211  boost::ptr_vector<TrajectoryDataSetLayer> m_layers; //!, A container the holds any child layers.
212  std::auto_ptr<TrajectoryDataSetInfo> m_info; //!< Infos about the data source and its data set that contains observations.
213  std::string m_rendererType; //!< A pointer to the internal renderer used to paint this layer.
214  static const std::string sm_type; //!< A static data member used in the implementation of getType method.
215  };
216 
217  typedef boost::intrusive_ptr<TrajectoryDataSetLayer> TrajectoryDataSetLayerPtr;
218 
219  } // end namespace st
220 } // end namespace te
221 
222 #endif // __TERRALIB_ST_INTERNAL_TRAJECTORYDATASETLAYER_H
#define TESTEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:88
std::string m_rendererType
A pointer to the internal renderer used to paint this layer.
boost::intrusive_ptr< TrajectoryDataSetLayer > TrajectoryDataSetLayerPtr
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
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.
static const std::string sm_type
A static data member used in the implementation of getType method.
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
Definition: Geometry.h:73
std::auto_ptr< TrajectoryDataSetInfo > m_info
, A container the holds any child layers.
A class that contains infos about a DataSet that contains observations of one or more trajectories...
A canvas is an abstraction of a drawing area.
Definition: Canvas.h:92
An abstract class to represent a period of date and time.
A layer with reference to a dataset that contains trajectories.
boost::ptr_vector< TrajectoryDataSetLayer > m_layers