Estimate building first-floor heights from panoramas and LiDAR.
The main CLI is fh. The pipeline loads region data into DuckDB, clips LiDAR and imagery per building, estimates FFH, validates against configured ground truth, and can build ensemble range/confidence outputs.
conda env create -f environment.yml
conda activate floor-heights
python -m pip install -e .Developer tooling:
python -m pip install pre-commit detect-secrets commitizenCopy .env.example to .env and set the paths you actually use:
cp .env.example .envEnvironment variables:
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_DEFAULT_REGIONFH_OUTPUT_ROOTFH_DB_PATHFH_DATA_ROOTFH_REGIONSFH_LIDAR_DATA_ROOTif LiDAR is available locally
Checks:
fh check
fh infoConfigured regions:
waggalauncestontweedshepparton
Build the source parquet files and load DuckDB:
fh db pipelineDatabase commands:
fh db info
fh db auditfh download-data is available if you want the AWS helper for ancillary trajectory and tileset files, but the pipeline also supports a pre-arranged FH_DATA_ROOT.
Single stage:
fh stage01 --region wagga
fh stage02a --region wagga
fh stage02b --region wagga
fh stage03 --region wagga
fh stage04a --region wagga
fh stage04b --region wagga
fh stage05 --region wagga
fh stage06 --region wagga
fh stage07 --region wagga
fh stage08
fh stage09a --region waggaMultiple stages:
fh run 1 2a 2b 3 4a 4b 5 6 7 8 9a -r waggaCLI:
fh --help
fh stages
fh regions| Stage | Command | Purpose |
|---|---|---|
| 1 | fh stage01 |
Clip LiDAR tiles to building footprints |
| 2a | fh stage02a |
Harvest candidate panorama views |
| 2b | fh stage02b |
Download or link panorama images |
| 3 | fh stage03 |
Clip panoramas to building views |
| 4a | fh stage04a |
Detect building features with YOLO |
| 4b | fh stage04b |
Select the best view with SigLIP scoring |
| 5 | fh stage05 |
Project LiDAR onto facade rasters |
| 6 | fh stage06 |
Estimate ground elevation |
| 7 | fh stage07 |
Estimate first-floor heights |
| 8 | fh stage08 |
Validate against region ground truth |
| 9a | fh stage09a |
Extract LiDAR statistics |
The ensemble workflow builds FFH range/confidence outputs from the unified DuckDB and the upstream stage outputs.
Config:
configs/ensemble_model.yaml
Commands:
fh ensemble-model build-features
fh ensemble-model train
fh ensemble-model predict
fh ensemble-model calibrate
fh ensemble-model validate
fh ensemble-model exportBy default the ensemble config trains on shepparton and predicts on wagga, tweed, and launceston.
fh qa --help
fh yolo --help
fh config --help