Skip to content

Releases: Sugarc0de/standseg

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 03:21
a80ac0d

What's Changed

New Contributors

Full Changelog: v0.2.1...v0.3.0

standseg v0.2.1 — the download runs on its own

Choose a tag to compare

@github-actions github-actions released this 01 Sep 07:03

A download now runs on its own. This is the release to start from.

Earlier archives held the binary, the README and the LICENSE — but the README's
worked example pointed at a test scene that only existed in the repository, so
the first command in the documentation failed for anyone who took a binary
instead of cloning. That is fixed.

What's new

Every archive ships a sample/ directory — a 250 × 250 Landsat subset with
its ENVI header, and the 1992 C's output for it. Enough to run the worked
example and to check the byte-exactness claim, with nothing else installed.

The README covers Windows properly. .\standseg.exe rather than standseg,
PowerShell forms of every command in the quick start, fc /b alongside cmp,
what SmartScreen does with an unsigned executable and how to get past it, and
where sqlite3 is not available.

Two new release guards. The tag and the crate version must agree before
anything builds — the version is stamped into every map as the ENVI software
key, so a mismatch means wrong provenance in a user's own results. And the built
archive is unpacked into an empty directory and put through the README's quick
start there, so a file that failed to ship fails the release instead of
reaching you.

No change to what the program computes. The only source difference since v0.2.0
is rustfmt formatting.

Which file

Windows standseg-x86_64-pc-windows-msvc.zip
macOS standseg-universal-apple-darwin.tar.gz — Apple Silicon and Intel, signed and notarized
Linux standseg-x86_64-unknown-linux-musl.tar.gz — statically linked, runs on old distributions and HPC nodes

Unpack and run. One executable, no GDAL, no Python, no system libraries.

Try it

Open a terminal in the unpacked folder:

# macOS and Linux
./standseg -t 20 -m .2 -n 50,100,200 --format gpkg -o stands --outdir out sample/temp_byte_bip
# Windows PowerShell -- note the .\ prefix
.\standseg.exe -t 20 -m .2 -n 50,100,200 --format gpkg -o stands --outdir out sample\temp_byte_bip

Open out/stands.armap.69.gpkg in QGIS: 163 stands over a Landsat scene in
Chiapas, Mexico. On Windows, if SmartScreen objects to an unsigned executable,
More info → Run anyway.

Check it yourself

The claim is that this reproduces Harward and Woodcock's 1992 C byte for byte,
and sample/ carries that program's output so you can test it rather than take
it on trust:

./standseg -t 10 -m .1 -n 15,15,100,2500,2500 -o demo --outdir out sample/temp_byte_bip
cmp out/demo.rmap.51  sample/regmap.rmap.51
cmp out/demo.armap.58 sample/regmap.armap.58
.\standseg.exe -t 10 -m .1 -n 15,15,100,2500,2500 -o demo --outdir out sample\temp_byte_bip
fc /b out\demo.rmap.51  sample\regmap.rmap.51
fc /b out\demo.armap.58 sample\regmap.armap.58

cmp prints nothing and exits 0 when the files match; fc /b says no
differences encountered
. Every binary here went through that same comparison
before it was published.

Scope

Forest stand delineation from Landsat is the only thing this has been validated
on. The README says what that does and does not claim.

Full Changelog: v0.2.0...v0.2.1

standseg v0.2.0 — GeoPackage output

Choose a tag to compare

@github-actions github-actions released this 01 Sep 05:03

Stand polygons, not just rasters.

New: --format gpkg

Segmentation output as a GeoPackage — one polygon per stand, in the input's
own CRS — rather than a raster of region ids. QGIS, ArcGIS, sf and geopandas
open it directly, and since a GeoPackage is a SQLite database you can query it
without a GIS at all.

Each feature carries region_id, n_pixels, and area in squared CRS units.
The polygons are the raster: vertices land on pixel corners, neighbouring
stands share vertices so there are no slivers or gaps, holes stay holes, and a
stand's geometry area equals n_pixels × the pixel area exactly.

Phase-1 maps are millions of tiny regions and get very large as vectors —
vectorise the phase-2 map and keep phase 1 as a raster. The README has the
numbers.

Which file

