Raster.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/raster/Raster.h
22 
23  \brief An abstract class for raster data strucutures.
24 */
25 
26 #ifndef __TERRALIB_RASTER_INTERNAL_RASTER_H
27 #define __TERRALIB_RASTER_INTERNAL_RASTER_H
28 
29 // TerraLib
30 #include "../common/Enums.h"
31 #include "../datatype/AbstractData.h"
32 #include "../datatype/Enums.h"
33 #include "../geometry/Geometry.h"
34 #include "Config.h"
35 #include "Vectorizer.h"
36 
37 // STL
38 #include <complex>
39 #include <map>
40 #include <string>
41 #include <vector>
42 
43 // Boost
44 #include <boost/shared_ptr.hpp>
45 
46 namespace te
47 {
48 // Forward declaration
49  namespace gm { class Envelope; }
50 
51  namespace rst
52  {
53 // Forward declaration
54  class Band;
55  class BandProperty;
56  class Grid;
57 
58  /*!
59  \class Raster
60 
61  \brief An abstract class for raster data strucutures.
62 
63  A raster data structure represents a geograhical area divided into rows and columns,
64  which form a regular grid structure of cells. Each cell contains location co-ordinates and
65  one or more attribute values.
66 
67  This interface should be implemented by drivers that provide the real access to raster data.
68 
69  \ingroup rst
70  */
72  {
73  public:
74 
75  /*! \brief Default constructor. */
76  Raster();
77 
78  /*!
79  \brief Constructor to create a raster from parameters.
80 
81  \param grid The grid definition. The Raster will take its ownership.
82  \param p Access Policy.
83  */
85 
86  /*!
87  \brief Copy constructor.
88 
89  \param rhs The right-hand side Raster.
90  */
91  Raster(const Raster& rhs);
92 
93  /*! \brief Virtual destructor. */
94  virtual ~Raster();
95 
96  /*!
97  \brief Opens a raster.
98 
99  \param rinfo The information needed by each driver to open the raster.
100  \param p Access Policy.
101  */
102  virtual void open(const std::map<std::string, std::string>& rinfo, te::common::AccessPolicy p = te::common::RAccess) = 0;
103 
104  /*!
105  \brief Sets the raster name.
106 
107  \param name The new raster name.
108  */
109  void setName(const std::string name);
110 
111  /*! \brief Returns the raster name. */
112  const std::string& getName() const;
113 
114  /*!
115  \brief Sets the raster access policy.
116 
117  \param p The new raster access policy.
118  */
120 
121  /*! \brief Returns the raster access policy. */
122  te::common::AccessPolicy getAccessPolicy() const;
123 
124  /*!
125  \brief It returns additional information about the raster.
126 
127  The return of thi smethod is driver dependent.
128 
129  \return Additional information about the raster.
130  */
131  virtual std::map<std::string, std::string> getInfo() const = 0;
132 
133  /*! \brief It returns the raster grid. */
134  Grid* getGrid();
135 
136  /*! \brief It returns the raster grid. */
137  const Grid* getGrid() const;
138 
139  /*! \brief Returns the geographic extension of the raster data. */
140  te::gm::Envelope* getExtent();
141 
142  /*! \brief Returns the geographic extension of the raster data. */
143  const te::gm::Envelope* getExtent() const;
144 
145  /*!
146  \brief Returns the geographic extension of the raster data, in a given SRS (distinct from its original one).
147 
148  \param srid The target SRS id.
149  \param roi Pointer to a region of interest. If NULL the original extenstion will be considered.
150 
151  \return A pointer the raster extension in a given SRS or NULL if it fails.
152 
153  \note The caller will take the ownership of the returned pointer.
154  */
155  te::gm::Envelope* getExtent(int srid, te::gm::Envelope* roi = 0) const;
156 
157  /*! \brief Returns the raster spatial reference system identifier. */
158  int getSRID() const;
159 
160  /*! \brief Returns the raster number of rows. */
161  unsigned int getNumberOfRows() const;
162 
163  /*! \brief Returns the raster number of columns. */
164  unsigned int getNumberOfColumns() const;
165 
166  /*! \brief Returns the raster horizontal (x-axis) resolution. */
167  double getResolutionX() const;
168 
169  /*! \brief Returns the raster vertical (y-axis) resolution. */
170  double getResolutionY() const;
171 
172  /*! \brief Returns the number of bands (dimension of cells attribute values) in the raster. */
173  virtual std::size_t getNumberOfBands() const = 0;
174 
175  /*!
176  \brief Returns the data type in a particular band (or dimension).
177 
178  \note The data types are listed in terralib/datatype/DataTypes.h
179 
180  \param i The desired band.
181 
182  \return The data type in a particular band (or dimension).
183  */
184  virtual int getBandDataType(std::size_t i) const = 0;
185 
186  /*!
187  \brief Returns the raster i-th band.
188 
189  \param i The band index.
190 
191  \warning The caller is reponsible for providing a valid band index.
192  */
193  virtual const Band* getBand(std::size_t i) const = 0;
194 
195  /*!
196  \brief Returns the raster i-th band.
197 
198  \param i The band index.
199 
200  \warning The caller is reponsible for providing a valid band index.
201  */
202  virtual Band* getBand(std::size_t i) = 0;
203 
204  /*!
205  \brief Access band in i position.
206 
207  \param i The band index.
208 
209  \warning The caller is reponsible for providing a valid band index.
210 
211  \return A reference to the i-th band.
212  */
213  virtual const Band& operator[](std::size_t i) const = 0;
214 
215  /*!
216  \brief Access band in i position.
217 
218  \param i The band index.
219 
220  \warning The caller is reponsible for providing a valid band index.
221 
222  \return A reference to the i-th band.
223  */
224  virtual Band& operator[](std::size_t i) = 0;
225 
226  /*!
227  \brief Returns the attribute value of a band of a cell.
228 
229  \param c The column location of the cell.
230  \param r The row location of the cell.
231  \param value To return the attribute value.
232  \param b A particular band of the cell attribute.
233 
234  \warning The caller is responsible for providing correct values for the range [c x r x b].
235 
236  \exception Exception Subclasses may throw an exception if the data value can not be read.
237  */
238  virtual void getValue(unsigned int c, unsigned int r, double& value, std::size_t b = 0) const;
239 
240  /*!
241  \brief Sets the attribute value in a band of a cell.
242 
243  \param c The column location of the cell.
244  \param r The row location of the cell.
245  \param value The attribute value to be assigned.
246  \param b A particular band of the cell attribute.
247 
248  \warning The caller is responsible for providing correct values for the range [c x r x b].
249 
250  \exception Exception Subclasses may throw an exception if the data value can not be write.
251  */
252  virtual void setValue(unsigned int c, unsigned int r, const double value, std::size_t b = 0);
253 
254  /*!
255  \brief Returns the imaginary attribute value in a complex band of a cell.
256 
257  \param c The column location of the cell.
258  \param r The row location of the cell.
259  \param value The attribute value to be assigned.
260  \param b A particular band of the cell attribute. Default value 0.
261 
262  \warning The caller is responsible for providing correct values for the range [c x r x b].
263 
264  \exception Exception Subclasses may throw an exception if the data value can not be read.
265  */
266  virtual void getIValue(unsigned int c, unsigned int r, double& value, std::size_t b = 0) const;
267 
268  /*!
269  \brief Sets the imaginary attribute value in a complex band of a cell.
270 
271  \param c The column location of the cell.
272  \param r The row location of the cell.
273  \param value The attribute value to be assigned.
274  \param b A particular band of the cell attribute. Default value 0.
275 
276  \warning The caller is responsible for providing correct values for the range [c x r x b].
277 
278  \exception Exception Subclasses may throw an exception if the data value can not be write.
279  */
280  virtual void setIValue(unsigned int c, unsigned int r, const double value, std::size_t b = 0);
281 
282  /*!
283  \brief Returns the imaginary attribute value in a complex band of a cell.
284 
285  \param c The column location of the cell.
286  \param r The row location of the cell.
287  \param value The complex attribute value to be assigned (real, imaginary).
288  \param b A particular band of the cell attribute. Default value 0.
289 
290  \warning The caller is responsible for providing correct values for the range [c x r x b].
291 
292  \exception Exception Subclasses may throw an exception if the data value can not be read.
293  */
294  virtual void getValue(unsigned int c, unsigned int r, std::complex<double>& value, std::size_t b = 0) const;
295 
296  /*!
297  \brief Sets the imaginary attribute value in a complex band of a cell.
298 
299  \param c The column location of the cell.
300  \param r The row location of the cell.
301  \param value The complex attribute value to be assigned (real, imaginary).
302  \param b A particular band of the cell attribute. Default value 0.
303 
304  \warning The caller is responsible for providing correct values for the range [c x r x b].
305 
306  \exception Exception Subclasses may throw an exception if the data value can not be write.
307  */
308  virtual void setValue(unsigned int c, unsigned int r, const std::complex<double>& value, std::size_t b = 0);
309 
310  /*!
311  \brief Returns the imaginary attribute values in all complex bands of a cell.
312 
313  \param c The column location of the cell.
314  \param r The row location of the cell.
315  \param values A vector of attribute values to be assigned (not complex values).
316 
317  \warning The caller is responsible for providing correct values for the range [c x r].
318 
319  \exception Exception Subclasses may throw an exception if the data value can not be read.
320  */
321  virtual void getValues(unsigned int c, unsigned int r, std::vector<double>& values) const;
322 
323  /*!
324  \brief Returns the imaginary attribute values in all complex bands of a cell.
325 
326  \param c The column location of the cell.
327  \param r The row location of the cell.
328  \param values A vector of complex attribute values to be assigned (real, imaginary).
329 
330  \warning The caller is responsible for providing correct values for the range [c x r].
331 
332  \exception Exception Subclasses may throw an exception if the data value can not be read.
333  */
334  virtual void getValues(unsigned int c, unsigned int r, std::vector<std::complex<double> >& values) const;
335 
336  /*!
337  \brief Sets the imaginary attribute values in all complex bands of a cell.
338 
339  \param c The column location of the cell.
340  \param r The row location of the cell.
341  \param values A vector of attribute values to be assigned (not complex values).
342 
343  \warning The caller is responsible for providing correct values for the range [c x r].
344 
345  \exception Exception Subclasses may throw an exception if the data value can not be write.
346  */
347  virtual void setValues(unsigned int c, unsigned int r, const std::vector<double>& values);
348 
349  /*!
350  \brief Sets the imaginary attribute values in all complex bands of a cell.
351 
352  \param c The column location of the cell.
353  \param r The row location of the cell.
354  \param values A vector of complex attribute values to be assigned (real, imaginary).
355 
356  \warning The caller is responsible for providing correct values for the range [c x r].
357 
358  \exception Exception Subclasses may throw an exception if the data value can not be write.
359  */
360  virtual void setValues(unsigned int c, unsigned int r, const std::vector<std::complex<double> >& values);
361 
362  int getTypeCode() const { return te::dt::RASTER_TYPE; }
363 
364  std::string toString(void) const;
365 
366  /*!
367  \brief It calls a parameter function f to apply in all pixels from two rasters, e.g. pixel = f(lhs, rhs);
368 
369  \param (*f) a function with the signature complex<double>(*f)(complex<double>, complex<double>), const Raster& rhs)
370 
371  \param rhs The rhs raster to apply the function.
372 
373  \return The resultant raster.
374  */
375  Raster& callOperator(std::complex<double>(*f)(std::complex<double>, std::complex<double>), const Raster& rhs);
376 
377  /*!
378  \brief It returns the raster sum (pixel by pixel).
379 
380  \param rhs The raster to be added, right-hand side.
381 
382  \note Both rasters must have the same properties, #bands, #columns,
383  #rows, and data type.
384 
385  \note The caller is responsible to guarantee that resultant values
386  will not exceed the range of the data type.
387 
388  \return The raster sum.
389  */
390  virtual Raster& operator+=(Raster& rhs);
391 
392  /*!
393  \brief It returns the sum of a constant value to all pixels in the raster.
394 
395  \param cvalue The constant value to be added.
396 
397  \note The caller is responsible to guarantee that resultant values
398  will not exceed the range of the data type.
399 
400  \return The raster sum.
401  */
402  virtual Raster& operator+=(std::complex<double>& cvalue);
403 
404  /*!
405  \brief It returns the raster subtraction (pixel by pixel).
406 
407  \param rhs The raster to be subtracted, right-hand side.
408 
409  \note Both rasters must have the same properties, #bands, #columns,
410  #rows, and data type.
411 
412  \note The caller is responsible to guarantee that resultant values
413  will not exceed the range of the data type.
414 
415  \return The raster subtraction.
416  */
417  virtual Raster& operator-=(Raster& rhs);
418 
419  /*!
420  \brief It returns the difference from all pixels in the raster to a constant value (pixels - constant).
421 
422  \param cvalue The constant value to be subtracted.
423 
424  \note The caller is responsible to guarantee that resultant values
425  will not exceed the range of the data type.
426 
427  \return The raster difference.
428  */
429  virtual Raster& operator-=(std::complex<double>& cvalue);
430 
431  /*!
432  \brief It returns the raster product (pixel by pixel).
433 
434  \param rhs The raster to be multiplied, right-hand side.
435 
436  \note Both rasters must have the same properties, #bands, #columns,
437  #rows, and data type.
438 
439  \note The caller is responsible to guarantee that resultant values
440  will not exceed the range of the data type.
441 
442  \return The raster product.
443  */
444  virtual Raster& operator*=(Raster& rhs);
445 
446  /*!
447  \brief It returns the product of a constant value to all pixels in the raster.
448 
449  \param cvalue The constant value to be multiplied.
450 
451  \note The caller is responsible to guarantee that resultant values
452  will not exceed the range of the data type.
453 
454  \return The raster product.
455  */
456  virtual Raster& operator*=(std::complex<double>& cvalue);
457 
458  /*!
459  \brief It returns the raster division (pixel by pixel).
460 
461  \param rhs The raster to be divided, right-hand side.
462 
463  \note Both rasters must have the same properties, #bands, #columns,
464  #rows, and data type.
465 
466  \note The caller is responsible to guarantee that resultant values
467  will not exceed the range of the data type.
468 
469  \return The raster division.
470  */
471  virtual Raster& operator/=(Raster& rhs);
472 
473  /*!
474  \brief It returns the division of all pixels in the raster by a constant value (pixels / constant).
475 
476  \param cvalue The constant value to be divided.
477 
478  \note The caller is responsible to guarantee that resultant values
479  will not exceed the range of the data type.
480 
481  \return The raster division.
482  */
483  virtual Raster& operator/=(std::complex<double>& cvalue);
484 
485  /*!
486  \brief Assignment operator.
487 
488  \param rhs The right-hand-side copy that would be used to copy from.
489 
490  \return A reference to this object.
491  */
492  virtual Raster& operator=(const Raster& rhs);
493 
494  /*!
495  \brief Subsetting operation for trimming (cropping) the raster.
496 
497  \param env The envelope (inside original extent) to crop the raster.
498  \param rinfo The parameters needed to build the output raster (see RasterFactory documentation).
499 
500  \return A pointer to the trimmed raster if success and a null pointer otherwise.
501 
502  \note The caller will take the ownership of the returned pointer.
503  */
504  virtual Raster* trim(const te::gm::Envelope* env, const std::map<std::string, std::string>& rinfo) const;
505 
506  /*!
507  \brief Resample a subset of the raster, given a box.
508 
509  \param method The method of interpolation. \sa te::rst::Interpolator
510  \param drow The starting row to make a subset of the image.
511  \param dcolumn The starting column to make a subset of the image.
512  \param height The height of the subset.
513  \param width The width of the subset.
514  \param newheight The resampled height of the new raster.
515  \param newwidth The resampled width of the new raster.
516  \param rinfo The parameters needed to build the output raster (see RasterFactory documentation).
517 
518  \return A pointer to the resampled raster if success and a null pointer otherwise.
519 
520  \note The caller will take the ownership of the returned pointer.
521 
522  \warning A scale of 0 is not allowed. Use 1, 2, 3, or -1, -2, 3...
523  */
524  virtual Raster* resample(int method, unsigned int drow, unsigned int dcolumn, unsigned int height, unsigned int width, unsigned int newheight, unsigned int newwidth, const std::map<std::string, std::string>& rinfo) const;
525 
526  /*!
527  \brief Resample raster.
528 
529  \param method The method of interpolation.
530  \param scale The scale of interpolation (use - to shrink or + to enlarge).
531  \param rinfo The parameters needed to build the output raster (see RasterFactory documentation).
532 
533  \return A pointer to the resampled raster if success and a null pointer otherwise.
534 
535  \note The caller will take the ownership of the returned pointer.
536 
537  \warning A scale of 0 is not allowed. Use 1, 2, 3, or -1, -2, 3...
538  */
539  virtual Raster* resample(int method, int scale, const std::map<std::string, std::string>& rinfo) const;
540 
541  /*!
542  \brief Return the raster grid for a specific scale.
543 
544  \param scale The desired sacale of interpolation (use - to shrink or + to enlarge).
545 
546  \return The raster grid.
547 
548  \note The caller will take the ownership of the returned pointer.
549  */
550  Grid* getResampledGrid(int scale) const;
551 
552  /*!
553  \brief Reprojects this raster to a distinct SRS.
554  This method reprojects this raster to a distinct SRS. The output resolution
555  is calculated in order to maintain the same number of pixels as in this raster.
556 
557  \param srid The target SRS identifier.
558  \param rinfo The parameters needed to build the output raster (see RasterFactory documentation).
559  \param m The method of interpolation to apply (default 1 = nearest neighbor). \sa te::rst::Interpolator
560 
561 
562  \return A pointer to the reprojected raster if success and a null pointer otherwise.
563 
564  \note The caller will take the ownership of the returned pointer.
565  */
566  virtual Raster* transform(int srid, const std::map<std::string, std::string>& rinfo, int m = 1) const;
567 
568  /*!
569  \brief Reprojects a squared portion of this raster to a distinct SRS.
570  This method reprojects a squared portion of this raster to a distinct SRS.
571  The output resolution is calculated in order to maintain the same number
572  of pixels as in the desired portion of this raster.
573 
574  \param srid The target SRS identifier.
575  \param llx Lower-left X-coordinate of the portion to be reprojected (in the original SRS).
576  \param lly Lower-left Y-coordinate of the portion to be reprojected (in the original SRS).
577  \param urx Upper-Right X-coordinate of the portion to be reprojected (in the original SRS).
578  \param url Upper-Right Y-coordinate of the portion to be reprojected (in the original SRS).
579  \param rinfo The parameters needed to build the output raster (see RasterFactory documentation).
580  \param m The method of interpolation to apply (default 1 = nearest neighbor). \sa te::rst::Interpolator
581 
582  \return A pointer to the reprojected raster if success and a null pointer otherwise.
583 
584  \note The caller will take the ownership of the returned pointer.
585  */
586  virtual Raster* transform(int srid, double llx, double lly, double urx, double ury, const std::map<std::string, std::string>& rinfo, int m = 1) const;
587 
588  /*!
589  \brief Reprojects a squared portion of this raster to another SRS with a desired resolution.
590 
591  This method reprojects a squared portion of this raster to another SRS. The number of pixels
592  in the output will be calculated according to the portion being reprojected and the asked resolution.
593 
594  \param srid The SRS id of the target SRS.
595  \param llx Lower-left X-coordinate of the portion to be reprojected (in the original SRS).
596  \param lly Lower-left Y-coordinate of the portion to be reprojected (in the original SRS).
597  \param urx Upper-Right X-coordinate of the portion to be reprojected (in the original SRS).
598  \param url Upper-Right Y-coordinate of the portion to be reprojected (in the original SRS).
599  \param resx The output x resolution (in units of the target SRS).
600  \param resx The output y resolution (in units of the target SRS).
601  \param rinfo The parameters needed to build the output raster (see RasterFactory documentation).
602  \param m The method of interpolation to apply (default 1 = nearest neighbor). \sa te::rst::Interpolator
603 
604  \return A pointer to the reprojected raster if success and a null pointer otherwise.
605 
606  \note The caller will take the ownership of the returned pointer.
607  */
608  virtual Raster* transform(int srid, double llx, double lly, double urx, double ury, double resx, double resy, const std::map<std::string, std::string>& rinfo, int m = 1) const;
609 
610  /*!
611  \brief Vectorizes a given raster band, using GDALPolygonize function.
612 
613  \param g A reference to a vector of geometries.
614  Will be filled with geometries found in band.
615  \param b The band index to vectorize.
616 
617  \note The caller of this method must take the ownership of the returned geometries and must delete them when necessary.
618  */
619  virtual void vectorize(std::vector<te::gm::Geometry*>& g, std::size_t b, unsigned int mp = 0);
620 
621  /*!
622  \brief Rasterizes a given vector of geometries.
623 
624  \param g A vector of geometries to be rasterized.
625  \param vp A vector of pixel values for each geometry.
626  Can have the same size of the vector of geometries, or be null.
627  \param b The band index to rasterize.
628  */
629  virtual void rasterize(std::vector<te::gm::Geometry*> g, std::vector<double> vp, std::size_t b = 0);
630 
631  /*!
632  \brief Create a sub-sampled multi-resolution pyramid.
633 
634  \param levels The number of pyramid levels to generate.
635  \param interpMethod The used interpolation method.
636 
637  \return true if OK, false if errors ocurred.
638  */
639  virtual bool createMultiResolution( const unsigned int levels, const InterpolationMethod interpMethod ) = 0;
640 
641  /*!
642  \brief Remove/Destroy a sub-sampled multi-resolution pyramid, if there is one.
643 
644  \return true if OK, false if errors ocurred.
645  */
646  virtual bool removeMultiResolution() = 0;
647 
648  /*!
649  \brief Returns the current number of multi-resolution pyramid levels.
650 
651  \return Returns the current number of multi-resolution pyramid levels.
652  */
653  virtual unsigned int getMultiResLevelsCount() const = 0;
654 
655  /*!
656  \brief Returns the required level of a multi-resolution pyramid or NULL if that level does not exists.
657 
658  \param level Level of a multi-resolution pyramid.
659 
660  \return Returns the required level of a multi-resolution pyramid or NULL if that level does not exists.
661 
662  \note The caller must take the ownership of the returned pointer.
663  */
664  virtual Raster* getMultiResLevel( const unsigned int level ) const = 0;
665 
666  protected:
667 
668  /*!
669  \brief Scales a value according to a specific resampling scale.
670 
671  \param i The scale to apply.
672  \param v The value to be scaled.
673 
674  \return The scaled value.
675  */
676  double applyScale(int i, const double& v) const;
677 
678  protected:
679 
680  std::string m_name; //!< The raster name.
681  Grid* m_grid; //!< The spatial support for raster data.
682  te::common::AccessPolicy m_policy; //!< The access policy, can be te::common::{NoAccess, RAccess, RWAccess, WAccess}.
683  };
684 
685  typedef boost::shared_ptr<Raster> RasterPtr;
686 
687  } // end namespace rst
688 } // end namespace te
689 
690 #endif //__TERRALIB_RASTER_INTERNAL_RASTER_H
int getTypeCode() const
It returns the data type code associated to the data value.
Definition: Raster.h:362
#define TERASTEREXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:62
capabilities setAccessPolicy(te::common::RWAccess)
InterpolationMethod
Allowed interpolation methods.
Definition: Enums.h:92
It implements the vectorizer, based on TerraLib 4 algorithm.
std::string m_name
The raster name.
Definition: Raster.h:680
Grid * m_grid
The spatial support for raster data.
Definition: Raster.h:681
boost::shared_ptr< Raster > RasterPtr
Definition: Raster.h:685
AccessPolicy
Supported data access policies (can be used as bitfield).
Definition: Enums.h:40
An Envelope defines a 2D rectangular region.
Definition: Envelope.h:51
An abstract class for raster data strucutures.
Definition: Raster.h:71
URI C++ Library.
A base class for values that can be retrieved from the data access module.
Definition: AbstractData.h:57
A raster band description.
Definition: Band.h:63
Configuration flags for the Raster module of TerraLib.
A rectified grid is the spatial support for raster data.
Definition: Grid.h:68
te::common::AccessPolicy m_policy
The access policy, can be te::common::{NoAccess, RAccess, RWAccess, WAccess}.
Definition: Raster.h:682