Loading...
Searching...
No Matches
ClassifierStrategy.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/rp/ClassifierStrategy.h
22
23 \brief Raster classifier strategy base class.
24 */
25
26#ifndef __TERRALIB_RP_INTERNAL_CLASSIFIERSTRATEGY_H
27#define __TERRALIB_RP_INTERNAL_CLASSIFIERSTRATEGY_H
28
29// TerraLib
30#include "../raster/Raster.h"
31#include "../raster/BandProperty.h"
34#include "Config.h"
35#include "Exception.h"
36
37// STL
38#include <vector>
39#include <memory>
40
41namespace te
42{
43 namespace rp
44 {
45 /*!
46 \class ClassifierStrategy
47 \brief Raster classifier strategy base class.
48 */
50 {
51 public:
52
53 /*! \brief Virtual destructor. */
55
56 /*!
57 \brief Initialize the classification strategy.
58
59 \param strategyParams A pointer to the user given specific classification strategy parameters ou NULL if no parameters are present.
60
61 \return true if OK, false on errors.
62 */
63 virtual bool initialize(ClassifierStrategyParameters const* const strategyParams) _NOEXCEPT_OP(false) = 0;
64
65 /*!
66 \brief Executes the classification strategy.
67 \return true if OK, false on errors.
68 */
69 virtual bool execute() _NOEXCEPT_OP(false) = 0;
70
71 /*!
72 \brief Set the input raster.
73 \param raster Input raster.
74 */
75 void setInputRaster( const te::rst::Raster& raster );
76
77 /*!
78 \brief Set the input raste bandsr.
79 \param rasterBands Input raster bands.
80 */
81 void setInputRasterBands( const std::vector<unsigned int>& rasterBands );
82
83 /*!
84 \brief Returns a pointer to the output raster or a void pointer if there is none.
85 \return Returns a pointer to the output raster or a void pointer if there is none.
86 \note The caller of this method must take the ownership of the returned object.
87 */
88 std::unique_ptr< te::rst::Raster > releaseOutputRaster();
89
90 /*!
91 \brief Set the input polygons.
92 \param polygonsPtrs Input polygons pointers.
93 \note The caller of this method must keep the ownership of the objects.
94 */
95 void setInputPolygons( const std::vector<te::gm::Polygon*>& polygonsPtrs );
96
97 /*!
98 \brief Enable / disable the progress interface.
99 \param enable Enable (true) or disable (false) the progress interface.
100 */
101 void enableProgressInterface( const bool& enable );
102
103 /*!
104 \brief Enable / disable the use of raster data cache.
105 \param enable Enable (true) or disable (false) the use of raster cache.
106 */
107 void enableRasterCache( const bool& enable );
108
109 /*!
110 \brief Enable / disable the use of multiple threads.
111 \param enable Enable (true) or disable (false) the use of multiple threads.
112 */
113 void enableMultiThread( const bool& enable );
114
115 /*!
116 \brief Returns strategy-dependent metadata.
117 \param metadata Strategy-dependent metadata.
118 */
119 void getMetaData( std::map< std::string, std::string >& metadata ) const;
120
121 /*!
122 \brief Enable (true) or disable (false) the creation of a paletted output raster.
123 \param enabled Enable (true) or disable (false) the creation of a paletted output raster.
124 */
125 void enableOutputPalette( const bool enabled );
126
127 /*!
128 \brief Set the output user palette.
129 \param userPalette User output raster palette (it must be large enough to accomodate all classifyier generated classes or an empty vector to automatically generate an random palette.
130 */
131 void setUserOutputPalette( std::vector< te::rst::BandProperty::ColorEntry >& userPalette );
132
133 /*!
134 \brief Return the current error message if there is any.
135
136 \return Return the current error message if there is any.
137 */
138 const std::string& getErrorMessage() const;
139
140 /*!
141 \brief Returns a pointer to the strategy output execution parameters or a null pointer if there are none.
142
143 \return Returns a pointer to the strategy output execution parameters or a null pointer if there are none.
144 */
145 virtual ClassifierStrategyOutParameters const* getOutputParameters() const;
146
147 protected:
148
149 /*!
150 \brief A pointer to the input raster.
151 */
152 te::rst::Raster const * m_inputRasterPtr;
153
154 /*!
155 \brief Progress interface status.
156 */
157 bool m_progressInterfaceEnabled;
158
159 /*!
160 \brief Enable or disable the use a raster data cache.
161 */
162 bool m_enableRasterCache;
163
164 /*!
165 \brief Enable or disable the use multipe threads.
166 */
167 bool m_enableMultiThread;
168
169 /*!
170 \brief Enable (true) or disable (false) the creation of a paletted output raster.
171 */
172 bool m_createRasterPalette;
173
174 /*!
175 \brief A pointer to the output raster.
176 */
177 std::unique_ptr< te::rst::Raster > m_outputRasterPtr;
178
179 /*!
180 \brief Input raster bands.
181 */
182 std::vector<unsigned int> m_inputRasterBands;
183
184 /*!
185 \brief Input polygons.
186 */
187 std::vector<te::gm::Polygon*> const * m_inputPolygonsPtr;
188
189 /*!
190 \brief Strategy-dependent metadata.
191 */
192 std::map< std::string, std::string > m_metaData;
193
194 /*!
195 \brief User output raster palette (it must be large enough to accomodate all classifyier generated classes or an empty vector to automatically generate an random palette.
196 */
197 std::vector< te::rst::BandProperty::ColorEntry > m_userOutputPalette;
198
199 /*! \brief Default constructor. */
201
202 /*!
203 \brief Create the output raster using the EXPANSIBLE driver.
204 \param bandsDataTypes Bands data types.
205 \param noDataValues A vector of no-data values for each band.
206 \return true if ok,false on errors.
207 \note A pointer to the created raster will be handled by m_outputRasterPtr.
208 */
209 bool createOutputRaster( const std::vector< int >& bandsDataTypes,
210 const std::vector< double >& noDataValues );
211
212 /*!
213 \brief Create and set the output raster palette folowing the current internal settings.
214 \param size Palette size.
215 \return true if ok,false on errors.
216 */
217 bool setOutputRasterPalette( const unsigned int size );
218
219 /*!
220 \brief Set the current error message.
221
222 \param newErrorMessage New error message;
223 */
224 void setErrorMessage( const std::string& newErrorMessage );
225
226 /*!
227 \brief Reset to an initial state
228 */
229 virtual void reset();
230
231 private:
232
233 /*!
234 \brief Current error message.
235 */
236 std::string m_errorMessage;
237
238 /*!
239 \brief Copy constructor.
240
241 \param rhs The right-hand side Raster.
242 */
244
245 /*!
246 \brief Assignment operator.
247
248 \param rhs The right-hand-side copy that would be used to copy from.
249
250 \return A reference to this object.
251 */
252 const ClassifierStrategy& operator=(const ClassifierStrategy& rhs);
253 };
254
255 } // end namespace rp
256} // end namespace te
257
258#endif // __TERRALIB_RP_INTERNAL_CLASSIFIERSTRATEGY_H
259
Raster classifier strategy parameters base class.
#define _NOEXCEPT_OP(x)
Classifier Strategy Output Parameters.
Raster classifier strategy base class.
virtual bool execute() _NOEXCEPT_OP(false)=0
Executes the classification strategy.
virtual ~ClassifierStrategy()
Virtual destructor.
virtual bool initialize(ClassifierStrategyParameters const *const strategyParams) _NOEXCEPT_OP(false)=0
Initialize the classification strategy.
TerraLib.
#define TERPEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:139
Proxy configuration file for TerraView (see terraview_config.h).
An exception class for the XML module.