laspy package

Re-exported functions

laspy.read(source, closefd=True, laz_backend=())

Entry point for reading las data in laspy

Reads the whole file into memory.

>>> las = read_las("tests/simple.las")
>>> las.classification
<SubFieldView([1 1 1 ... 1 1 1])>
Parameters
  • source (str or io.BytesIO) – The source to read data from

  • laz_backend (Optional, the backend to use when the file is as LAZ file.) – By default laspy will find the backend to use by himself. Use if you wan a specific backend to be used

  • closefd (bool) – if True and the source is a stream, the function will close it after it is done reading

Returns

The object you can interact with to get access to the LAS points & VLRs

Return type

laspy.lasdatas.base.LasBase

laspy.open(source, mode='r', closefd=True, laz_backend=None, header=None, do_compress=None)Union[laspy.lasreader.LasReader, laspy.laswriter.LasWriter, laspy.lasappender.LasAppender]

The laspy.open opens a LAS/LAZ file in one of the 3 supported mode:

  • “r” => Reading => a laspy.LasReader will be returned

  • “w” => Writing => a laspy.LasWriter will be returned

  • “a” => Appending => a laspy.LasAppender will be returned

When opening a file in ‘w’ mode, a header (laspy.LasHeader) is required

>>> with open_las('tests/simple.las') as f:
...     print(f.header.point_format.id)
3
>>> f = open('tests/simple.las', mode='rb')
>>> with open_las(f,closefd=False) as flas:
...     print(flas.header)
<LasHeader(1.2, <PointFormat(3, 0 bytes of extra dims)>)>
>>> f.closed
False
>>> f.close()
>>> f.closed
True
>>> f = open('tests/simple.las', mode='rb')
>>> with open_las(f) as flas:
...    las = flas.read()
>>> f.closed
True
Parameters
  • source (str or bytes or io.BytesIO) – if source is a str it must be a filename

  • mode (Optional, the mode to open the file:) –

    • “r” for reading (default)

    • ”w” for writing

    • ”a” for appending

  • laz_backend (Optional, the LAZ backend to use to handle decompression/comression) – By default available backends are detected, see LazBackend to see the preference order when multiple backends are available

  • header (The header to use when opening in write mode.) –

  • do_compress (optional, bool, only meaningful in writing mode:) –

    • None (default) guess if compression is needed using the file extension

    or if a laz_backend was explicitely provided - True compresses the file - False do not compress the file

  • closefd (optional, bool, True by default) – Whether the stream/file object shall be closed, this only work when using open_las in a with statement. An exception is raised if closefd is specified and the source is a filename

laspy.create(*, point_format: Optional[Union[laspy.point.format.PointFormat, int]] = None, file_version: Optional[Union[laspy.header.Version, str]] = None)

Function to create a new empty las data object

Note

If you provide both point_format and file_version an exception will be raised if they are not compatible

>>> las = create_las(point_format=6,file_version="1.2")
Traceback (most recent call last):
 ...
laspy.errors.LaspyException: Point format 6 is not compatible with file version 1.2

If you provide only the point_format the file_version will automatically selected for you.

>>> las = create_las(point_format=0)
>>> las.header.version == '1.2'
True
>>> las = create_las(point_format=PointFormat(6))
>>> las.header.version == '1.4'
True
Parameters
  • point_format – The point format you want the created file to have

  • file_version – The las version you want the created las to have

Returns

A new las data object

Return type

laspy.lasdatas.base.LasBase

laspy.convert(source_las, *, point_format_id=None, file_version=None)[source]

Converts a Las from one point format to another Automatically upgrades the file version if source file version is not compatible with the new point_format_id

convert to point format 0

>>> las = read_las('tests/simple.las')
>>> las.header.version
Version(major=1, minor=2)
>>> las = convert(las, point_format_id=0)
>>> las.header.point_format.id
0
>>> str(las.header.version)
'1.2'

convert to point format 6, which need version >= 1.4 then convert back to point format 0, version is not downgraded

>>> las = read_las('tests/simple.las')
>>> str(las.header.version)
'1.2'
>>> las = convert(las, point_format_id=6)
>>> las.header.point_format.id
6
>>> str(las.header.version)
'1.4'
>>> las = convert(las, point_format_id=0)
>>> str(las.header.version)
'1.4'

an exception is raised if the requested point format is not compatible with the file version

>>> las = read_las('tests/simple.las')
>>> convert(las, point_format_id=6, file_version='1.2')
Traceback (most recent call last):
 ...
laspy.errors.LaspyException: Point format 6 is not compatible with file version 1.2
Parameters
  • source_las (laspy.lasdatas.base.LasBase) – The source data to be converted

  • point_format_id (int, optional) – The new point format id (the default is None, which won’t change the source format id)

  • file_version (str, optional,) – The new file version. None by default which means that the file_version may be upgraded for compatibility with the new point_format. The file version will not be downgraded.

Returns

Return type

laspy.lasdatas.base.LasBase