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

Method write

io/FbiWriter.cpp:276–519  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

274}
275
276void FbiWriter::write(const PointViewPtr view)
277{
278 buildHdrFromPoints(*hdr, view);
279
280 PointRef point(*view, 0);
281
282 std::ostream* ofFBI = Utils::createFile(filename(), true);
283
284 writeFbiHeader(*hdr.get(), ofFBI);
285
286 assert(hdr->UnitsXyz > 0);
287 double Mul = 1.0 / hdr->UnitsXyz;
288
289 for (PointId i = 0; i < view->size(); ++i)
290 {
291 point.setPointId(i);
292 double X = point.getFieldAs<double>(Dimension::Id::X);
293 double Y = point.getFieldAs<double>(Dimension::Id::Y);
294 double Z = point.getFieldAs<double>(Dimension::Id::Z);
295
296 fbi::UINT xr = (fbi::UINT) ((X - hdr->OrgX)*Mul);
297 fbi::UINT yr = (fbi::UINT) ((Y - hdr->OrgY)*Mul);
298 fbi::UINT zr = (fbi::UINT) ((Z - hdr->OrgZ)*Mul);
299
300 ofFBI->write(reinterpret_cast<const char *>(&xr), hdr->BitsX/8);
301 ofFBI->write(reinterpret_cast<const char *>(&yr), hdr->BitsY/8);
302 ofFBI->write(reinterpret_cast<const char *>(&zr), hdr->BitsZ/8);
303 }
304
305 if (hdr->BitsTime > 0)
306 {
307 for (PointId i = 0; i < view->size(); ++i)
308 {
309 point.setPointId(i);
310 uint64_t time = point.getFieldAs<uint64_t>(Dimension::Id::OffsetTime);
311 ofFBI->write(reinterpret_cast<const char *>(&time), hdr->BitsTime/8);
312 }
313 }
314
315 if (hdr->BitsDistance > 0)
316 {
317 for (PointId i = 0; i < view->size(); ++i)
318 {
319 point.setPointId(i);
320 uint32_t distance = point.getFieldAs<uint32_t>(Dimension::Id::NNDistance);
321 ofFBI->write(reinterpret_cast<const char *>(&distance), hdr->BitsDistance/8);
322 }
323 }
324
325 if (hdr->BitsGroup > 0)
326 {
327 for (PointId i = 0; i < view->size(); ++i)
328 {
329 point.setPointId(i);
330 uint64_t cluster = point.getFieldAs<uint64_t>(Dimension::Id::ClusterID);
331 ofFBI->write(reinterpret_cast<const char *>(&cluster), hdr->BitsGroup/8);
332 }
333 }

Callers 1

writeFbiHeaderFunction · 0.45

Calls 9

buildHdrFromPointsFunction · 0.85
writeFbiHeaderFunction · 0.85
NrmVecSetFunction · 0.85
setPointIdMethod · 0.80
hasDimMethod · 0.80
createFileFunction · 0.50
closeFileFunction · 0.50
getMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected