DataSet.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/ogr/DataSet.h
22 
23  \brief Implementation of a DataSet for OGR data provider.
24 */
25 
26 #ifndef __TERRALIB_GPKG_INTERNAL_DATASET_H
27 #define __TERRALIB_GPKG_INTERNAL_DATASET_H
28 
29 #include "../Config.h"
30 
31 // TerraLib
32 #include "../../../../dataaccess/dataset/DataSet.h"
33 
34 // STL
35 #include <vector>
36 
37 // Forward declarations
38 class OGRLayer;
39 class OGRFeature;
40 //class OGRDataSource;
41 class GDALDataset;
42 
43 namespace te
44 {
45 // Forward declaration
46  namespace da
47  {
48  class DataSetType;
49  }
50 
51  namespace gpkg
52  {
53  /*!
54  \class DataSet
55 
56  \brief Implementation of a DataSet for OGR data provider.
57 
58  \sa Transactor, te::da::DataSet
59  */
61  {
62  public:
63 
64  /** @name Constructor/Destructor
65  * Initilizer methods.
66  */
67  //@{
68 
69  /*! \brief Constructor. */
70  //DataSet(OGRDataSource* dsrc, OGRLayer* layer);
71  DataSet(GDALDataset* dsrc, OGRLayer* layer);
72 
73  /*! \brief Destructor. */
75 
76  //@}
77 
79 
81 
82  std::size_t getNumProperties() const;
83 
84  int getPropertyDataType(std::size_t pos) const;
85 
86  std::string getPropertyName(std::size_t pos) const;
87 
89 
90  std::string getDatasetNameOfProperty(std::size_t pos) const;
91 
92  bool isEmpty() const;
93 
94  bool isConnected() const { return true; }
95 
96  std::size_t size() const;
97 
98  std::auto_ptr<te::gm::Envelope> getExtent(std::size_t i);
99 
100  bool moveNext();
101 
102  bool movePrevious();
103 
105 
106  bool moveFirst();
107 
108  bool moveLast();
109 
110  bool move(std::size_t i);
111 
112  bool isAtBegin() const;
113 
114  bool isBeforeBegin() const;
115 
116  bool isAtEnd() const;
117 
118  bool isAfterEnd() const;
119 
120  char getChar(std::size_t i) const;
121 
122  unsigned char getUChar(std::size_t i) const;
123 
124  boost::int16_t getInt16(std::size_t i) const;
125 
126  boost::int32_t getInt32(std::size_t i) const;
127 
128  boost::int64_t getInt64(std::size_t i) const;
129 
130  bool getBool(std::size_t i) const;
131 
132  float getFloat(std::size_t i) const;
133 
134  double getDouble(std::size_t i) const;
135 
136  std::string getNumeric(std::size_t i) const;
137 
138  std::string getString(std::size_t i) const;
139 
140  std::auto_ptr<te::dt::ByteArray> getByteArray(std::size_t i) const;
141 
142  std::auto_ptr<te::gm::Geometry> getGeometry(std::size_t i) const;
143 
144  std::auto_ptr<te::rst::Raster> getRaster(std::size_t i) const;
145 
146  std::auto_ptr<te::dt::DateTime> getDateTime(std::size_t i) const;
147 
148  std::auto_ptr<te::dt::Array> getArray(std::size_t i) const;
149 
150  bool isNull(std::size_t i) const;
151 
152  private:
153 
154  const unsigned char* getWKB() const;
155 
156  private:
157 
158  mutable te::da::DataSetType* m_dt; //!< DataSetType.
159 
160  //OGRDataSource* m_ogrDs; //<! Pointer to OGR data source.
161  GDALDataset* m_ogrDs; //<! Pointer to OGR data source.
162  OGRLayer* m_layer; //<! A pointer to OGR Layer.
163  OGRFeature* m_currentFeature; //<! A pointer to current OGR Feature of layer.
164  int m_i; //<! The current dataset index.
165 
166  mutable unsigned char* m_wkbArray; //<! The array that stores the wkb generated by OGR Library.
167  mutable int m_wkbArraySize; //<! The size of wkb array.
168 
169  int m_srid; //!< The SRS id associated to this dataset.
170  };
171 
172  } // end namespace ogr
173 } // end namespace te
174 
175 #endif // __TERRALIB_OGR_INTERNAL_DATASET_H
A class that models the description of a dataset.
Definition: DataSetType.h:73
A dataset is the unit of information manipulated by the data access module of TerraLib.
Definition: DataSet.h:114
Implementation of a DataSet for OGR data provider.
Definition: DataSet.h:61
boost::int64_t getInt64(std::size_t i) const
Method for retrieving a 64-bit integer attribute value (8 bytes long).
bool isBeforeBegin() const
It tells if the dataset internal pointer is in a position before the first element of the collection ...
std::auto_ptr< te::rst::Raster > getRaster(std::size_t i) const
Method for retrieving a raster attribute value.
bool isAtBegin() const
It tells if the dataset internal pointer is on the first element of the collection or not.
GDALDataset * m_ogrDs
Definition: DataSet.h:161
bool moveNext()
It moves the internal pointer to the next item of the collection.
float getFloat(std::size_t i) const
Method for retrieving a float attribute value.
std::auto_ptr< te::gm::Geometry > getGeometry(std::size_t i) const
Method for retrieving a geometric attribute value.
int getPropertyDataType(std::size_t pos) const
It returns the underlying data type of the property at position pos.
boost::int32_t getInt32(std::size_t i) const
Method for retrieving a 32-bit integer attribute value (4 bytes long).
bool isAfterEnd() const
It tells if the dataset internal pointer is on the sentinel position after the last element of the co...
bool getBool(std::size_t i) const
Method for retrieving a boolean attribute value.
std::auto_ptr< te::gm::Envelope > getExtent(std::size_t i)
It computes the bounding rectangle for a spatial property of the dataset.
std::string getDatasetNameOfProperty(std::size_t pos) const
It returns the underlying dataset name of the property at position pos.
double getDouble(std::size_t i) const
Method for retrieving a double attribute value.
std::auto_ptr< te::dt::DateTime > getDateTime(std::size_t i) const
Method for retrieving a date and time attribute value.
te::da::DataSetType * m_dt
DataSetType.
Definition: DataSet.h:158
bool isNull(std::size_t i) const
It checks if the attribute value is NULL.
std::auto_ptr< te::dt::ByteArray > getByteArray(std::size_t i) const
Method for retrieving a byte array.
std::size_t size() const
It returns the collection size, if it is known.
unsigned char * m_wkbArray
Definition: DataSet.h:166
char getChar(std::size_t i) const
Method for retrieving a signed character attribute value (1 byte long).
std::auto_ptr< te::dt::Array > getArray(std::size_t i) const
Method for retrieving an array.
bool isConnected() const
It returns true if the dataset is connected and false if it is disconnected. A dataset can be connect...
Definition: DataSet.h:94
bool moveFirst()
It moves the internal pointer to the first item in the collection.
DataSet(GDALDataset *dsrc, OGRLayer *layer)
Constructor.
bool moveLast()
It sets the dataset internal pointer to the last item in the collection.
boost::int16_t getInt16(std::size_t i) const
Method for retrieving a 16-bit integer attribute value (2 bytes long).
unsigned char getUChar(std::size_t i) const
Method for retrieving an unsigned character attribute value (1 byte long).
bool isEmpty() const
It returns true if the collection is empty.
te::common::AccessPolicy getAccessPolicy() const
It returns the read and write permission associated to the dataset.
Definition: DataSet.h:80
int m_srid
The SRS id associated to this dataset.
Definition: DataSet.h:169
bool move(std::size_t i)
It moves the dataset internal pointer to a given position.
const unsigned char * getWKB() const
bool movePrevious()
It moves the internal pointer to the previous item of the collection.
std::string getString(std::size_t i) const
Method for retrieving a string value attribute.
te::core::EncodingType getPropertyCharEncoding(std::size_t i) const
OGRLayer * m_layer
Definition: DataSet.h:162
bool moveBeforeFirst()
It moves the internal pointer to a position before the first item in the collection.
std::string getNumeric(std::size_t i) const
Method for retrieving a numeric attribute value.
OGRFeature * m_currentFeature
Definition: DataSet.h:163
std::size_t getNumProperties() const
It returns the number of properties that composes an item of the dataset.
std::string getPropertyName(std::size_t pos) const
It returns the property name at position pos.
te::common::TraverseType getTraverseType() const
It returns the traverse type associated to the dataset.
Definition: DataSet.h:78
~DataSet()
Destructor.
bool isAtEnd() const
It tells if the dataset internal pointer is on the last element of the collection.
TraverseType
A dataset can be traversed in two ways:
Definition: Enums.h:54
@ FORWARDONLY
Definition: Enums.h:55
AccessPolicy
Supported data access policies (can be used as bitfield).
Definition: Enums.h:41
@ RAccess
Definition: Enums.h:43
EncodingType
Supported character encodings.
Definition: CharEncoding.h:51
TerraLib.
#define TERRAMOBILEPLUGINSDLLEXPORT
Definition: Config.h:89