alsdb.ALSTile#

class alsdb.ALSTile(path: str | Path, classification_filter: list[int] | None = None, reclassify: bool = False, ground_classifier: str = 'csf', denoise: bool = False, reproject_to: str | None = None, hag_low: float = 0.5, hag_med: float = 2.0, hag_high: float = 5.0)[source]#

Processes a single LAZ tile into arrays ready for TileDB ingestion.

Wraps Tile and applies optional reprojection, reclassification, and point filtering before handing data to ALSDatabase.

Parameters:
  • path – Path to the .laz file.

  • classification_filter – If provided, only points whose Classification code is in this list are passed through.

  • reclassify – If True, run ground classification + HAG to assign ground (class 2) and vegetation (classes 3/4/5) labels to unclassified (class 1) points. Thresholds are always in metres; use together with reproject_to for non-metric source files.

  • ground_classifier

    Algorithm used for ground classification when reclassify=True.

    • "csf" (default) — Cloth Simulation Filter (Zhang et al. 2016). Good general-purpose choice; handles gentle-to-moderate terrain well.

    • "pmf" — Progressive Morphological Filter (Zhang et al. 2003), PDAL’s filters.pmf. More robust on steep or complex terrain (analogous to Axelsson 2000 PTD).

  • denoise

    If True, run noise detection before reclassification:

    • filters.elm flags below-ground outliers as class 7.

    • filters.outlier (radius method) flags isolated points as class 7.

    These class-7 points are then excluded from the ground classifier and HAG computation. Useful when the source LAZ has no pre-existing noise classification (classes 7/18 not set).

  • reproject_to

    Target CRS for the output points.

    • None (default) — keep native CRS, no reprojection.

    • "auto" — detect feet-based CRS and reproject to the appropriate WGS 84 UTM zone; metric CRS files are left unchanged.

    • "EPSG:XXXX" — reproject to an explicit CRS.

__init__(path: str | Path, classification_filter: list[int] | None = None, reclassify: bool = False, ground_classifier: str = 'csf', denoise: bool = False, reproject_to: str | None = None, hag_low: float = 0.5, hag_med: float = 2.0, hag_high: float = 5.0) None[source]#

Methods

__init__(path[, classification_filter, ...])

iter_chunks([chunk_size])

Yield (x, y, attrs) tuples ready for writing to TileDB.

Attributes

name

target_crs

CRS of the data after ingestion (native or reprojected).

tile