Loading...
Searching...
No Matches
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
39class SubdivideByBorderTillingStrategyImpl;
40
41namespace 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
This class can be used to inform the progress of a task.
Definition: TaskProgress.h:54
Class used to centralize and control access to data in terralib. It aims to create a high-level inter...
Definition: DataAccess.h:77
A class that models the description of a dataset.
Definition: DataSetType.h:73
An Envelope defines a 2D rectangular region.
Definition: Envelope.h:52
SubdivideByBorderTillingStrategy(const te::gm::Envelope &mbr, int srid, double resolutionX, double resolutionY, te::common::TaskProgress *taskProgress)
< Constructor
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
virtual void appendSubdivideColumns(te::da::DataSetType *dataSetType, const std::string &baseDataSetName)
virtual te::da::DataAccess * createInputDataAccessForSubdivision(const te::da::DataSetType *baseOutputDataSetType, const std::string &dataSetName)
static std::string getColumnPropertyName()
static std::string getFullPropertyName(const std::string &dataSetName, const std::string &propertyName)
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.
virtual ~SubdivideByBorderTillingStrategy()
Executes the subdivide of this tilling strategy.
virtual te::da::DataAccess * subdivide(const te::da::DataAccess *inputDataAccess, std::size_t maxCoordinates) override
Executes the subdivide of this tilling strategy.
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.
virtual te::da::DataAccess * createOutputDataAccessForSubdivision(const te::da::DataSetType *baseOutputDataSetType, const std::vector< te::da::DataAccess * > &vecInputDataAccess, const std::string &dataSetName)
static std::string getParentPropertyName()
virtual void createIndexes(te::da::DataAccess *dataAccess, const std::string &baseDataSetName)
TerraLib.
#define TEVPEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:61
Proxy configuration file for TerraView (see terraview_config.h).