All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RasterDataSet.cpp
Go to the documentation of this file.
1 /* Copyright (C) 2008-2013 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/terralib4/RasterDataSet.cpp
22 
23  \brief Implementation of a dataset for the TerraLib 4 driver.
24 */
25 
26 // TerraLib
27 #include "../common/ByteSwapUtils.h"
28 #include "../common/Globals.h"
29 #include "../common/StringUtils.h"
30 #include "../common/Translator.h"
31 #include "../dataaccess/dataset/DataSetType.h"
32 #include "../datatype/Array.h"
33 #include "../datatype/ByteArray.h"
34 #include "../datatype/DateTimeProperty.h"
35 #include "../datatype/SimpleData.h"
36 #include "../datatype/TimeInstant.h"
37 #include "../geometry/Envelope.h"
38 #include "../geometry/Geometry.h"
39 #include "../geometry/WKBReader.h"
40 #include "../raster/Raster.h"
41 #include "RasterDataSet.h"
42 #include "DataSource.h"
43 #include "Exception.h"
44 #include "Raster.h"
45 #include "Utils.h"
46 
47 // Terralib 4.x
48 #include <terralib/kernel/TeAttribute.h>
49 #include <terralib/kernel/TeDatabase.h>
50 #include <terralib/kernel/TeLayer.h>
51 
52 #include <terralib/kernel/TeQuerierParams.h>
53 
54 // STL
55 #include <memory>
56 
57 // Boost
58 #include <boost/dynamic_bitset.hpp>
59 #include <boost/lexical_cast.hpp>
60 
62  : m_raster(raster), m_i(-1)
63 {
64 }
65 
67 {
68 }
69 
71 {
73 }
74 
76 {
77  return te::common::RAccess;
78 }
79 
80 std::auto_ptr<te::gm::Envelope> terralib4::RasterDataSet::getExtent(std::size_t /*i*/)
81 {
82  return Convert2T5(m_raster->box());
83 }
84 
86 {
87  return 1;
88 }
89 
91 {
92  return te::dt::RASTER_TYPE;
93 }
94 
95 std::string terralib4::RasterDataSet::getPropertyName(std::size_t /*i*/) const
96 {
97  return "raster";
98 }
99 
100 std::string terralib4::RasterDataSet::getDatasetNameOfProperty(std::size_t /*i*/) const
101 {
102  return "raster";
103 }
104 
106 {
107  return false;
108 }
109 
111 {
112  return true;
113 }
114 
116 {
117  return 1;
118 }
119 
121 {
122  return (++m_i) == 0;
123 }
124 
126 {
127  return false;
128 }
129 
131 {
132  m_i = -1;
133  return true;
134 }
135 
137 {
138  m_i = 0;
139  return true;
140 }
141 
143 {
144  m_i = 0;
145  return true;
146 }
147 
148 bool terralib4::RasterDataSet::move(std::size_t /*i*/)
149 {
150  return false;
151 }
152 
154 {
155  return m_i == 0;
156 }
157 
159 {
160  return m_i == -1;
161 }
162 
164 {
165  return m_i == 0;
166 }
167 
169 {
170  return m_i > 0;
171 }
172 
173 char terralib4::RasterDataSet::getChar(std::size_t /*i*/) const
174 {
175  throw Exception(TR_TERRALIB4("Not supported by this type of dataset!"));
176 }
177 
178 unsigned char terralib4::RasterDataSet::getUChar(std::size_t /*i*/) const
179 {
180  throw Exception(TR_TERRALIB4("Not supported by this type of dataset!"));
181 }
182 
183 boost::int16_t terralib4::RasterDataSet::getInt16(std::size_t /*i*/) const
184 {
185  throw Exception(TR_TERRALIB4("Not supported by this type of dataset!"));
186 }
187 
188 boost::int32_t terralib4::RasterDataSet::getInt32(std::size_t i) const
189 {
190  throw Exception(TR_TERRALIB4("Not supported by this type of dataset!"));
191 }
192 
193 boost::int64_t terralib4::RasterDataSet::getInt64(std::size_t i) const
194 {
195  throw Exception(TR_TERRALIB4("Not supported by this type of dataset!"));
196 }
197 
198 bool terralib4::RasterDataSet::getBool(std::size_t /*i*/) const
199 {
200  throw Exception(TR_TERRALIB4("Not supported by this type of dataset!"));
201 }
202 
203 float terralib4::RasterDataSet::getFloat(std::size_t /*i*/) const
204 {
205  throw Exception(TR_TERRALIB4("Not supported by this type of dataset!"));
206 }
207 
208 double terralib4::RasterDataSet::getDouble(std::size_t /*i*/) const
209 {
210  throw Exception(TR_TERRALIB4("Not supported by this type of dataset!"));
211 }
212 
213 std::string terralib4::RasterDataSet::getNumeric(std::size_t /*i*/) const
214 {
215  throw Exception(TR_TERRALIB4("Not supported by this type of dataset!"));
216 }
217 
218 std::string terralib4::RasterDataSet::getString(std::size_t /*i*/) const
219 {
220  throw Exception(TR_TERRALIB4("Not supported by this type of dataset!"));
221 }
222 
223 std::auto_ptr<te::dt::ByteArray> terralib4::RasterDataSet::getByteArray(std::size_t /*i*/) const
224 {
225  throw Exception(TR_TERRALIB4("Not supported by this type of dataset!"));
226 }
227 
228 std::auto_ptr<te::gm::Geometry> terralib4::RasterDataSet::getGeometry(std::size_t /*i*/) const
229 {
230  throw Exception(TR_TERRALIB4("Not supported by this type of dataset!"));
231 }
232 
233 std::auto_ptr<te::rst::Raster> terralib4::RasterDataSet::getRaster(std::size_t i) const
234 {
235  return std::auto_ptr<te::rst::Raster>(new Raster(m_raster));
236 }
237 
238 std::auto_ptr<te::dt::DateTime> terralib4::RasterDataSet::getDateTime(std::size_t /*i*/) const
239 {
240  throw Exception(TR_TERRALIB4("Not supported by this type of dataset!"));
241 }
242 
243 std::auto_ptr<te::dt::Array> terralib4::RasterDataSet::getArray(std::size_t i) const
244 {
245  throw Exception(TR_TERRALIB4("Not supported by this type of dataset!"));
246 }
247 
248 bool terralib4::RasterDataSet::isNull(std::size_t /*i*/) const
249 {
250  return false;
251 }
252 
bool isBeforeBegin() const
It tells if the dataset internal pointer is in a position before the first element of the collection ...
bool movePrevious()
It moves the internal pointer to the previous item of the collection.
bool moveLast()
It sets the dataset internal pointer to the last item in the collection.
bool move(std::size_t i)
It moves the dataset internal pointer to a given position.
std::auto_ptr< te::dt::Property > Convert2T5(const TeAttributeRep &attRep)
It creates a valid TerraLib 5 property given a valid TerraLib 4.x attribute representation.
Definition: Utils.cpp:52
#define TR_TERRALIB4(message)
It marks a string in order to get translated. This is a special mark used in the DataAccess module of...
Definition: Config.h:119
boost::int16_t getInt16(std::size_t i) const
Method for retrieving a 16-bit integer attribute value (2 bytes long).
std::auto_ptr< te::gm::Geometry > getGeometry(std::size_t i) const
Method for retrieving a geometric attribute value.
std::auto_ptr< te::dt::Array > getArray(std::size_t i) const
Method for retrieving an array.
boost::int64_t getInt64(std::size_t i) const
Method for retrieving a 64-bit integer attribute value (8 bytes long).
bool moveBeforeFirst()
It moves the internal pointer to a position before the first item in the collection.
bool moveFirst()
It moves the internal pointer to the first item in the collection.
bool getBool(std::size_t i) const
Method for retrieving a boolean attribute value.
std::string getString(std::size_t i) const
Method for retrieving a string value attribute.
char getChar(std::size_t i) const
Method for retrieving a signed character attribute value (1 byte long).
bool isAfterEnd() const
It tells if the dataset internal pointer is on the sentinel position after the last element of the co...
AccessPolicy
Supported data access policies (can be used as bitfield).
Definition: Enums.h:40
std::string getPropertyName(std::size_t i) const
It returns the property name at position pos.
std::string getDatasetNameOfProperty(std::size_t i) const
It returns the underlying dataset name of the property at position pos.
bool isEmpty() const
It returns true if the collection is empty.
bool isAtEnd() const
It tells if the dataset internal pointer is on the last element of the collection.
float getFloat(std::size_t i) const
Method for retrieving a float attribute value.
Utilitary functions for dealing with TerraLib 5 and 4.x conversion.
std::string getNumeric(std::size_t i) const
Method for retrieving a numeric attribute value.
te::common::AccessPolicy getAccessPolicy() const
It returns the read and write permission associated to the dataset.
std::auto_ptr< te::dt::ByteArray > getByteArray(std::size_t i) const
Method for retrieving a byte array.
Implements the DataSource class for the TerraLib 4.x Data Access Driver.
TraverseType
A dataset can be traversed in two ways:
Definition: Enums.h:53
unsigned char getUChar(std::size_t i) const
Method for retrieving an unsigned character attribute value (1 byte long).
std::auto_ptr< te::gm::Envelope > getExtent(std::size_t i)
It computes the bounding rectangle for a spatial property of the dataset.
int getPropertyDataType(std::size_t i) const
It returns the underlying data type of the property at position pos.
std::auto_ptr< te::rst::Raster > getRaster(std::size_t i) const
Method for retrieving a raster attribute value.
RasterDataSet(TeRaster *raster)
bool moveNext()
It moves the internal pointer to the next item of the collection.
bool isNull(std::size_t i) const
It checks if the attribute value is NULL.
te::common::TraverseType getTraverseType() const
It returns the traverse type associated to the dataset.
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.
bool isConnected() const
It returns true if the dataset is connected and false if it is disconnected. A dataset can be connect...
std::size_t getNumProperties() const
It returns the number of properties that composes an item of the dataset.
boost::int32_t getInt32(std::size_t i) const
Method for retrieving a 32-bit integer attribute value (4 bytes long).
std::size_t size() const
It returns the collection size, if it is known.
An abstract class for raster data strucutures.
bool isAtBegin() const
It tells if the dataset internal pointer is on the first element of the collection or not...