Skip to content

feat: harden SmartTile v2.2 production paths - #1

Merged
kgerb merged 12 commits into
mainfrom
smarttile-v2.2
Jul 8, 2026
Merged

feat: harden SmartTile v2.2 production paths#1
kgerb merged 12 commits into
mainfrom
smarttile-v2.2

Conversation

@kgerb

@kgerb kgerb commented Jun 22, 2026

Copy link
Copy Markdown

Summary

Publishes the SmartTile v2.2 production-hardening branch.

Key changes:

  • Preserves CRS / projection metadata more consistently through COPC conversion and derived outputs, including GeoTIFF projection records where LAS/COPC allows.
  • Uses Untwine by default for COPC conversion, validates CRS/dimensions, and falls back through stripped-LAZ + Untwine/PDAL when the installed Untwine rejects empty --dims "".
  • Strips extra dimensions in intermediate COPC conversion by default while preserving enriched dimensions in prod-merged final products.
  • Adds direct raw-LAZ original enrichment with optional COPC-assisted spatial matching/context.
  • Adds prod-merged creation from Original-with-predictions files with selectable resolutions and copc.laz, laz, and ply outputs.
  • Adds memory-bounded chunked prod-merged creation, chunk reuse across multiple output formats, direct Untwine chunk-to-COPC finalization, and point-count/dimension/metadata validation.
  • Adds center-of-mass subsampling as default, keeps nearest-to-centroid selectable, and makes num_spatial_chunks apply across the subsampling/product paths.
  • Enforces the instance contract: 0 = background/no tree, positive values = tree instances, no reserved sentinel, uint16 by default and uint32 only when IDs exceed 65535.
  • Fixes 3DT-1089 by replacing regex parsing of PDAL bounds metadata with structural JSON parsing so scientific notation near zero is preserved.
  • Splits large merge/remap/tile behavior into focused helper modules and adds broader unit coverage.

Validation

  • PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=src python -m unittest discover -s tests -p 'test_*.py' -> 176 tests OK.
  • Docker-mounted suite with ghcr.io/3dtrees-earth/3dtrees_smart_tile:2.2-local -> 176 tests OK.
  • PYTHONDONTWRITEBYTECODE=1 python -m compileall -q src -> OK.
  • git diff --check -> OK.
  • Medium Untwine benchmark on 27,046,005-point / 543 MB LAZ confirmed:
    • raw Untwine without --dims: keeps all extras.
    • raw Untwine with --dims "": rejected by Untwine 1.5.1.
    • SmartTile default strip: succeeds and keeps no extra dims.
    • SmartTile preserve-extra-dims: succeeds and keeps Amplitude, Reflectance, Deviation, PredSemantic, PredInstance.

Container

Published ghcr.io/3dtrees-earth/3dtrees_smart_tile:2.2.

Config digest: sha256:fde352bc9d4652bfd90fb9c8cfee042df2b61b96921fdcfd935eff4a372384b7

Related

Fixes 3DT-1089

@linear-code

linear-code Bot commented Jun 22, 2026

Copy link
Copy Markdown

3DT-1089

3DT-1181

3DT-1185

@kgerb kgerb changed the title fix: SmartTile v2.2 metadata and bounds release feat: harden SmartTile v2.2 production paths Jul 2, 2026
@kgerb
kgerb merged commit 873774b into main Jul 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant