MCPcopy Create free account
hub / github.com/PDAL/PDAL / buildHdrFromPoints

Function buildHdrFromPoints

io/FbiWriter.cpp:63–172  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

61std::string FbiWriter::getName() const { return s_info.name; }
62
63void buildHdrFromPoints(fbi::FbiHdr& hdr, const PointViewPtr view)
64{
65 hdr.Version = 1;
66 hdr.HdrSize = 1808; // by construction
67 hdr.TimeType = 1; // standard time by default
68 hdr.Order = 0; // order is not know
69 hdr.Reserved1 = 0; // Not use for now
70
71 // no additional values in this fbi export (for manage by terrascan for now)
72 hdr.VlrCnt = 0;
73 hdr.VlrSize = 0;
74 hdr.RecSize = 0;
75
76 hdr.FastCnt = view->size();
77 hdr.RecCnt = 0; // no additional points in this fbi export
78
79 BOX3D box;
80 view->calculateBounds(box);
81
82 hdr.MinX = box.minx;
83 hdr.MaxX = box.maxx;
84 hdr.MinY = box.miny;
85 hdr.MaxY = box.maxy;
86 hdr.MinZ = box.minz;
87 hdr.MaxZ = box.maxz;
88
89 // By default for now
90 hdr.UnitsXyz = 100;
91 hdr.UnitsDistance = 0;
92
93 hdr.OrgX = std::abs(hdr.MinX)-1;
94 hdr.OrgY = std::abs(hdr.MinY)-1;
95 hdr.OrgZ = std::abs(hdr.MinZ)-1;
96
97 hdr.BitsX = 32;
98 hdr.BitsY = 32;
99 hdr.BitsZ = 32;
100
101 hdr.BitsTime = ( view->hasDim(Dimension::Id::OffsetTime) ? 64 : 0 );
102 hdr.BitsGroup = ( view->hasDim(Dimension::Id::ClusterID) ? 32 : 0 );
103 hdr.BitsIntensity = ( view->hasDim(Dimension::Id::Intensity) ? 16 : 0 );
104 hdr.BitsScanner = ( view->hasDim(Dimension::Id::UserData) ? 8 : 0 );
105 hdr.BitsEcho = ( view->hasDim(Dimension::Id::ReturnNumber) ? 8 : 0 );
106
107 // Fbi only accept 8 bits ScanAngleRank
108 hdr.BitsAngle = ( view->hasDim(Dimension::Id::ScanAngleRank)
109 && view->dimType(Dimension::Id::ScanAngleRank)== Dimension::Type::Signed8 ? 8 : 0 );
110
111 hdr.BitsClass = ( view->hasDim(Dimension::Id::Classification) ? 8 : 0 );
112 hdr.BitsLine = ( view->hasDim(Dimension::Id::PointSourceId) ? 16 : 0 );
113 hdr.BitsEchoLen = ( view->hasDim(Dimension::Id::ReturnNumber) ? 16 : 0 );
114
115 hdr.BitsColor = 0; int NbCanal (0);
116 if ( view->hasDim(Dimension::Id::Red) && view->hasDim(Dimension::Id::Blue) && view->hasDim(Dimension::Id::Green) )
117 {
118 hdr.BitsColor = 8*view->dimSize(Dimension::Id::Red);
119 assert ( hdr.BitsColor == 8*view->dimSize(Dimension::Id::Blue) );
120 assert ( hdr.BitsColor == 8*view->dimSize(Dimension::Id::Green) );

Callers 1

writeMethod · 0.85

Calls 5

calculateBoundsMethod · 0.80
hasDimMethod · 0.80
dimSizeMethod · 0.80
sizeMethod · 0.45
dimTypeMethod · 0.45

Tested by

no test coverage detected