本文整理汇总了C++中PointView::getPackedPoint方法的典型用法代码示例。如果您正苦于以下问题:C++ PointView::getPackedPoint方法的具体用法?C++ PointView::getPackedPoint怎么用?C++ PointView::getPackedPoint使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PointView
的用法示例。
在下文中一共展示了PointView::getPackedPoint方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: readPoint
/// Read a point's data packed into a buffer.
/// \param[in] view PointView to read from.
/// \param[in] idx Index of point to read.
/// \param[in] outbuf Buffer to write to.
/// \return Number of bytes written to buffer.
size_t DbWriter::readPoint(const PointView& view, PointId idx, char *outbuf)
{
view.getPackedPoint(m_dimTypes, idx, outbuf);
auto iconvert = [](const XForm& xform, const char *inpos, char *outpos)
{
double d;
int32_t i;
memcpy(&d, inpos, sizeof(double));
d = (d - xform.m_offset) / xform.m_scale;
i = boost::numeric_cast<int32_t>(lround(d));
memcpy(outpos, &i, sizeof(int32_t));
};
if (m_locationScaling)
{
int outOffset;
if (m_xPackedOffset >= 0)
outOffset = m_xPackedOffset;
else if (m_yPackedOffset >= 0)
outOffset = m_yPackedOffset;
else if (m_zPackedOffset >= 0)
outOffset = m_zPackedOffset;
else
outOffset = m_packedPointSize; //So we return the proper size.
if (m_xPackedOffset >= 0)
{
iconvert(m_xXform, outbuf + m_xPackedOffset, outbuf + outOffset);
outOffset += sizeof(int);
}
if (m_yPackedOffset >= 0)
{
iconvert(m_yXform, outbuf + m_yPackedOffset, outbuf + outOffset);
outOffset += sizeof(int);
}
if (m_zPackedOffset >= 0)
{
iconvert(m_zXform, outbuf + m_zPackedOffset, outbuf + outOffset);
outOffset += sizeof(int);
}
return outOffset;
}
else
return m_packedPointSize;
}
示例2: readPoint
/// Read a point's data packed into a buffer.
/// \param[in] view PointView to read from.
/// \param[in] idx Index of point to read.
/// \param[in] outbuf Buffer to write to.
/// \return Number of bytes written to buffer.
size_t DbWriter::readPoint(const PointView& view, PointId idx, char *outbuf)
{
using namespace Dimension;
// Read the data for the output dimensions from the view into the outbuf.
view.getPackedPoint(m_dimTypes, idx, outbuf);
auto iconvert = [](const XForm& xform, Id::Enum dim,
const char *inpos, char *outpos)
{
double d;
int32_t i;
memcpy(&d, inpos, sizeof(double));
d = (d - xform.m_offset) / xform.m_scale;
if (!Utils::numericCast(d, i))
{
std::ostringstream oss;
oss << "Unable to convert double to int32 for packed DB output: ";
oss << Dimension::name(dim) << ": (" << d << ").";
throw pdal_error(oss.str());
}
memcpy(outpos, &i, sizeof(int32_t));
};
if (m_xOffsets.first >= 0)
iconvert(m_xXform, Id::X, outbuf + m_xOffsets.first,
outbuf + m_xOffsets.second);
if (m_yOffsets.first >= 0)
iconvert(m_yXform, Id::Y, outbuf + m_yOffsets.first,
outbuf + m_yOffsets.second);
if (m_zOffsets.first >= 0)
iconvert(m_zXform, Id::Z, outbuf + m_zOffsets.first,
outbuf + m_zOffsets.second);
return m_dbPointSize;
}