CGAL 5.3 - Point Set Processing

Read and write points (with or without additional properties) in LAS format.

Functions

template<typename PointMap >
std::tuple< PointMap, typename Kernel_traits< typename PointMap::value_type >::Kernel::Construct_point_3, LAS_property::X, LAS_property::Y, LAS_property::Z > CGAL::IO::make_las_point_reader (PointMap point_map)
 Generates a LAS property handler to read 3D points. More...
 
template<typename OutputIteratorValueType , typename PointOutputIterator , typename ... PropertyHandler>
bool CGAL::IO::read_LAS_with_properties (std::istream &is, PointOutputIterator output, PropertyHandler &&... properties)
 reads user-selected points properties from a .las or .laz stream. More...
 
template<typename OutputIteratorValueType , typename PointOutputIterator , typename NamedParameters >
bool CGAL::IO::read_LAS (std::istream &is, PointOutputIterator output, const NamedParameters &np)
 reads points (position only) using the LAS (Lidar) File Format. More...
 
template<typename OutputIteratorValueType , typename PointOutputIterator , typename NamedParameters >
bool CGAL::IO::read_LAS (const std::string &filename, PointOutputIterator output, const NamedParameters &np)
 reads points (position only) using the LAS (Lidar) File Format. More...
 
template<typename PointMap >
std::tuple< PointMap, LAS_property::X, LAS_property::Y, LAS_property::Z > CGAL::IO::make_las_point_writer (PointMap point_map)
 generates a LAS property handler to write 3D points. More...
 
template<typename PointRange , typename PointMap , typename ... PropertyHandler>
bool CGAL::IO::write_LAS_with_properties (std::ostream &os, const PointRange &points, std::tuple< PointMap, LAS_property::X, LAS_property::Y, LAS_property::Z > point_property, PropertyHandler &&... properties)
 writes the range of points with properties to a .las stream. More...
 
template<typename PointRange , typename NamedParameters >
bool CGAL::IO::write_LAS (std::ostream &os, const PointRange &points, const NamedParameters &np)
 writes the range of points (positions only), using the LAS (Lidar) File Format. More...
 
template<typename PointRange , typename NamedParameters >
bool CGAL::IO::write_LAS (const std::string &filename, const PointRange &points, const NamedParameters &np)
 Saves the range of points (positions only), using the LAS (Lidar) File Format. More...
 

Function Documentation

◆ make_las_point_reader()

template<typename PointMap >
std::tuple<PointMap, typename Kernel_traits<typename PointMap::value_type>::Kernel::Construct_point_3, LAS_property::X, LAS_property::Y, LAS_property::Z > CGAL::IO::make_las_point_reader ( PointMap  point_map)

#include <CGAL/IO/read_las_points.h>

Generates a LAS property handler to read 3D points.

Points are constructed from the input the using 3 LAS properties LAS_property::X, LAS_property::Y and LAS_property::Z.

Template Parameters
PointMapthe property map used to store points.
See also
read_LAS_with_properties()
LAS (Lidar) File Format
Examples:
Point_set_processing_3/orient_scanlines_example.cpp, and Point_set_processing_3/read_las_example.cpp.

◆ make_las_point_writer()

template<typename PointMap >
std::tuple<PointMap, LAS_property::X, LAS_property::Y, LAS_property::Z > CGAL::IO::make_las_point_writer ( PointMap  point_map)

#include <CGAL/IO/write_las_points.h>

generates a LAS property handler to write 3D points.

Template Parameters
PointMapthe property map used to store points.
See also
write_LAS()
LAS (Lidar) File Format

◆ read_LAS() [1/2]

template<typename OutputIteratorValueType , typename PointOutputIterator , typename NamedParameters >
bool CGAL::IO::read_LAS ( std::istream &  is,
PointOutputIterator  output,
const NamedParameters &  np 
)

#include <CGAL/IO/read_las_points.h>

reads points (position only) using the LAS (Lidar) File Format.

Potential additional properties are ignored.

Attention
When reading a binary file, the flag std::ios::binary flag must be set during the creation of the ifstream.
Template Parameters
OutputIteratorValueTypetype of objects that can be put in PointOutputIterator. It must be a model of DefaultConstructible and defaults to value_type_traits<PointOutputIterator>::type. It can be omitted when the default is fine.
PointOutputIteratoriterator over output points.
NamedParametersa sequence of Named Parameters
Parameters
isinput stream
outputoutput iterator over points
npan optional sequence of Named Parameters among the ones listed below
Optional Named Parameters

Returns
true if reading was successful, false otherwise.
See also
read_LAS_with_properties()

◆ read_LAS() [2/2]

template<typename OutputIteratorValueType , typename PointOutputIterator , typename NamedParameters >
bool CGAL::IO::read_LAS ( const std::string &  filename,
PointOutputIterator  output,
const NamedParameters &  np 
)

#include <CGAL/IO/read_las_points.h>

reads points (position only) using the LAS (Lidar) File Format.

Potential additional properties are ignored.

Template Parameters
OutputIteratorValueTypetype of objects that can be put in PointOutputIterator. It must be a model of DefaultConstructible and defaults to value_type_traits<PointOutputIterator>::type. It can be omitted when the default is fine.
PointOutputIteratoriterator over output points.
NamedParametersa sequence of Named Parameters
Parameters
filenamename of the input file
outputoutput iterator over points
npan optional sequence of Named Parameters among the ones listed below
Optional Named Parameters

Returns
true if reading was successful, false otherwise.
See also
read_LAS_with_properties()

◆ read_LAS_with_properties()

