pylas.vlrs.vlrlist module

class pylas.vlrs.vlrlist.VLRList(*args, **kwargs)[source]

Bases: list

Class responsible for managing the vlrs

index(value, start: int = 0, stop: int = None) → int[source]

Return first index of value.

Raises ValueError if the value is not present.

get_by_id(user_id='', record_ids=(None, ))[source]

Function to get vlrs by user_id and/or record_ids. Always returns a list even if only one vlr matches the user_id and record_id

>>> import pylas
>>> from pylas.vlrs.known import ExtraBytesVlr, WktCoordinateSystemVlr
>>> las = pylas.read("pylastests/extrabytes.las")
>>> las.vlrs
[<ExtraBytesVlr(extra bytes structs: 5)>]
>>> las.vlrs.get(WktCoordinateSystemVlr.official_user_id())
[]
>>> las.vlrs.get(WktCoordinateSystemVlr.official_user_id())[0]
Traceback (most recent call last):
IndexError: list index out of range
>>> las.vlrs.get_by_id(ExtraBytesVlr.official_user_id())
[<ExtraBytesVlr(extra bytes structs: 5)>]
>>> las.vlrs.get_by_id(ExtraBytesVlr.official_user_id())[0]
<ExtraBytesVlr(extra bytes structs: 5)>
Parameters:
  • user_id (str, optional) – the user id
  • record_ids (iterable of int, optional) – THe record ids of the vlr(s) you wish to get
Returns:

a list of vlrs matching the user_id and records_ids

Return type:

list

get(vlr_type: str) → List[pylas.vlrs.known.IKnownVLR][source]

Returns the list of vlrs of the requested type Always returns a list even if there is only one VLR of type vlr_type.

>>> import pylas
>>> las = pylas.read("pylastests/extrabytes.las")
>>> las.vlrs
[<ExtraBytesVlr(extra bytes structs: 5)>]
>>> las.vlrs.get("WktCoordinateSystemVlr")
[]
>>> las.vlrs.get("WktCoordinateSystemVlr")[0]
Traceback (most recent call last):
IndexError: list index out of range
>>> las.vlrs.get('ExtraBytesVlr')
[<ExtraBytesVlr(extra bytes structs: 5)>]
>>> las.vlrs.get('ExtraBytesVlr')[0]
<ExtraBytesVlr(extra bytes structs: 5)>
Parameters:vlr_type (str) – the class name of the vlr
Returns:a List of vlrs matching the user_id and records_ids
Return type:list
extract(vlr_type: str) → List[pylas.vlrs.known.IKnownVLR][source]

Returns the list of vlrs of the requested type The difference with get is that the returned vlrs will be removed from the list

Parameters:vlr_type (str) – the class name of the vlr
Returns:a List of vlrs matching the user_id and records_ids
Return type:list
classmethod read_from(data_stream: BinaryIO, num_to_read: int, extended: bool = False) → pylas.vlrs.vlrlist.VLRList[source]

Reads vlrs and parse them if possible from the stream

Parameters:
  • data_stream (io.BytesIO) – stream to read from
  • num_to_read (int) – number of vlrs to be read
  • extended (bool) – whether the vlrs are regular vlr or extended vlr
Returns:

List of vlrs

Return type:

pylas.vlrs.vlrlist.VLRList

write_to(stream: BinaryIO, as_extended: bool = False) → int[source]