kealib
Loading...
Searching...
No Matches
KEAAttributeTableFile.h
Go to the documentation of this file.
1/*
2 * KEAAttributeTableFile.h
3 * LibKEA
4 *
5 * Created by Pete Bunting on 20/07/2012.
6 * Copyright 2012 LibKEA. All rights reserved.
7 *
8 * This file is part of LibKEA.
9 *
10 * Permission is hereby granted, free of charge, to any person
11 * obtaining a copy of this software and associated documentation
12 * files (the "Software"), to deal in the Software without restriction,
13 * including without limitation the rights to use, copy, modify,
14 * merge, publish, distribute, sublicense, and/or sell copies of the
15 * Software, and to permit persons to whom the Software is furnished
16 * to do so, subject to the following conditions:
17 *
18 * The above copyright notice and this permission notice shall be
19 * included in all copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
23 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
25 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
26 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 *
29 */
30
31#ifndef KEAAttributeTableFile_H
32#define KEAAttributeTableFile_H
33
34#include <iostream>
35#include <string>
36#include <vector>
37
38#include <highfive/highfive.hpp>
39
40#include "libkea/KEACommon.h"
41#include "libkea/KEAException.h"
43
44namespace kealib{
45
46 class KEA_EXPORT KEAAttributeTableFile : public KEAAttributeTable
47 {
48 public:
49 KEAAttributeTableFile(HighFive::File *keaImgIn, KEAAttributeTable *pBaseAtt, const std::shared_ptr<kealib::kea_mutex>& mutex, unsigned int deflateIn=KEA_DEFLATE);
50
51 bool getBoolField(size_t fid, size_t colIdx) const;
52 int64_t getIntField(size_t fid, size_t colIdx) const;
53 double getFloatField(size_t fid, size_t colIdx) const;
54 std::string getStringField(size_t fid, size_t colIdx) const;
55
56 void getBoolFields(size_t startfid, size_t len, size_t colIdx, bool *pbBuffer) const;
57 void getIntFields(size_t startfid, size_t len, size_t colIdx, int64_t *pnBuffer) const;
58 void getFloatFields(size_t startfid, size_t len, size_t colIdx, double *pfBuffer) const;
59 void getStringFields(size_t startfid, size_t len, size_t colIdx, std::vector<std::string> *psBuffer) const;
60 void getNeighbours(size_t startfid, size_t len, std::vector<std::vector<size_t>* > *neighbours) const;
61
62 void setBoolField(size_t fid, size_t colIdx, bool value);
63 void setIntField(size_t fid, size_t colIdx, int64_t value);
64 void setFloatField(size_t fid, size_t colIdx, double value);
65 void setStringField(size_t fid, size_t colIdx, const std::string &value);
66
67 void setBoolFields(size_t startfid, size_t len, size_t colIdx, bool *pbBuffer);
68 void setIntFields(size_t startfid, size_t len, size_t colIdx, int64_t *pnBuffer);
69 void setFloatFields(size_t startfid, size_t len, size_t colIdx, double *pfBuffer);
70 void setStringFields(size_t startfid, size_t len, size_t colIdx, std::vector<std::string> *papszStrList);
71 void setNeighbours(size_t startfid, size_t len, std::vector<std::vector<size_t>* > *neighbours);
72
73 KEAATTFeature* getFeature(size_t fid) const;
74
75 // called by base class implementations of addAttXXXField
76 void addAttBoolField(KEAATTField field, bool val);
77 void addAttIntField(KEAATTField field, int64_t val);
78 void addAttFloatField(KEAATTField field, float val);
79 void addAttStringField(KEAATTField field, const std::string &val);
80
81 void addRows(size_t numRows);
82
83 static KEAAttributeTable* createKeaAtt(HighFive::File *keaImg, const std::shared_ptr<kealib::kea_mutex>& mutex, unsigned int band, unsigned int chunkSize=KEA_ATT_CHUNK_SIZE, unsigned int deflate=KEA_DEFLATE);
84 void exportToKeaFile(HighFive::File *keaImg, unsigned int band, unsigned int chunkSize=KEA_ATT_CHUNK_SIZE, unsigned int deflate=KEA_DEFLATE);
85
87 protected:
88 unsigned int deflate;
89 HighFive::File *keaImg;
90 KEAATTFeature *m_pFeature; // see GetFeature()
91
92 void updateSizeHeader(hsize_t nbools, hsize_t nints, hsize_t nfloats, hsize_t nstrings);
93 void addAttField(KEAATTField field, const std::string &headerPath, const std::string &dataPath,
94 unsigned int nfields, HighFive::DataType data_type, hid_t fill_type, const void *fill_value);
95};
96
97}
98
99
100#endif
101
102
103
104
Definition KEAAttributeTableFile.h:47
void setIntField(size_t fid, size_t colIdx, int64_t value)
double getFloatField(size_t fid, size_t colIdx) const
HighFive::File * keaImg
Definition KEAAttributeTableFile.h:89
void addAttBoolField(KEAATTField field, bool val)
void setStringFields(size_t startfid, size_t len, size_t colIdx, std::vector< std::string > *papszStrList)
void getFloatFields(size_t startfid, size_t len, size_t colIdx, double *pfBuffer) const
void getBoolFields(size_t startfid, size_t len, size_t colIdx, bool *pbBuffer) const
void setBoolField(size_t fid, size_t colIdx, bool value)
int64_t getIntField(size_t fid, size_t colIdx) const
void getIntFields(size_t startfid, size_t len, size_t colIdx, int64_t *pnBuffer) const
void setFloatFields(size_t startfid, size_t len, size_t colIdx, double *pfBuffer)
void setBoolFields(size_t startfid, size_t len, size_t colIdx, bool *pbBuffer)
void getStringFields(size_t startfid, size_t len, size_t colIdx, std::vector< std::string > *psBuffer) const
unsigned int deflate
Definition KEAAttributeTableFile.h:88
static KEAAttributeTable * createKeaAtt(HighFive::File *keaImg, const std::shared_ptr< kealib::kea_mutex > &mutex, unsigned int band, unsigned int chunkSize=KEA_ATT_CHUNK_SIZE, unsigned int deflate=KEA_DEFLATE)
void setStringField(size_t fid, size_t colIdx, const std::string &value)
void addRows(size_t numRows)
std::string getStringField(size_t fid, size_t colIdx) const
void setNeighbours(size_t startfid, size_t len, std::vector< std::vector< size_t > * > *neighbours)
void addAttField(KEAATTField field, const std::string &headerPath, const std::string &dataPath, unsigned int nfields, HighFive::DataType data_type, hid_t fill_type, const void *fill_value)
void addAttIntField(KEAATTField field, int64_t val)
KEAATTFeature * getFeature(size_t fid) const
void addAttStringField(KEAATTField field, const std::string &val)
void getNeighbours(size_t startfid, size_t len, std::vector< std::vector< size_t > * > *neighbours) const
void updateSizeHeader(hsize_t nbools, hsize_t nints, hsize_t nfloats, hsize_t nstrings)
KEAATTFeature * m_pFeature
Definition KEAAttributeTableFile.h:90
void exportToKeaFile(HighFive::File *keaImg, unsigned int band, unsigned int chunkSize=KEA_ATT_CHUNK_SIZE, unsigned int deflate=KEA_DEFLATE)
bool getBoolField(size_t fid, size_t colIdx) const
void setIntFields(size_t startfid, size_t len, size_t colIdx, int64_t *pnBuffer)
void addAttFloatField(KEAATTField field, float val)
KEAAttributeTableFile(HighFive::File *keaImgIn, KEAAttributeTable *pBaseAtt, const std::shared_ptr< kealib::kea_mutex > &mutex, unsigned int deflateIn=KEA_DEFLATE)
void setFloatField(size_t fid, size_t colIdx, double value)
Definition KEAAttributeTable.h:114
Definition KEAAttributeTable.h:45
Definition KEAAttributeTable.h:57
Definition KEAAttributeTable.h:79