template<typename OutputIteratorValueType , typename PointOutputIterator , typename ... PropertyHandler>
bool CGAL::IO::read_LAS_with_properties ( std::istream &  is,
PointOutputIterator  output,
PropertyHandler &&...  properties 
)

#include <CGAL/IO/read_las_points.h>

reads user-selected points properties from a .las or .laz stream.

Potential additional properties are ignored.

Properties are handled through a variadic list of property handlers. A PropertyHandler can either be:

  • A std::pair<PropertyMap, LAS_property::Tag > if the user wants to read a LAS property as a scalar value LAS_property::Tag::type (for example, storing an int LAS property into an int variable).
  • A std::tuple<PropertyMap, Constructor, LAS_property::Tag...> if the user wants to use one or several LAS properties to construct a complex object (for example, storing 4 unsigned short LAS properties into a Color object that can for example be a std::array<unsigned short, 4>). In that case, the second element of the tuple should be a functor that constructs the value type of PropertyMap from N objects of of type LAS_property::Tag::type.

The LAS standard defines a fixed set of properties accessible through the following tag classes:

  • LAS_property::X with type double
  • LAS_property::Y with type double
  • LAS_property::Z with type double
  • LAS_property::Intensity with type unsigned short
  • LAS_property::Return_number with type unsigned char
  • LAS_property::Number_of_returns with type unsigned char
  • LAS_property::Scan_direction_flag with type unsigned char
  • LAS_property::Edge_of_flight_line with type unsigned char
  • LAS_property::Classification with type unsigned char
  • LAS_property::Synthetic_flag with type unsigned char
  • LAS_property::Keypoint_flag with type unsigned char
  • LAS_property::Withheld_flag with type unsigned char
  • LAS_property::Scan_angle with type double
  • LAS_property::User_data with type unsigned char
  • LAS_property::Point_source_ID with type unsigned short
  • LAS_property::Deleted_flag with type unsigned int
  • LAS_property::GPS_time with type double
  • LAS_property::R with type unsigned short
  • LAS_property::G with type unsigned short
  • LAS_property::B with type unsigned short
  • LAS_property::I with type unsigned short
Attention
When reading a binary file, the flag std::ios::binary flag must be set during the creation of the ifstream.
Template Parameters
OutputIteratorValueTypetype of objects that can be put in PointOutputIterator. It must be a model of DefaultConstructible and defaults to value_type_traits<PointOutputIterator>::type. It can be omitted if the default is fine.
PointOutputIteratoriterator over output points.
PropertyHandlerhandlers to recover properties.
Returns
true if reading was successful, false otherwise.
See also
make_las_point_reader()
LAS (Lidar) File Format
Examples:
Point_set_processing_3/orient_scanlines_example.cpp, and Point_set_processing_3/read_las_example.cpp.

◆ write_LAS() [1/2]

template<typename PointRange , typename NamedParameters >
bool CGAL::IO::write_LAS ( std::ostream &  os,
const PointRange &  points,
const NamedParameters &  np 
)

#include <CGAL/IO/write_las_points.h>

writes the range of points (positions only), using the LAS (Lidar) File Format.

Attention
When writing a binary file, the flag std::ios::binary flag must be set during the creation of the ofstream.
Template Parameters
PointRangeis a model of ConstRange. The value type of its iterator is the key type of the named parameter point_map.
NamedParametersa sequence of Named Parameters
Parameters
osoutput stream
pointsinput point range
npan optional sequence of Named Parameters among the ones listed below
Optional Named Parameters

Returns
true if writing was successful, false otherwise.
See also
LAS (Lidar) File Format
write_LAS_with_properties()

◆ write_LAS() [2/2]

template<typename PointRange , typename NamedParameters >
bool CGAL::IO::write_LAS ( const std::string &  filename,
const PointRange &  points,
const NamedParameters &  np 
)

#include <CGAL/IO/write_las_points.h>

Saves the range of points (positions only), using the LAS (Lidar) File Format.

Template Parameters
PointRangeis a model of ConstRange. The value type of its iterator is the key type of the named parameter point_map.
NamedParametersa sequence of Named Parameters
Parameters
filenamethe path the output file
pointsinput point range
npan optional sequence of Named Parameters among the ones listed below
Optional Named Parameters

Returns
true if writing was successful, false otherwise.
See also
write_LAS_with_properties()

◆ write_LAS_with_properties()

template<typename PointRange , typename PointMap , typename ... PropertyHandler>
bool CGAL::IO::write_LAS_with_properties ( std::ostream &  os,
const PointRange &  points,
std::tuple< PointMap, LAS_property::X, LAS_property::Y, LAS_property::Z >  point_property,
PropertyHandler &&...  properties 
)

#include <CGAL/IO/write_las_points.h>

writes the range of points with properties to a .las stream.

Properties are handled through a variadic list of property handlers. A PropertyHandle is a std::pair<PropertyMap, LAS_property::Tag > used to write a scalar value LAS_property::Tag::type as a LAS property (for example, writing an int vairable as an int LAS property). An exception is used for points that are written using a std::tuple object.

See documentation of read_LAS_with_properties() for the list of available LAS_property::Tag classes.

Attention
When writing a binary file, the flag std::ios::binary flag must be set during the creation of the ofstream.
Template Parameters
PointRangeis a model of ConstRange. The value type of its iterator is the key type of the named parameter point_map.
PointMapis a model of ReadablePropertyMap with a value_type = CGAL::Point_3.
PropertyHandlerhandlers to recover properties.
Returns
true if writing was successful, false otherwise.
See also
make_las_point_writer()
LAS (Lidar) File Format
Parameters
osoutput stream.
pointsinput point range.
point_propertyproperty handler for points
propertiesparameter pack of property handlers