Agroeye  1.0
DatabaseSpatialite.h
Go to the documentation of this file.
1 #ifndef DATABASESPATIALITE_H
2 #define DATABASESPATIALITE_H
3 
4 #include <memory>
5 #include <vector>
6 #include <unordered_map>
7 #include <map>
8 #include <string>
9 #include <regex>
10 
11 #include <sqlite3.h>
12 #include <spatialite.h>
13 
14 #include "Callback.h"
15 #include "DatabaseErrors.h"
16 #include "Raster.h"
17 #include "DatabaseTable.h"
18 #include "DatabaseStatements.h"
19 #include "SegmentationParameters.h"
20 
21 
22 namespace {
27  int exec_callback(void* data, int columns, char** values, char** names);
28 }
29 
30 namespace agroeye {
31 namespace handlers {
32 
37 using SqliteCallback = std::function<int(int, char**, char**)>;
44 
48 class Spatialite {
49 public:
50  Spatialite();
52  Spatialite(const char* path, bool create = false);
53  Spatialite(const char* path, CallbackFunction callbackFunc, bool create = false);
54  Spatialite(const Spatialite& other);
55  Spatialite(Spatialite&& other);
56  Spatialite& operator=(const Spatialite& other);
58  virtual ~Spatialite();
59 
64  void exec(const char* query);
65 
72  void exec(const char* query, bool silent);
73 
80  void exec(const char* query, SqliteCallback callback);
81  std::string getPath() const {return path;};
83  void optimize();
94  PreparedStatement createTables(std::string name, Raster raster, Parameters parameters);
95 
103  std::string proj4ToSrid(std::string proj4);
104 
105 private:
106  std::string path;
107  CallbackFunction callbackFunc;
108  std::shared_ptr<sqlite3> ptrSql3 {nullptr};
109 
110  void checkResult(const int returnCode) const;
111  DbTable createGeometryTable(Raster raster, std::string name);
112  std::vector<std::pair<StatisticsTypes, DbTable>> createParametersTables(Parameters parameters, std::string prefix);
113  DbTable createTotalView(DbTable source, std::vector<DbTable> joins);
114  void createIndex(const DbTable& table);
115 };
116 
117 } // namespace handlers
118 } // namespace agroeye
119 
120 #endif
Spatialite()
Definition: DatabaseSpatialite.cpp:15
PreparedStatement createTables(std::string name, Raster raster, Parameters parameters)
Creates tables from given parameters.
Definition: DatabaseSpatialite.cpp:124
std::function< int(int, char **, char **)> SqliteCallback
Callack function collection data of SQL query For exect syntax of the function please see the SQLite3...
Definition: DatabaseSpatialite.h:37
Class encapsulating Raster file object.
Definition: Raster.h:32
CallbackTypes
Type of callback that can be called function.
Definition: Callback.h:17
std::string proj4ToSrid(std::string proj4)
Converts Proj4 sptial reference into SRID value_comp.
Definition: DatabaseSpatialite.cpp:276
void exec(const char *query)
Performs query on database.
Definition: DatabaseSpatialite.cpp:92
Class encapulating group of statements.
Definition: DatabaseStatements.h:110
Definition: ContainerMath.h:11
void optimize()
Definition: DatabaseSpatialite.cpp:117
Class encapsulating different segmentation parameters.
Definition: SegmentationParameters.h:29
Spatialite & operator=(const Spatialite &other)
Definition: DatabaseSpatialite.cpp:72
Encapsulation of table in database.
Definition: DatabaseTable.h:20
virtual ~Spatialite()
Definition: DatabaseSpatialite.cpp:88
std::function< void(double, ListCallbackTypes, std::string)> CallbackFunction
Definition: Callback.h:25
std::vector< size_t > BandsList
Definition: SegmentationParameters.h:20
std::string getPath() const
Definition: DatabaseSpatialite.h:81
StatisticsTypes
Type of statistics that can be calculated.
Definition: SegmentationParameters.h:15
Encapsulation of Spatialite database.
Definition: DatabaseSpatialite.h:48