Skip to content

Releases: iosefa/PyForestScan

v0.4.1 - Height Above Ground from memory

Choose a tag to compare

@iosefa iosefa released this 30 Jun 23:34
ea3c2cd

PyForestScan v0.4.1

This release brings the published v0.4.0 rumple work back into main and adds the newly merged in-memory Height Above Ground workflow.

Highlights

  • Add add_height_above_ground(...) for calculating HeightAboveGround on already-loaded point-cloud arrays.
  • Support both Delaunay-based HAG and DTM/raster-based HAG for in-memory arrays.
  • Include the v0.4.0 rumple metric implementation, tests, docs, and exports on the main release line.
  • Bump the package version to 0.4.1.

Validation

  • PR CI passed on Python 3.11, 3.12, and 3.13.
  • Local tests/test_calculate.py passed with 54 tests.

v0.4.0 - Rumple Index

Choose a tag to compare

@iosefa iosefa released this 23 Jun 03:00

What's Changed

This release adds canopy rumple index support to PyForestScan.

Added

  • Added calculate_rumple() for computing canopy rumple index from a CHM.
  • Rumple is calculated as canopy surface area divided by planar ground area.
  • Supports optional min_height masking to exclude low vegetation before calculating canopy surface complexity.
  • Added rumple documentation under forest structure metrics.
  • Added rumple to the public package API.
  • Added tests covering flat surfaces, sloped surfaces, rough surfaces, invalid inputs, min_height masking, and no-valid-surface cases.

Notes

Rumple returns a single scalar value for a CHM, not a raster. A flat canopy has a rumple value near 1.0; increasingly complex canopy surfaces have values greater than 1.0.

Verification

  • pytest tests/test_calculate.py -k rumple: 6 passed
  • pytest tests/test_calculate.py: 54 passed

v0.3.8

Choose a tag to compare

@iosefa iosefa released this 02 Dec 01:40

What's Changed

  • process: add by_flightline option for per-flightline processing by @iosefa in #49

Full Changelog: v0.3.7...v0.3.8

v0.3.7

Choose a tag to compare

@iosefa iosefa released this 23 Oct 10:03
ccaab21

What's Changed

  • process: add voxel-grid downsampling with mode selection by @iosefa in #47
  • Bump version to 0.3.7 by @iosefa in #48

Full Changelog: v0.3.6...v0.3.7

v0.3.6

Choose a tag to compare

@iosefa iosefa released this 19 Oct 11:42
20a4134

What's Changed

  • process: refine core extent calculation to prevent stretching by @iosefa in #45
  • Bump version to 0.3.6 by @iosefa in #46

Full Changelog: v0.3.5...v0.3.6

v0.3.5

Choose a tag to compare

@iosefa iosefa released this 16 Oct 23:05
0983965

What's Changed

  • calculate: handle invalid voxel height and refine empty range logic by @iosefa in #43
  • Bump version to 0.3.5 by @iosefa in #44

Full Changelog: v0.3.4...v0.3.5

v0.3.4

Choose a tag to compare

@iosefa iosefa released this 16 Oct 05:04
253dbfc

What's Changed

  • process: add Poisson-based thinning and improve PAI tile handling by @iosefa in #41
  • Bump version to 0.3.4 by @iosefa in #42

Full Changelog: v0.3.3...v0.3.4

v0.3.3

Choose a tag to compare

@iosefa iosefa released this 09 Oct 22:55
aa60351

What's Changed

  • process: add skip_existing and verbose options to tile processing by @iosefa in #39
  • Bump version to 0.3.3 by @iosefa in #40

Full Changelog: v0.3.2...v0.3.3

v0.3.2

Choose a tag to compare

@iosefa iosefa released this 09 Oct 09:58

What's Changed

  • calculate: handle empty integration range in canopy cover calculation by @iosefa in #38

Full Changelog: v0.3.1...v0.3.2

v0.3.1

Choose a tag to compare

@iosefa iosefa released this 09 Oct 08:29
e838643

What's Changed

Full Changelog: v0.3.0...v0.3.1