rasdaman complete source
rasgeo_util.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 - 2011 Peter Baumann / rasdaman GmbH.
18  *
19  * For more information please see <http://www.rasdaman.org>
20  * or contact Peter Baumann via <baumann@rasdaman.com>.
21  */
22 
23 #ifndef _RASGEO_UTIL_HH_
24 #define _RASGEO_UTIL_HH_
25 
26 class r_Tiling;
27 
28 // fopen, getc
29 #include <stdio.h>
30 #include <list>
31 #include <exception>
32 
33 #include "raslib/mddtypes.hh"
34 #include "raslib/minterval.hh"
35 #include "raslib/scalar.hh"
36 #include "raslib/odmgtypes.hh"
37 #include "raslib/oid.hh"
38 #include "rasodmg/transaction.hh"
39 #include "rasodmg/database.hh"
40 #include "rasodmg/ref.hh"
41 #include "rasodmg/set.hh"
42 #include "rasodmg/gmarray.hh"
43 #include "rasodmg/polycutout.hh"
44 #include "rasodmg/marray.hh"
45 #include "cmlparser.hh"
46 
47 #include "import_error.hh"
48 #include "rasgeo_globals.hh"
49 
51 #define MINTERVAL_STREAM(myInt) \
52  "[" << (int) myInt[0].low() << ":" << (int) myInt[0].high() \
53  << "," << (int) myInt[1].low() << ":" << (int) myInt[1].high() << "]"
54 
56 typedef enum
57 {
62 } ImportType;
63 
64 
66 extern void parseParams(int argc, char** argv) throw (ImportError, r_Error);
67 
69 {
70 public:
71  static void doStuff(int argc, char** argv, ImportType iType ) throw(ImportError, r_Error);
72  static void doImport(const char* Query, const char* TransparentSelectQuery, r_Marray_Type*& mddType, r_Ref<r_GMarray>& fileMDD ) throw(ImportError, r_Error);
73 
74  static r_Marray_Type *getTypeFromDatabase( const char *mddTypeName ) throw(ImportError, r_Error);
75 
76  static char* getFile(const char *inputFile, size_t& dtaSize ) throw (ImportError);
77 
78  static void convertTo(r_Data_Format fmt, char*& src, size_t& size, r_Minterval& interv, r_Base_Type*& tp, const char* options) throw (ImportError);
79 
80  static void convertFrom(r_Data_Format fmt, char*& src, size_t& size, r_Minterval& interv, r_Base_Type*& tp, const char* options) throw (ImportError);
81 
82  static void readScaleLevels(const char* argv) throw (ImportError);
83 
84  static void initGMarray( r_Ref<r_GMarray>& tempMDD, const char *inputFile, r_Data_Format conversionFormat, r_Minterval& tempDataDomain, r_Marray_Type*& mddType, r_Tiling*& myTiling, const char* conversionParams) throw (r_Error, ImportError);
85 
86  static void overlayGMarrays( r_Ref<r_GMarray>& target, const r_Ref<r_GMarray>& replaceBlackMDD, const r_Ref<r_GMarray>& backgroundMDD) throw (ImportError);
87 
88  static void compareGMarrays(const r_Ref<r_GMarray>& baseMDD, r_Ref<r_GMarray>& topMDD) throw (ImportError);
89 
90  static void openDatabase() throw (r_Error);
91  static void closeDatabase() throw (r_Error);
92 
93  static void openTransaction(bool readwrite = true) throw (r_Error);
94  static void closeTransaction( bool doCommit ) throw (r_Error);
95 
96  static void compareScaledMDD(const r_Ref<r_GMarray>& baseMDD, const r_Minterval& clipDom, const r_Minterval& downScaledDomain, unsigned int length, const char* collectionName) throw (r_Error, ImportError);
97 
98  static void updateScaledMDD(const r_Ref<r_GMarray>& baseMDD, const r_Minterval& clipDom, const r_Minterval& downScaledDomain, unsigned int length, const char* collectionName) throw (r_Error, ImportError);
99 
100  static void scaleDomain(const r_Minterval& baseDomain, const r_Point& origin, double factor, r_Minterval& scaledDomain, r_Minterval& clipDomain, unsigned int& length, bool& underflow) throw (ImportError);
101 
102  static void saveData(const char* fileNamePat, const char* data, r_Bytes length, const r_Minterval& mddDomain) throw (ImportError);
103 
104  static const string generateImportQuery( const char *c, r_Minterval ovl, int useOId, r_OId oid ) throw(ImportError, r_Error);
105  static const string generateSelectQuery( const char *c, r_Minterval ovl ) throw(ImportError, r_Error);
106 
107  static void executeQuery( r_OQL_Query& query, r_Set< r_Ref_Any > &result ) throw (r_Error, ImportError);
108  static void executeQuery( r_OQL_Query& query ) throw (r_Error, ImportError);
109 
110  static void fast_scale_process_primitive_type(const r_Primitive_Type *primType, char *dest, const char *src, const r_Minterval &destIv, const r_Minterval &srcIv, const r_Minterval &iterDom, unsigned int type_len, unsigned int length, r_Scale_Function func) throw(ImportError);
111 
112  static void fast_scale_process_structured_type(const r_Structure_Type *primType, char *dest, const char *src, const r_Minterval &destIv, const r_Minterval &srcIv, const r_Minterval &iterDom, unsigned int type_len, unsigned int length, r_Scale_Function func) throw (ImportError);
113 
114  template<class T>
115  static void fast_scale_resample_array(T *dest, const T *src, const r_Minterval &destIv, const r_Minterval &srcIv, const r_Minterval &iterDom, unsigned int type_len, unsigned int length, bool round) throw (ImportError);
116 
117  template<class T>
118  static void fast_scale_aggregate_array(T *dest, const T *src, const r_Minterval &destIv, const r_Minterval &srcIv, const r_Minterval &iterDom, unsigned int type_len, unsigned int length) throw (ImportError);
119 
121  static bool allowedCollNameChar( const char* collName );
122 
123  static const char* serverName;
124  static r_ULong serverPort;
125  static const char* baseName;
126  static const char* userName;
127  static const char* passwd;
128  static const char* conversionTypeName;
129  static r_Data_Format inputFormat;
130  static const char* inputFormatParams;
131  static r_Data_Format transferFormat;
132  static const char* transferFormatParams;
133  static r_Data_Format storageFormat;
134  static const char* storageFormatParams;
135  static const char* collName;
136  static const char* setTypeName;
137  static const char* mddTypeName;
138  static r_OId mddOId;
139  static bool mddOIdDef;
140  static const char* fileName;
141  static r_Database db;
142  static r_Transaction ta;
143  static r_Minterval mddDomain;
144  static bool mddDomainDef;
145  static bool testBed;
146  static r_Tiling* theTiling;
147  static bool polygonDefined;
148  static r_PolygonCutOut polygon;
149  static int polygonShrinker;
150  static bool transparent;
151  static string outsidePatternSel;
152  static bool outsidePatternSelDef;
153  static string insidePatternSel;
154  static bool insidePatternSelDef;
155  static string outsidePattern;
156  static bool outsidePatternDef;
157  static string insidePattern;
158  static bool insidePatternDef;
159  static const int queryBufferLength;
160  static std::list<std::pair<double, char*> >* scaleLevels;
161  static int wrongBytes;
162  static r_Scale_Function scaleFunction;
163  static const string tilingDesc;
164  static const string tilingParamsDesc;
165  static size_t updateBufferSize;
166  static const char* defaultImportBufferSize;
167  static std::list<char*> *layerList;
168  static unsigned int cellSize;
169  static std::list<unsigned int> *patternsTrue;
170  static std::list<unsigned int> *patternsFalse;
171  static r_Minterval overlayDomain;
172  static bool overlayDomainDef;
173  static r_Range align;
174  static bool tiledImport;
175  static bool handleSignal;
176  static bool debug;
177  static double xmin, xmax, ymin, ymax;
178  static double xres, yres;
179  static unsigned int skipLines;
180  static bool fileIsStdin;
181  static bool noFlipY;
182  static bool taSplit;
183  static bool verbose;
184 
185 private:
187  static bool dbIsOpen;
188 
190  static bool taIsOpen;
191 
192 }; // RasgeoUtil
193 
194 #endif // _RASGEO_UTIL_HH_
static double xmin
Definition: rasgeo_util.hh:177
static bool outsidePatternSelDef
Definition: rasgeo_util.hh:152
static const char * mddTypeName
Definition: rasgeo_util.hh:137
static r_Data_Format transferFormat
Definition: rasgeo_util.hh:131
static const char * fileName
Definition: rasgeo_util.hh:140
static r_Data_Format inputFormat
Definition: rasgeo_util.hh:129
static void convertTo(r_Data_Format fmt, char *&src, size_t &size, r_Minterval &interv, r_Base_Type *&tp, const char *options)
static void closeDatabase()
static const string generateImportQuery(const char *c, r_Minterval ovl, int useOId, r_OId oid)
static void openTransaction(bool readwrite=true)
static string insidePattern
Definition: rasgeo_util.hh:157
static const char * transferFormatParams
Definition: rasgeo_util.hh:132
static bool verbose
Definition: rasgeo_util.hh:183
static double ymax
Definition: rasgeo_util.hh:177
static void fast_scale_process_primitive_type(const r_Primitive_Type *primType, char *dest, const char *src, const r_Minterval &destIv, const r_Minterval &srcIv, const r_Minterval &iterDom, unsigned int type_len, unsigned int length, r_Scale_Function func)
Definition: structuretype.hh:56
static unsigned int cellSize
Definition: rasgeo_util.hh:168
static const char * setTypeName
Definition: rasgeo_util.hh:136
static const int queryBufferLength
Definition: rasgeo_util.hh:159
static const char * storageFormatParams
Definition: rasgeo_util.hh:134
static bool noFlipY
Definition: rasgeo_util.hh:181
static void initGMarray(r_Ref< r_GMarray > &tempMDD, const char *inputFile, r_Data_Format conversionFormat, r_Minterval &tempDataDomain, r_Marray_Type *&mddType, r_Tiling *&myTiling, const char *conversionParams)
static bool handleSignal
Definition: rasgeo_util.hh:175
void parseParams(int argc, char **argv)
parameter evaluation procedure, to be provided by each tool individually
ImportType
indicator to make RasgeoUtil know what kind of import is going on
Definition: rasgeo_util.hh:56
Definition: rasgeo_util.hh:58
static void fast_scale_aggregate_array(T *dest, const T *src, const r_Minterval &destIv, const r_Minterval &srcIv, const r_Minterval &iterDom, unsigned int type_len, unsigned int length)
static char * getFile(const char *inputFile, size_t &dtaSize)
static void compareGMarrays(const r_Ref< r_GMarray > &baseMDD, r_Ref< r_GMarray > &topMDD)
static double yres
Definition: rasgeo_util.hh:178
static bool insidePatternDef
Definition: rasgeo_util.hh:158
static r_OId mddOId
Definition: rasgeo_util.hh:138
static bool debug
Definition: rasgeo_util.hh:176
static bool insidePatternSelDef
Definition: rasgeo_util.hh:154
Definition: rasgeo_util.hh:60
static r_PolygonCutOut polygon
Definition: rasgeo_util.hh:148
static r_ULong serverPort
Definition: rasgeo_util.hh:124
static string outsidePattern
Definition: rasgeo_util.hh:155
static int polygonShrinker
Definition: rasgeo_util.hh:149
static void doImport(const char *Query, const char *TransparentSelectQuery, r_Marray_Type *&mddType, r_Ref< r_GMarray > &fileMDD)
static double ymin
Definition: rasgeo_util.hh:177
static const char * passwd
Definition: rasgeo_util.hh:127
static void fast_scale_process_structured_type(const r_Structure_Type *primType, char *dest, const char *src, const r_Minterval &destIv, const r_Minterval &srcIv, const r_Minterval &iterDom, unsigned int type_len, unsigned int length, r_Scale_Function func)
static bool polygonDefined
Definition: rasgeo_util.hh:147
Definition: rasgeo_util.hh:59
static void convertFrom(r_Data_Format fmt, char *&src, size_t &size, r_Minterval &interv, r_Base_Type *&tp, const char *options)
static r_Minterval overlayDomain
Definition: rasgeo_util.hh:171
static const string generateSelectQuery(const char *c, r_Minterval ovl)
static r_Transaction ta
Definition: rasgeo_util.hh:142
static bool fileIsStdin
Definition: rasgeo_util.hh:180
static string outsidePatternSel
Definition: rasgeo_util.hh:151
static const char * collName
Definition: rasgeo_util.hh:135
static const string tilingDesc
Definition: rasgeo_util.hh:163
static bool transparent
Definition: rasgeo_util.hh:150
static void compareScaledMDD(const r_Ref< r_GMarray > &baseMDD, const r_Minterval &clipDom, const r_Minterval &downScaledDomain, unsigned int length, const char *collectionName)
static bool tiledImport
Definition: rasgeo_util.hh:174
static double xres
Definition: rasgeo_util.hh:178
static const char * baseName
Definition: rasgeo_util.hh:125
static r_Database db
Definition: rasgeo_util.hh:141
static r_Data_Format storageFormat
Definition: rasgeo_util.hh:133
static const char * serverName
Definition: rasgeo_util.hh:123
static r_Marray_Type * getTypeFromDatabase(const char *mddTypeName)
static bool testBed
Definition: rasgeo_util.hh:145
static std::list< std::pair< double, char * > > * scaleLevels
Definition: rasgeo_util.hh:160
static string insidePatternSel
Definition: rasgeo_util.hh:153
static bool overlayDomainDef
Definition: rasgeo_util.hh:172
static const char * defaultImportBufferSize
Definition: rasgeo_util.hh:166
static std::list< char * > * layerList
Definition: rasgeo_util.hh:167
static r_Tiling * theTiling
Definition: rasgeo_util.hh:146
static void saveData(const char *fileNamePat, const char *data, r_Bytes length, const r_Minterval &mddDomain)
static void executeQuery(r_OQL_Query &query, r_Set< r_Ref_Any > &result)
static const string tilingParamsDesc
Definition: rasgeo_util.hh:164
static const char * conversionTypeName
Definition: rasgeo_util.hh:128
static bool outsidePatternDef
Definition: rasgeo_util.hh:156
static void scaleDomain(const r_Minterval &baseDomain, const r_Point &origin, double factor, r_Minterval &scaledDomain, r_Minterval &clipDomain, unsigned int &length, bool &underflow)
static void doStuff(int argc, char **argv, ImportType iType)
static std::list< unsigned int > * patternsFalse
Definition: rasgeo_util.hh:170
static bool mddDomainDef
Definition: rasgeo_util.hh:144
static void readScaleLevels(const char *argv)
static void updateScaledMDD(const r_Ref< r_GMarray > &baseMDD, const r_Minterval &clipDom, const r_Minterval &downScaledDomain, unsigned int length, const char *collectionName)
static void openDatabase()
static std::list< unsigned int > * patternsTrue
Definition: rasgeo_util.hh:169
Definition: import_error.hh:131
static void closeTransaction(bool doCommit)
static const char * inputFormatParams
Definition: rasgeo_util.hh:130
static const char * userName
Definition: rasgeo_util.hh:126
static bool taSplit
Definition: rasgeo_util.hh:182
static r_Range align
Definition: rasgeo_util.hh:173
static unsigned int skipLines
Definition: rasgeo_util.hh:179
static bool allowedCollNameChar(const char *collName)
check if string passed is a valid rasdasman collection name
static double xmax
Definition: rasgeo_util.hh:177
static size_t updateBufferSize
Definition: rasgeo_util.hh:165
static int wrongBytes
Definition: rasgeo_util.hh:161
static void overlayGMarrays(r_Ref< r_GMarray > &target, const r_Ref< r_GMarray > &replaceBlackMDD, const r_Ref< r_GMarray > &backgroundMDD)
static void fast_scale_resample_array(T *dest, const T *src, const r_Minterval &destIv, const r_Minterval &srcIv, const r_Minterval &iterDom, unsigned int type_len, unsigned int length, bool round)
static r_Minterval mddDomain
Definition: rasgeo_util.hh:143
Definition: rasgeo_util.hh:61
static r_Scale_Function scaleFunction
Definition: rasgeo_util.hh:162
static bool mddOIdDef
Definition: rasgeo_util.hh:139
Definition: rasgeo_util.hh:68