rasdaman client API 10.6.3
The Array Analytics Engine: Datacubes at Your Fingertips
interesttiling.hh
Go to the documentation of this file.
1/*
2* This file is part of rasdaman community.
3*
4* Rasdaman community is free software: you can redistribute it and/or modify
5* it under the terms of the GNU General Public License as published by
6* the Free Software Foundation, either version 3 of the License, or
7* (at your option) any later version.
8*
9* Rasdaman community is distributed in the hope that it will be useful,
10* but WITHOUT ANY WARRANTY; without even the implied warranty of
11* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12* GNU General Public License for more details.
13*
14* You should have received a copy of the GNU General Public License
15* along with rasdaman community. If not, see <http://www.gnu.org/licenses/>.
16*
17* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann /
18rasdaman GmbH.
19*
20* For more information please see <http://www.rasdaman.org>
21* or contact Peter Baumann via <baumann@rasdaman.com>.
22*/
33#ifndef _R_INTERESTTILING_HH_
34#define _R_INTERESTTILING_HH_
35
36#include "rasodmg/tiling.hh"
37
38class r_Dir_Decompose;
40
41//@ManMemo: Module: {\bf rasodmg}
42
76{
77public:
87
90 explicit r_Interest_Tiling(const char *encoded);
91
93 const std::vector<r_Minterval> &interest_areas,
122 virtual ~r_Interest_Tiling() = default;
123
124 std::vector<r_Minterval> compute_tiles(const r_Minterval &obj_domain, r_Bytes cell_size) const;
125
126 virtual void print_status(std::ostream &os) const;
127
128 virtual r_Tiling *clone() const;
129
131
132 //@ManMemo: Module: {\bf raslib}
137 //@ManMemo: Module: {\bf raslib}
142
143 static const char *description;
144
145protected: // methods.
147 std::vector<r_Dir_Decompose> make_partition(const r_Minterval &domain) const;
148
166 std::vector<r_Minterval> group(std::vector<r_Minterval> &blocks, r_Bytes typelen, Blocks_Type btype) const;
174
176 std::vector<r_Minterval> iareas;
177
178 //@ManMemo: Module: {\bf raslib}
186 static const char *tilesizelimit_name_nolimit;
187 static const char *tilesizelimit_name_regroup;
190
192};
193
194#endif
Definition tiling.hh:169
The r_Dir_Decompose class is used to specify a decomposition on an n-dimensional cube (for use in r_D...
Definition dirdecompose.hh:54
This class implements the "Interesting Areas" tiling algorithm.
Definition interesttiling.hh:76
static const char * tilesizelimit_name_regroup
Definition interesttiling.hh:187
Blocks_Type
The Block types (A, B or C)
Definition interesttiling.hh:151
@ BLOCKS_A
Definition interesttiling.hh:152
@ BLOCKS_B
Definition interesttiling.hh:153
@ BLOCKS_C
Definition interesttiling.hh:154
r_Interest_Tiling(r_Dimension dim, const std::vector< r_Minterval > &interest_areas, r_Bytes ts=r_Tiling::defaultTileSize, Tilesize_Limit strat=SUB_TILING)
static const char * tilesizelimit_name_regroupandsubtiling
Definition interesttiling.hh:189
std::vector< r_Minterval > iareas
Interest areas.
Definition interesttiling.hh:176
Tilesize_Limit ts_strat
Parameters: the block list, the lenght of the base cells and the type of the block (A,...
Definition interesttiling.hh:173
static const char * tilesizelimit_name_subtiling
Definition interesttiling.hh:188
static const char * get_name_from_tilesize_limit(Tilesize_Limit tsl)
Get a tilisize limit name for a tilesize limit.
std::vector< r_Minterval > compute_tiles(const r_Minterval &obj_domain, r_Bytes cell_size) const
Decompose an object in tiles.
static const char * tilesizelimit_name_nolimit
The names of all tilesizelimit types, to avoid redundant storage and inconsistencies.
Definition interesttiling.hh:186
virtual void print_status(std::ostream &os) const
Prints the current status of the object.
static r_Interest_Tiling::Tilesize_Limit get_tilesize_limit_from_name(const char *name)
Get a tilesize limit for a tilisize limit name.
std::vector< r_Dir_Decompose > make_partition(const r_Minterval &domain) const
Given a domain and a set of interest areas (internal) gener. partition.
r_Interest_Tiling(const char *encoded)
read everything from an encoded string e.g.
std::vector< r_Minterval > group(std::vector< r_Minterval > &blocks, r_Bytes typelen, Blocks_Type btype) const
A Blocks —> Blocks that belong to two or more interest zones (non-groupable) B Blocks —> Blocks withi...
Tilesize_Limit
Possible strategies to limit the tilesize.
Definition interesttiling.hh:80
@ REGROUP
Definition interesttiling.hh:82
@ NUMBER
Definition interesttiling.hh:85
@ SUB_TILING
Definition interesttiling.hh:83
@ REGROUP_AND_SUBTILING
Definition interesttiling.hh:84
@ NO_LIMIT
Definition interesttiling.hh:81
virtual ~r_Interest_Tiling()=default
It takes as parameter a list containing the areas of interest to the user and also the tilesize to be...
static const char * all_tilesizelimit_names[r_Interest_Tiling::NUMBER]
Definition interesttiling.hh:191
virtual r_Tiling * clone() const
This method provides the core funcionality of this class.
virtual r_Tiling_Scheme get_tiling_scheme() const
This method is similar to a copy constructor, this is, is returns a copy of the current object.
static const char * description
Definition interesttiling.hh:143
The spatial domain of an MDD is represented by an object of class r_Minterval.
Definition minterval.hh:226
The r_Tiling class is used to specify in which way the tiling is done by the system.
Definition tiling.hh:53
static const r_Bytes defaultTileSize
Definition tiling.hh:92
std::uint32_t r_Dimension
number of dimensions in r_Point and r_Minterval.
Definition mddtypes.hh:56
size_t r_Bytes
number of bytes in an tile or mdd or type.
Definition mddtypes.hh:43
r_Tiling_Scheme
Tiling of the object:
Definition mddtypes.hh:317