#include <array>
#include <vector>
#include <cstdint>
#include <iostream>
#include <exception>
int main()
{
try
{
rdb.
open(
"pointcloud.rdbx", settings);
static const uint32_t BUFFER_SIZE = 10000;
std::vector< uint64_t > bufferPointNumber(BUFFER_SIZE);
std::vector< std::array<double, 3> > bufferCoordinates(BUFFER_SIZE);
std::vector< float > bufferAmplitude (BUFFER_SIZE);
std::vector< float > bufferReflectance(BUFFER_SIZE);
std::vector< std::array<uint8_t, 4> > bufferTrueColor (BUFFER_SIZE);
std::vector< uint16_t > bufferPointClass (BUFFER_SIZE);
#if 0
""
#else
"(riegl.class == 3) && (riegl.xyz[2] > 5.0)"
#endif
);
using namespace riegl::rdb::pointcloud;
select.
bindBuffer(RDB_RIEGL_ID, bufferPointNumber);
select.
bindBuffer(RDB_RIEGL_XYZ, bufferCoordinates);
select.
bindBuffer(RDB_RIEGL_AMPLITUDE, bufferAmplitude);
select.
bindBuffer(RDB_RIEGL_REFLECTANCE, bufferReflectance);
select.
bindBuffer(RDB_RIEGL_RGBA, bufferTrueColor);
select.
bindBuffer(RDB_RIEGL_CLASS, bufferPointClass);
while (
const uint32_t count = select.
next(BUFFER_SIZE))
{
for (uint32_t i = 0; i < count; i++)
{
std::cout << bufferPointNumber[i] << ","
<< bufferCoordinates[i][0] << ","
<< bufferCoordinates[i][1] << ","
<< bufferCoordinates[i][2] << ","
<< bufferAmplitude [i] << ","
<< bufferReflectance[i] << ","
<< int(bufferTrueColor [i][0]) << ","
<< int(bufferTrueColor [i][1]) << ","
<< int(bufferTrueColor [i][2]) << ","
<< bufferPointClass [i] << std::endl;
}
}
return 0;
}
{
std::cerr << error.
what() <<
" (" << error.
details() <<
")" << std::endl;
return 1;
}
catch(const std::exception &error)
{
std::cerr << error.what() << std::endl;
return 1;
}
}