SubdivideByBorderTillingStrategy.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/vp/SequencialDataLoaderStrategy.h
22 
23  \brief Represent a data loader strategy to load features considering a seq
24  */
25 
26 #ifndef __TERRALIB_VP_INTERNAL_SUBDIVIDEDATALOADERSTRATEGY_H
27 #define __TERRALIB_VP_INTERNAL_SUBDIVIDEDATALOADERSTRATEGY_H
28 
29  //Terralib include files
30 #include "Config.h"
31 
33 
34 //STL include files
35 #include <string>
36 #include <vector>
37 
38 //Forward declarations
39 class SubdivideByBorderTillingStrategyImpl;
40 
41 namespace te
42 {
43  namespace common
44  {
45  class TaskProgress;
46  }
47 
48  namespace da
49  {
50  class DataSetType;
51  class DataSource;
52  }
53 
54  namespace gm
55  {
56  class Envelope;
57  }
58 
59  namespace vp
60  {
61  class SubdividerTilling;
62 
63  /*!
64  \class AbstractDataLoaderStrategy
65 
66  \brief Abstract class to represent a data loader strategy to load features from datasets using a tilling strategy
67  */
69  {
70  public:
71 
72  //!< Constructor
73  SubdivideByBorderTillingStrategy(const te::gm::Envelope& mbr, int srid, double resolutionX, double resolutionY, te::common::TaskProgress* taskProgress);
74 
75  //!< Destructor
77 
78  //!< Executes the subdivide of this tilling strategy
79  virtual te::da::DataAccess* subdivide(const te::da::DataAccess* inputDataAccess, std::size_t maxCoordinates) override;
80 
81  //!< Executes the subdivide of this tilling strategy
82  virtual std::vector<te::da::DataAccess*> subdivide(const std::vector<te::da::DataAccess*>& vecInputDataAccess, std::size_t maxCoordinates) override;
83 
84  //!< Executes the merge of this tilling strategy
85  virtual te::da::DataAccess* merge(te::da::DataAccess* inputDataAccess, const std::vector<std::string>& vecMergeColumns, bool dissolveGeometryCoordinateSubdivision) override;
86 
87  //!< Executes the merge of this tilling strategy
88  virtual std::vector<te::da::DataAccess*> merge(const std::vector<te::da::DataAccess*>& vecInputDataAccess, const std::vector< std::vector<std::string> >& vecMergeColumns, bool dissolveGeometryCoordinateSubdivision) override;
89 
90  virtual te::da::DataAccess* createInputDataAccessForSubdivision(const te::da::DataSetType* baseOutputDataSetType, const std::string& dataSetName);
91 
92  virtual te::da::DataAccess* createOutputDataAccessForSubdivision(const te::da::DataSetType* baseOutputDataSetType, const std::vector<te::da::DataAccess*>& vecInputDataAccess, const std::string& dataSetName);
93 
94  virtual void createIndexes(te::da::DataAccess* dataAccess, const std::string& baseDataSetName);
95 
96  static std::string getColumnPropertyName();
97 
98  static std::string getRowPropertyName();
99 
100  static std::string getParentPropertyName();
101 
102  static std::string getFullPropertyName(const std::string& dataSetName, const std::string& propertyName);
103 
104  virtual void appendSubdivideColumns(te::da::DataSetType* dataSetType, const std::string& baseDataSetName);
105 
106  protected:
107 
108  void init();
109 
110  protected:
111  SubdivideByBorderTillingStrategyImpl* m_impl;
112  };
113  }
114 }
115 
116 #endif //__TERRALIB_VP_INTERNAL_SUBDIVIDEDATALOADERSTRATEGY_H
te::gm::Envelope
An Envelope defines a 2D rectangular region.
Definition: Envelope.h:52
te
TerraLib.
Definition: AddressGeocodingOp.h:52
te::vp::SubdivideByBorderTillingStrategy::createOutputDataAccessForSubdivision
virtual te::da::DataAccess * createOutputDataAccessForSubdivision(const te::da::DataSetType *baseOutputDataSetType, const std::vector< te::da::DataAccess * > &vecInputDataAccess, const std::string &dataSetName)
te::vp::SubdivideByBorderTillingStrategy::merge
virtual std::vector< te::da::DataAccess * > merge(const std::vector< te::da::DataAccess * > &vecInputDataAccess, const std::vector< std::vector< std::string > > &vecMergeColumns, bool dissolveGeometryCoordinateSubdivision) override
te::vp::SubdivideByBorderTillingStrategy::getFullPropertyName
static std::string getFullPropertyName(const std::string &dataSetName, const std::string &propertyName)
te::vp::SubdivideByBorderTillingStrategy::SubdivideByBorderTillingStrategy
SubdivideByBorderTillingStrategy(const te::gm::Envelope &mbr, int srid, double resolutionX, double resolutionY, te::common::TaskProgress *taskProgress)
< Constructor
te::da::DataAccess
Class used to centralize and control access to data in terralib. It aims to create a high-level inter...
Definition: DataAccess.h:77
TEVPEXPORT
#define TEVPEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:61
te::vp::SubdivideByBorderTillingStrategy::merge
virtual te::da::DataAccess * merge(te::da::DataAccess *inputDataAccess, const std::vector< std::string > &vecMergeColumns, bool dissolveGeometryCoordinateSubdivision) override
Executes the merge of this tilling strategy.
te::vp::SubdivideByBorderTillingStrategy
Definition: SubdivideByBorderTillingStrategy.h:69
te::vp::SubdivideByBorderTillingStrategy::init
void init()
te::vp::SubdivideByBorderTillingStrategy::getColumnPropertyName
static std::string getColumnPropertyName()
te::vp::AbstractTillingStrategy
Definition: AbstractTillingStrategy.h:52
te::vp::SubdivideByBorderTillingStrategy::~SubdivideByBorderTillingStrategy
virtual ~SubdivideByBorderTillingStrategy()
Executes the subdivide of this tilling strategy.
te::vp::SubdivideByBorderTillingStrategy::subdivide
virtual te::da::DataAccess * subdivide(const te::da::DataAccess *inputDataAccess, std::size_t maxCoordinates) override
Executes the subdivide of this tilling strategy.
te::vp::SubdivideByBorderTillingStrategy::appendSubdivideColumns
virtual void appendSubdivideColumns(te::da::DataSetType *dataSetType, const std::string &baseDataSetName)
te::vp::SubdivideByBorderTillingStrategy::createInputDataAccessForSubdivision
virtual te::da::DataAccess * createInputDataAccessForSubdivision(const te::da::DataSetType *baseOutputDataSetType, const std::string &dataSetName)
te::vp::SubdivideByBorderTillingStrategy::m_impl
SubdivideByBorderTillingStrategyImpl * m_impl
Definition: SubdivideByBorderTillingStrategy.h:111
te::vp::SubdivideByBorderTillingStrategy::createIndexes
virtual void createIndexes(te::da::DataAccess *dataAccess, const std::string &baseDataSetName)
te::vp::SubdivideByBorderTillingStrategy::getRowPropertyName
static std::string getRowPropertyName()
te::common::TaskProgress
This class can be used to inform the progress of a task.
Definition: TaskProgress.h:54
AbstractTillingStrategy.h
Config.h
Proxy configuration file for TerraView (see terraview_config.h).
te::vp::SubdivideByBorderTillingStrategy::getParentPropertyName
static std::string getParentPropertyName()
te::da::DataSetType
A class that models the description of a dataset.
Definition: DataSetType.h:73
te::vp::SubdivideByBorderTillingStrategy::subdivide
virtual std::vector< te::da::DataAccess * > subdivide(const std::vector< te::da::DataAccess * > &vecInputDataAccess, std::size_t maxCoordinates) override
Executes the merge of this tilling strategy.