PointClouds.jl

Fast & flexible processing of lidar point-cloud data
Author efpl-columbia
Popularity
2 Stars
Updated Last
4 Months Ago
Started In
February 2024

PointClouds.jl

Fast & flexible processing of lidar data

PointClouds.jl lets you query publicly available lidar point-cloud datasets, download the data for regions of interest, and explore & process the data locally. You can access all attributes stored in LAS/LAZ files and construct purpose-built processing pipelines that extract information about the local environment from point-cloud data.

Features & Goals

Online Documentation

PointClouds.jl aims to provide all functionality for an ergonomic, high-performance workflow to acquire and process point-cloud data. The initial development is focused on producing robust primitives for such a workflow. Over time, we expect the functionality to expand, building out a comprehensive library of point-cloud processing algorithms similar to PDAL and lidR.

  • spatial queries of the USGS 3DEP lidar data with near-total coverage of the United States
  • reading & writing LAS/LAZ files (v1.0 – v1.4), including files that do not fit into memory
  • lazy filtering & updating of LAS/LAZ points
  • parsing LAS coordinate reference system (CRS) data in WKT & GeoTIFF formats; coordinate transforms
  • multi-threaded in-memory processing of point-cloud data, including neighborhood-based processing
  • rasterization of point-cloud data based on points within pixel footprint, points within radius of pixel center, and k nearest neighbors of pixel center

For more details, see the documentation.

Quickstart

To start using PointClouds.jl, add it to a Julia environment e.g. using the Pkg REPL:

(@v1.10) pkg> add PointClouds

Tip

Since PointClouds.jl is rather new and under active development, backwards-incompatible changes may occur regularly. It is therefore recommended to add a specific version to your Julia environment (e.g. with Pkg.compat or Pkg.pin and to be careful when updating to new (non-patch) versions.

After that, the package can be loaded as usual:

julia> using PointClouds

Load a LAS/LAZ file to access the point data:

julia> pts = LAS("USGS_LPC_Sandy_Supplemental_NCR_VA_MD_DC_QL2_LiDAR_18SUJ322306.laz")
16,107,898-point LAZ (v1.2, PDRF 1, 01 Jun 2015)
  Source ID     => 65535
  Project ID    => AEB2BAA1-2BEF-41FC-B9BB-BDA288E8D77B
  System ID     => ""
  Software ID   => "GeoCue LAS Updater"
  X-Coordinates => 322500.0 … 323999.99
  Y-Coordinates => 4.3065e6 … 4.30799999e6
  Z-Coordinates => -88.88 … 767.73
  Return-Counts => [1 => 13,783,924, 2 => 1,993,048, 3 => 310,661, 4 => 19,622, 5 => 643]
  Extra Data    => [0x00, 0x00, 0xdd, 0xcc]
  Variable-Length Records
    => LASF_Projection[34735] "GeoTiff Projection Keys" (200 bytes)
    => LASF_Projection[34736] "GeoTiff double parameters" (80 bytes)
    => LASF_Projection[34737] "GeoTiff ASCII parameters" (217 bytes)

Refer to the documentation to learn how to work with LAS/LAZ data, load point data from public datasets, and set up in-memory processing pipelines. Follow the tutorial for a more in-depth introduction.

Help & Contributing

If you run into a problem or would like to request a new feature, feel free to create a new issue after checking the list of open issues.

We also welcome contributions to the code, the tests, and the documentation – feel free to open a pull request. If you want to make sure your work fits within the plans and scope of PointClouds.jl, it might be best to first open an issue or draft PR to discuss the changes, especially when a significant amount of work is involved.

Attribution & License

MIT License

PointClouds.jl is freely available under the terms of the MIT License.