Metadata-Version: 2.4
Name: pywolken
Version: 0.1.1
Summary: Python point cloud processing library — the Python alternative to PDAL
Project-URL: Homepage, https://github.com/jonash54/pywolken
Project-URL: Repository, https://github.com/jonash54/pywolken
Project-URL: Bug Tracker, https://github.com/jonash54/pywolken/issues
Author-email: Jonas <jonashellinghausen@proton.me>
License-Expression: MIT
License-File: LICENSE
Keywords: dem,geospatial,las,laz,lidar,pdal,point-cloud
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: GIS
Requires-Python: >=3.10
Requires-Dist: laspy[lazrs]>=2.5
Requires-Dist: numpy>=1.24
Requires-Dist: pyproj>=3.5
Requires-Dist: scipy>=1.10
Provides-Extra: all
Requires-Dist: dask[array]>=2023.0; extra == 'all'
Requires-Dist: matplotlib>=3.7; extra == 'all'
Requires-Dist: open3d>=0.17; extra == 'all'
Requires-Dist: plotly>=5.0; extra == 'all'
Requires-Dist: rasterio>=1.3; extra == 'all'
Provides-Extra: dask
Requires-Dist: dask[array]>=2023.0; extra == 'dask'
Provides-Extra: dev
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Provides-Extra: mesh
Requires-Dist: open3d>=0.17; extra == 'mesh'
Provides-Extra: raster
Requires-Dist: rasterio>=1.3; extra == 'raster'
Provides-Extra: viz
Requires-Dist: matplotlib>=3.7; extra == 'viz'
Requires-Dist: plotly>=5.0; extra == 'viz'
Description-Content-Type: text/markdown

# pywolken

[![PyPI version](https://img.shields.io/pypi/v/pywolken)](https://pypi.org/project/pywolken/)
[![Python](https://img.shields.io/pypi/pyversions/pywolken)](https://pypi.org/project/pywolken/)
[![License: MIT](https://img.shields.io/pypi/l/pywolken)](https://github.com/jonash54/pywolken/blob/master/LICENSE)

Python point cloud processing library — the Python alternative to PDAL.

No C++ compilation required. Pure Python with NumPy, SciPy, laspy, pyproj.

## Installation

```bash
pip install pywolken
```

Optional extras:

```bash
pip install pywolken[raster]    # + GeoTIFF export (rasterio)
pip install pywolken[viz]       # + matplotlib, plotly
pip install pywolken[dask]      # + parallel processing
pip install pywolken[mesh]      # + 3D mesh (open3d)
pip install pywolken[all]       # everything
```

## Features

- **I/O:** LAS/LAZ, PLY (ASCII + binary), CSV/TXT/XYZ, GeoTIFF
- **15 Filters:** range, crop, merge, decimation, assign, expression, reprojection, ground classification (SMRF), height above ground, outlier removal, surface normals, voxel downsampling, DBSCAN clustering, raster colorization, spatial sorting
- **JSON Pipelines:** PDAL-compatible declarative processing chains
- **Raster:** DEM generation (IDW/mean/nearest/TIN), hillshade (Horn's method), GeoTIFF export
- **3D Mesh:** 2.5D Delaunay triangulation, OBJ/STL/PLY export
- **Streaming:** Memory-bounded chunked processing for huge files
- **Parallel:** Optional Dask integration for multi-file and multi-chunk processing
- **CLI:** `pywolken info`, `pywolken pipeline`, `pywolken convert`, `pywolken merge`

## Quick Start

```python
import pywolken

# Read any format (auto-detected)
pc = pywolken.read("terrain.laz")
print(pc)  # PointCloud(45,266,951 points, dims=[X, Y, Z, Intensity, ...])

# Filter
ground = pc.mask(pc["Classification"] == 2)

# Write to any format
pywolken.write(ground, "ground.laz")
pywolken.write(ground, "ground.ply")
pywolken.write(ground, "ground.csv")
```

## JSON Pipeline

```python
import json
pipeline = pywolken.Pipeline(json.dumps({
    "pipeline": [
        "input.laz",
        {"type": "filters.ground"},
        {"type": "filters.range", "limits": "Classification[2:2]"},
        {"type": "filters.decimation", "step": 10},
        "output.las"
    ]
}))
count = pipeline.execute()
```

## CLI

```bash
pywolken info terrain.laz
pywolken convert input.laz output.ply
pywolken pipeline workflow.json -v
pywolken merge tile1.laz tile2.laz -o merged.laz
```

## Full Documentation

- [English](docs/DOCUMENTATION.md) — complete API reference, all filter options, examples, and architecture guide
- [Deutsch](docs/DOKUMENTATION.md) — vollständige API-Referenz, alle Filteroptionen, Beispiele und Architektur

## License

MIT
