pylas package

Re-exported functions

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

Entry point for reading las data in pylas

Reads the whole file into memory.

>>> las = read_las("pylastests/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 pylas 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:

pylas.lasdatas.base.LasBase

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

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

  • “r” => Reading => a pylas.LasReader will be returned
  • “w” => Writing => a pylas.LasWriter will be returned
  • “a” => Appending => a pylas.LasAppender will be returned

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

>>> with open_las('pylastests/simple.las') as f:
...     print(f.header.point_format.id)
3
>>> f = open('pylastests/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('pylastests/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
pylas.create(*, point_format: Union[pylas.point.format.PointFormat, int, None] = None, file_version: Union[pylas.header.Version, str, None] = 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):
 ...
pylas.errors.PylasError: 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:

pylas.lasdatas.base.LasBase

pylas.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('pylastests/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('pylastests/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('pylastests/simple.las')
>>> convert(las, point_format_id=6, file_version='1.2')
Traceback (most recent call last):
 ...
pylas.errors.PylasError: Point format 6 is not compatible with file version 1.2
Parameters:
  • source_las (pylas.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:

pylas.lasdatas.base.LasBase