ColumnTypes.hpp
1 #ifndef DM_COLUMN_TYPES_HPP_INCLUDED
2 #define DM_COLUMN_TYPES_HPP_INCLUDED
3 
4 #ifdef _MSC_VER
5  #pragma once
6 #endif
7 
8 #include <DM/config.hpp>
9 
10 namespace DM {
11 
12 /// \brief Supported attribute type
13 namespace ColumnType {
14  enum Type {
15  none = -1,
16  int_, ///< 4 byte, signed integer
17  uint_, ///< 4 byte, unsigned integer
18 
19  char_, ///< 1 byte, integer
20  uchar_, ///< 1 byte, unsigned integer
21 
22  short_, ///< 2 byte, integer
23  ushort_, ///< 2 byte, unsigned integer
24 
25  float_, ///< 4 byte, real
26  double_, ///< 8 byte, real
27 
28  string_, ///< c string of arbitrary size
29 
30  llong_, ///< 8 byte, signed integer
31 
32  cstr_, ///< fixed length c string
33 
34  bit_, ///< bit (boolean)
35 
36  count ///< always last element
37  };
38 }
39 
40 /// \brief Pre-defined attributes (attributes with semantic)
41 namespace ColumnSemantic {
42  enum Type {
43  null, ///< undefined semantic
44  SigmaX = 20, ///<
45  SigmaY = 21, ///<
46  SigmaZ = 22, ///<
47  ScopSemantic = 23, ///<
48  NormalX = 24, ///< x value of normal (unit) vector
49  NormalY = 25, ///< y value of normal (unit) vector
50  NormalZ = 26, ///< z value of normal (unit) vector
51  UserData = 31, ///<
52  PointSourceId = 32, ///<
53  GPSTime = 33, ///<
54  LASExtensions = 34, ///<
55  MaxCurvature = 35, ///<
56  MinCurvature = 36, ///<
57  MaxCurvatureDirection = 37, ///<
58  Residual = 38, ///<
59  NormalLeftX = 39, ///< x value of normal vector left to a structure line
60  NormalLeftY = 40, ///< y value of normal vector left to a structure line
61  NormalLeftZ = 41, ///< z value of normal vector left to a structure line
62  NormalRightX = 42, ///< x value of normal vector right to a structure line
63  NormalRightY = 43, ///< y value of normal vector right to a structure line
64  NormalRightZ = 44, ///< z value of normal vector right to a structure line
65  TangentX = 51, ///<
66  TangentY = 52, ///<
67  TangentZ = 53, ///<
68  TangentSigmaX = 54, ///<
69  TangentSigmaY = 55, ///<
70  TangentSigmaZ = 56, ///<
71  Amplitude = 58, ///< Linear scale value proportional to the receiving power
72  EchoWidth = 59, ///< Full width at half maximum [ns]
73  CrossSection = 60, ///<
74  EchoNumber = 61, ///< This is the k-th return/echo for a certain pulse, where for the first return: k==1 (see LAS spec.)
75  NrOfEchos = 62, ///< The pulse which this point is based on generated this number of returns/echoes (see LAS spec.)
76  BeamVectorX = 63, ///< X-component of beam vector (from scanner to point)
77  BeamVectorY = 64, ///< Y-component of beam vector (from scanner to point)
78  BeamVectorZ = 65, ///< Z-component of beam vector (from scanner to point)
79  EchoWidthNormalised = 66, ///<
80  SpreadAngle = 71, ///<
81  Id = 72, ///<
82  Estimator = 74, ///<
83  RGIndex = 75, ///<
84  ChannelDesc = 76, ///<
85  Attribute = 77, ///<
86  Confidence = 78, ///<
87  CustomClassId = 79, ///<
88  RollAngle = 83, ///< [radians] as defined by the aviation norm ARINC 705
89  PitchAngle = 84, ///< [radians] as defined by the aviation norm ARINC 705
90  YawAngle = 85, ///< [radians] as defined by the aviation norm ARINC 705
91  FileId = 86, ///<
92  LayerId = 87, ///<
93  WinputCode = 88, ///<
94  StructNr = 89, ///<
95  VertexId = 90, ///<
96  CurveParam = 91, ///<
97  EdgeOfFlightLine = 92, ///<
98  ScanDirection = 93, ///<
99  SigmaNormalFit = 94, ///<
100  ScanAngle = 95, ///< [radians] also: pan angle. Rotation of scanner head around primary axis of scanner (the only axis of 1-D scanners, for 2-D scanners: the pan angle)
101  TiltAngle = 96, ///< [radians] Rotation of scanner head around secondary axis of scanner (undefined for 1-D scanners)
102  Range = 97, ///<
103  PointLabel = 98, ///<
104  MarkedFlag = 99, ///<
105  EchoRatio = 111, ///<
106  ConstrainedFlag = 112, ///<
107  NormalEstimationMethod = 113, ///< Normal estimator id (0...simple, 1...robust, 2...FMCD)
108  NormalPtsGiven = 114, ///< Number of points given to the normal estimator
109  NormalPtsUsed = 115, ///< Number of points used in the normal estimator
110  NormalSigma0 = 116, ///< Sigma0 of normal estimation
111  NormalEigenvalue1 = 117, ///< Highest eigenvalue of normal estimation covariance matrix
112  NormalEigenvalue2 = 118, ///< Second highest eigenvalue of normal estimation covariance matrix
113  NormalEigenvalue3 = 119, ///< Third highest eigenvalue of normal estimation covariance matrix
114  Red = 122, ///< Red colour channel
115  Green = 123, ///< Green colour channel
116  Blue = 124, ///< Blue colour channel
117  InfraRed = 125, ///< Infrared (IR) colour channel
118  UltraViolet = 126, ///< Ultraviolet (UV) colour channel
119  PointCode = 127, ///< general alphanumeric point code
120  NormalizedZ = 128, ///< point height above DTM
121  FaceId = 129, ///< triangle faces id
122  SegmentID = 130, ///< unique segment id
123  SegmentPtsUsed = 131, ///< Number of points contributing to a single segment
124  ClassificationFlags = 132, ///< See LAS spec
125  Classification = 133, ///< See LAS spec
126  Reflectance = 134, ///<
127  CumulativeDistance = 136, ///< See Riegl POF Format Spec.)
128  NormalPlaneOffset = 137, ///< Offset from the current point to the estimated local plane
129  WaterDepth = 138, ///< Water depth of a submerged (bathymetric lidar) point
130  X0 = 139, ///< Exterior reference point as defined by ORIENT
131  Y0 = 140, ///< Exterior reference point as defined by ORIENT
132  Z0 = 141, ///< Exterior reference point as defined by ORIENT
133  OmegaAngle = 142, ///< [radians] Rotation angle as defined by ORIENT
134  PhiAngle = 143, ///< [radians] Rotation angle as defined by ORIENT
135  KappaAngle = 144, ///< [radians] Rotation angle as defined by ORIENT
136  count ///< last column element
137  };
138 }
139 
140 /// echo class types
141 namespace EchoClass {
142  enum Type {
143  unknown = -1,
144  intermediate = 0,
145  last = 1,
146  first = 2,
147  single = 3
148  };
149 }
150 
151 /// orientation enum
152 namespace Orientation {
153  enum Type {
154  cw = -1, ///< clockwise
155  undefined = 0, ///< orientation undefined
156  ccw = 1 ///< counterclockwise
157  };
158 }
159 
160 }
161 
162 #endif //DM_COLUMN_TYPES_HPP_INCLUDED