Loading [MathJax]/extensions/tex2jax.js
IImportRDB.hpp
1 #pragma once
2 
3 //DM
4 #include "DM/config.hpp"
5 #include "DM/AutoLink.hpp" //enable autolink
6 
7 #include "DM/ColumnTypes.hpp"
8 #include "DM/IO/IImport.hpp"
9 
10 DM_NAMESPACE_BEGIN
11 
12 /// Specific import class for handling shape file imports
13 class DM_API IImportRDB : public virtual IImport
14 {
15 public:
16  enum struct StorageClass
17  {
18  constant = 1, ///< value cannot be changed
19  variable = 2, ///< value can change from time to time
20  dynamic = 3 ///< value is likely to be changed often
21  };
22 
23  enum struct CompressionOptions
24  {
25  default_ = 0, ///< nothing special, just use default compression algorithm
26  delta = 1, ///< calculate differences between two consecutive values
27  shuffle = 2, ///< shuffle bytes of point attribute values
28  delta_shuffle = 3 ///< calculate differences and shuffle bytes
29  };
30 
31  struct Attribute {
32  char name[64]; ///< unique attribute name (for queries) \see details of class PointAttribute
33  char title[64]; ///< attribute title (for display)
34  char description[255]; ///< attribute description (for display)
35  char unitSymbol[16]; ///< physical unit symbol (e.g. "m", "rad", "K")
36  uint32_t length; ///< number of dimensions/elements (1: scalar, >1: vector, e.g. 3 for point coordinates)
37  double resolution; ///< expected value resolution
38  double minimumValue; ///< theoretical minimum value
39  double maximumValue; ///< theoretical maximum value
40  double defaultValue; ///< default value (minimum <= default <= maximum)
41  double invalidValue; ///< invalid value (minimum <= invalid <= maximum, use "not-a-number" if there is no invalid value)
42  ColumnType dataType; ///< data type
43  StorageClass storageClass; ///< storage class \see enum StorageClass
44  CompressionOptions compressionOptions; ///< options additional to default compression
45  };
46 
47  struct MappingEntry {
48  char rdbName[64];
49  char toDM[1024];
50  char toRDB[1024];
51  };
52  /// check if there is a default mapping with an DM column and an rdb attribute
53  static bool columnToRDBAttribute(ColumnSemantic dmCol, MappingEntry &entry);
54  static bool columnToRDBAttribute(const char* dmColName, MappingEntry &entry);
55 
56  static IImportRDB* New( const char *file, RDBCoordSystem coordsys = RDBCoordSystem::default_,
58  bool collectHdrContents = false, unsigned maxBulkPoints = 1000, AddInfoLayoutHandle defaultLayout = AddInfoLayoutHandle() );
59 
60 protected:
61  virtual ~IImportRDB() {}
62 
63 public:
64  /// get number of attribute (available after header was read)
65  virtual unsigned getAttributeCount() const = 0;
66  /// get corresponding attribute record (available after header was read)
67  virtual void getAttribute(unsigned idx, Attribute &attr) const = 0;
68 
69  /// Specify a predefined NG-attribute by its enum. The rdb attribute's type will be converted to that of the predefined attribute
70  virtual void importAttribute(int rdbAttrIndex, int arrayIdx = 0, ColumnSemantic ngCol = ColumnSemantic::null, const char* filterString = "") = 0;
71  /// Specify the NG-attribute by name. By default, use the name and type of the rdb attribute
72  virtual void importAttribute(int rdbAttrIndex, int arrayIdx = 0, const char* ngName = 0, ColumnType ngType = ColumnType::count, const char* filterString = "") = 0;
73 };
74 
75 typedef Handle<IImportRDB> ImportRDBHandle;
76 
77 DM_NAMESPACE_END
uint32_t length
number of dimensions/elements (1: scalar, >1: vector, e.g. 3 for point coordinates)
Definition: IImportRDB.hpp:36
ColumnType dataType
data type
Definition: IImportRDB.hpp:42
ColumnSemantic
Pre-defined attributes (attributes with semantic)
Definition: ColumnTypes.hpp:38
CompressionOptions compressionOptions
options additional to default compression
Definition: IImportRDB.hpp:44
StorageClass
Definition: IImportRDB.hpp:16
base class for importing original geometry data file
Definition: M/c++_api/inc/DM/IO/IImport.hpp:45
StorageClass storageClass
storage class
Definition: IImportRDB.hpp:43
Specific import class for handling shape file imports.
Definition: IImportRDB.hpp:13
Definition: Handle.hpp:427
CompressionOptions
Definition: IImportRDB.hpp:23
double defaultValue
default value (minimum <= default <= maximum)
Definition: IImportRDB.hpp:40
ColumnType
Supported attribute type.
Definition: ColumnTypes.hpp:8
RDBCoordSystem
Definition: IFileHeader.hpp:22
Definition: IImportRDB.hpp:31
double resolution
expected value resolution
Definition: IImportRDB.hpp:37
Definition: IImportRDB.hpp:47
double maximumValue
theoretical maximum value
Definition: IImportRDB.hpp:39
double invalidValue
invalid value (minimum <= invalid <= maximum, use "not-a-number" if there is no invalid value)
Definition: IImportRDB.hpp:41
static IImport * New(const char *file, DataFormat format, FilterHandle filter=FilterHandle(), ControlObjectHandle control=ControlObjectHandle(), bool collectHdrContents=false, unsigned maxBulkPoints=1000, AddInfoLayoutHandle defaultLayout=AddInfoLayoutHandle())
creates new import object
double minimumValue
theoretical minimum value
Definition: IImportRDB.hpp:38