void SbetReader::ready(PointTableRef) { size_t fileSize = FileUtils::fileSize(m_filename); size_t pointSize = getDefaultDimensions().size() * sizeof(double); if (fileSize % pointSize != 0) throw pdal_error("invalid sbet file size"); m_numPts = fileSize / pointSize; m_index = 0; m_stream.reset(new ILeStream(m_filename)); m_dims = fileDimensions(); seek(m_index); }
void SbetWriter::write(const PointViewPtr view) { Dimension::IdList dims = fileDimensions(); for (PointId idx = 0; idx < view->size(); ++idx) { for (auto di = dims.begin(); di != dims.end(); ++di) { // If a dimension doesn't exist, write 0. Dimension::Id dim = *di; *m_stream << (view->hasDim(dim) ? view->getFieldAs<double>(dim, idx) : 0.0); } } }