pointclouds
Read, filter, decimate and grid point clouds (LAS / LAZ, and COPC/EPT) in Python.
A point cloud is a set of 3-D measured points - typically from lidar or photogrammetry - each carrying x, y,
z plus per-point attributes such as intensity, return number and ASPRS classification. pointclouds reads the
standard exchange formats, exposes the header without touching the records, and provides the operations a cloud
needs before analysis or rendering: classification filtering, decimation, reprojection, and gridding to a raster
surface (DSM / DTM / density).
Install
pip install pointclouds # core: reads LAS/LAZ, grids to arrays, no GDAL required
pip install pointclouds[gis] # + pyramids-gis: to_dataset() / to_feature_collection()
pip install pointclouds[cloud] # + fsspec/s3fs: remote LAZ / COPC
pip install pointclouds[all] # everything
The core depends only on numpy, laspy, pyproj and scipy - no GDAL - so it installs anywhere numpy runs.
GIS interoperability (turning a cloud into a pyramids Dataset or FeatureCollection) is an optional extra.
Quick look
import pointclouds as pc
cloud = pc.PointCloud.read_file("survey.laz")
cloud.crs, cloud.bounds, cloud.count # from the header, no record read
xyz = cloud.to_array(("X", "Y", "Z")) # (N, 3) float64
# COPC: read a window instead of the whole cloud - only the chunks that overlap are decompressed
box = pc.PointCloud.read_window("survey.copc.laz", bbox=(155000, 463000, 156000, 464000))
coarse = pc.PointCloud.read_window("survey.copc.laz", resolution=5.0) # ~one point per 5 m
# EPT (Entwine): same windowed read, by directory or URL (remote needs the [cloud] extra)
box = pc.PointCloud.read_window("s3://bucket/survey-ept", bbox=(155000, 463000, 156000, 464000))
ground = cloud.filter(classification=2)
thin = ground.decimate(target=2_000_000, method="random")
arr, transform, crs = ground.to_grid(cell_size=1.0, aggregate="min") # pure NumPy
dtm = ground.to_dataset(cell_size=1.0, aggregate="min") # needs [gis]
Where it sits
pointclouds is an independent package in the serapeum-org stack. It interoperates with
pyramids (the raster/vector GIS engine) through two converter methods
behind the [gis] extra, but does not depend on it for reading, gridding or classification. See
planning/placement-decision.md for the full architecture rationale.
License
GPLv3.
Metadata
Release files for pointclouds 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pointclouds-0.1.0.tar.gz | 268.8 kB | Without provenance | Details for pointclouds-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pointclouds-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for pointclouds-0.1.0-py3-none-any.whl |
Total release size: 333.1 kB
Release files / pointclouds-0.1.0.tar.gz
| Download URL | pointclouds-0.1.0.tar.gz |
|---|---|
| Size | 268.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0d4407c063af4887fce4676773233d336898549e7e10292eb97f04854a630602
|
|
BLAKE2b-256 checksum How to use checksums |
37e072874b8b658b82a89ef8039cd58d331cc9d71f4bd3c511e35241048ff4c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.10
|
Release files / pointclouds-0.1.0-py3-none-any.whl
| Download URL | pointclouds-0.1.0-py3-none-any.whl |
|---|---|
| Size | 64.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c5518ff165020a9f22102c9c6816e0ec2408ac4425ccfa342f9dd5ead3be7e46
|
|
BLAKE2b-256 checksum How to use checksums |
838bc0c628b95ac0ff5ebeebf4ee82ccb3efdef4ac6a1d0778cdbbb300f5ec39
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.10
|
Security for pointclouds 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.