Windows standseg-x86_64-pc-windows-msvc.zip
macOS standseg-universal-apple-darwin.tar.gz — Apple Silicon and Intel, signed and notarized
Linux standseg-x86_64-unknown-linux-musl.tar.gz — statically linked, runs on old distributions and HPC nodes

Unpack and run. One executable, no GDAL, no Python, no system libraries.

Try it

These archives contain the binary, the README and the LICENSE. To run the
README's worked example you need its test scene, which lives in the repository:

git clone https://github.com/Sugarc0de/standseg
cd standseg
./standseg -t 20 -m .2 -n 50,100,200 --format gpkg \
    -o stands --outdir out tests/golden/misc/temp_byte_bip
# Windows PowerShell -- .\ prefix, and all on one line
.\standseg.exe -t 20 -m .2 -n 50,100,200 --format gpkg -o stands --outdir out tests\golden\misc\temp_byte_bip

Open out/stands.armap.69.gpkg in QGIS. On Windows, if SmartScreen objects to
an unsigned executable, More info → Run anyway.

v0.2.1 does
this properly
— every archive there ships a sample/ directory with the
scene and the 1992 C's output, so the download is enough on its own, and the
README covers Windows. Same program; start there instead.

Check it yourself

The claim is that this reproduces the 1992 C byte for byte, and the repository
has what you need to test that rather than take it:

./standseg -t 10 -m .1 -n 15,15,100,2500,2500 \
    -o demo --outdir out tests/golden/misc/temp_byte_bip
cmp out/demo.rmap.51 tests/golden/test_3456/expected/proof/regmap.rmap.51

Silence from cmp means identical (fc /b on Windows, which says no
differences encountered
). Every binary here was checked the same way before it
was published.

Scope

Forest stand delineation from Landsat is the only thing this has been validated
on. See the README for what that does and does not claim.

Full Changelog: v0.1.0...v0.2.0

standseg v0.1.0

Choose a tag to compare

@github-actions github-actions released this 01 Sep 03:12

Multi-resolution forest stand segmentation from satellite imagery, in Rust.
First public release.

It implements Ye et al. (2025), which extends Harward and Woodcock's 1992
segmenter to develop micro-segments against a second data layer — forest
structure, age, or species over the same pixels. With one image it reproduces
the 1992 algorithm byte for byte.

Which file

Linux standseg-x86_64-unknown-linux-musl.tar.gz — statically linked, so it also runs on older distributions and HPC login nodes
macOS standseg-universal-apple-darwin.tar.gz — Apple Silicon and Intel, signed and notarized, runs without a Gatekeeper warning
Windows standseg-x86_64-pc-windows-msvc.zip — x86-64

Unpack and run. One executable, no GDAL, no Python, no system libraries.

tar xzf standseg-x86_64-unknown-linux-musl.tar.gz
./standseg-x86_64-unknown-linux-musl/standseg --help

Verification

Every binary here was checked before it was published by segmenting the 1992
reference scene and comparing the result to the original C's output byte for
byte. The release fails rather than publishing if that comparison does not
match. You can re-run it yourself — the reference output ships in the
repository:

standseg -t 10 -m .1 -n 15,15,100,2500,2500 \
    -o demo --outdir out tests/golden/misc/temp_byte_bip
cmp out/demo.rmap.51 tests/golden/test_3456/expected/proof/regmap.rmap.51

Scope and stability

This is for delineating forest stands from Landsat, and that is the only thing
it has been validated on. See the README for what that does and does not claim.

The maps are stable — the output is pinned by checksummed fixtures and will
not change under you. The command-line flags may still move before 1.0, which
is what the 0. is for.

Citation

Ye, E., N. C. Coops, M. A. Wulder and T. Hermosilla. 2025. A multi-resolution forest stand segmentation algorithm integrating Landsat imagery and forest structural, age, and species attributes. ISPRS Journal of Photogrammetry and Remote Sensing. https://doi.org/10.1016/j.isprsjprs.2025.05.023

Woodcock, C. and V. J. Harward. 1992. Nested-hierarchical scene models and image segmentation. International Journal of Remote Sensing 13(16): 3167–3187.

Full Changelog: https://github.com/Sugarc0de/standseg/commits/v0.1.0