Repository navigation
v0.3.0
TERRA 0.3.0 — "Ember"
Three new capabilities: arranging and comparing analyses in one place, simulating the classified crop in three dimensions, and answering solar and wind questions for the area.
TERRA Studio
A space where analyses are arranged rather than looked at one at a time.
- The screen divides into the panels a question needs: viewport, outliner, properties, comparison, domain shift, data table, the run band and the canopy. Any area can be split, joined or retyped to hold any of them.
- Five ready arrangements, one per kind of work, each restorable to its original.
- More than one area on the same board, to put two farms or two years side by side.
- Classification, water and solar run without leaving the board. A composition can be applied there once its scene has been chosen under Compositions on the map.
- Sets of readings saved under a name and reopened as they were.
- The arrangement you built survives closing the application.
Crop simulation
The classified area is now grown in three dimensions and lit by the sun of that place.
- Leaf quantity is estimated from the green the satellite measured across the season.
- Plant age follows from that leaf quantity, by comparison with the growth of 24 species.
- Where the optional 3D package is installed, plants are grown organ by organ from the species' own architecture and then voxelised, instead of being approximated as a uniform crown of the same leaf area.
- Lighting uses the hourly record for the location, with cast shadows and the light colour of that sky.
- The final reading is the fraction of light the canopy intercepts.
Energy
The same area answering about generation.
- How much irradiation the place receives.
- How that irradiation falls across the terrain.
- Where within the area it is possible to build, accounting for slope and land occupation.
- How much energy a plant would produce there, with losses declared individually.
- Wind resource screening.
Where the classification is wrong
- Agreement with MapBiomas measured cell by cell, with per-class accuracy and a confidence interval. The confusion matrix reads rows as the run and columns as the reference.
- Separation between quantity error and allocation error.
- Agreement by block across space, distinguishing localised disagreement from disagreement everywhere.
- Domain-shift diagnosis between two runs: symmetric KL on NDVI, change-vector magnitude in training standard deviations, RBF MMD and a per-feature shift table, computed on standardised samples.
- Export of the run's tables, AOI geometry and classification raster as a single ZIP.
Surface water
- Water mapping from spectral indices, with no trained model and no fixed legend.
- Persistent and ephemeral water separated by how often each pixel was wet across the dates it was actually observed: above 0.70 persistent, 0.15 to 0.70 ephemeral. The two are reported separately and never summed.
Reading a run before it runs
- The Method panel in the run band states what the chosen product will do — which bands it reads, at what cadence, and what the model actually is — and afterwards the stages the run went through.
- Release notes can be set to open at every start rather than once per version, in Settings › Account.
Python environment
- The application checks whether the interpreter can actually import what it needs, rather than trusting the name.
- When a dependency is missing it says which one and what it stops working, and offers to build its own environment from a Python you choose, showing pip's output as it runs.
- That environment is kept outside the application and survives updates.
- Optional packages can be installed and removed from Settings › System.
- Backup and restore of local data as a single file.
Fixes
- Saving any preference reset the chosen model to the default.
- A reopened analysis could not say which run it belonged to.
- Leaf area index for bare soil was emitted as negative zero, which serialised as
-0.0in exported canopy series. - The right-hand drawers opened from the top of the screen while the buttons that opened them sat at the foot.
- The centre the map flew to when selecting an area was computed including the vertex that closes the polygon, which displaced it.
- Starting a new classification did not clear the previous session's composition.
Limitations
- The models emit five MapBiomas classes (3, 21, 25, 39, 41) and were fitted for western Paraná study areas; the training data are not distributed with this application. An area in another biome can return a confident and semantically wrong result, which is why domain-shift diagnosis exists.
- The comparison reference is MapBiomas Collection 10, year 2023.
- Point energy figures come from NASA POWER: radiation on a one-degree cell, wind and the other meteorology on a 0.5 by 0.625 degree MERRA-2 cell. Neither resolves structure inside an area. The terrain and siting maps are the exception, resolving within the area at 30 m from the Copernicus DEM.
- Areas in hectares are pixel counts uncorrected for classification error.
- Temporal Transformer, Prithvi and three-dimensional growth depend on optional packages; the application runs without them.
- The accuracy assessment and the domain-shift report are not in the export package.
- A board's contents do not survive closing the application unless the board is saved under a name; the arrangement survives either way.
Install
Two install flavors per platform:
| Flavor | Assets | What you need |
|---|---|---|
| FULL | *-full.zip |
Unzip and run — embeds Python 3.12 + spectral RF deps |
| LITE | *-lite.zip |
Smaller; install Python 3.12 + requirements.txt yourself |
FULL supports spectral Random Forest (and LULC / phenology) out of the box.
Temporal Transformer and Prithvi still need torch (requirements-prithvi.txt)
via a system/venv install (TERRA_PYTHON).
macOS FULL is arm64 (Apple Silicon). LITE macOS remains universal.
Sentinel-2 imagery is read on demand from the Microsoft Planetary
Computer STAC catalog; no full product download is required.
See docs/INSTALL.md.
What's Changed
- docs: JOSS-ready guides, CONTRIBUTING, and requirements by @rexionmars in #8
- feat(release): LITE and FULL installers with bundled Python by @rexionmars in #9
- docs: add SemVer releasing policy by @rexionmars in #10
- docs: add public product roadmap by @rexionmars in #11
- feat(ui): subtle Web Audio tones for success/error toasts by @rexionmars in #14
- feat: projects hub, analysis workspace, and composition tooling by @rexionmars in #15
- feat(map): swipe compare and AOI right-click menu by @rexionmars in #13
- feat(ui): settings workspace, run/AOI naming, and compare chrome by @rexionmars in #16
- feat(ui): What’s New modal after splash on version bumps by @rexionmars in #17
- docs: platform update gallery, research notice, and guides by @rexionmars in #18
- fix(ui): keep overlay visibility controls only in Overlay Tools by @rexionmars in #19
- docs(readme): research-driven notice and product-only gallery by @rexionmars in #20
- docs(readme): restore fuller research-methods wording by @rexionmars in #21
- fix(ui): keep hub project selected when opening the map by @rexionmars in #23
- feat(ui): Analyses-first project hub and composition modal by @rexionmars in #22
- fix(aoi): correct fly-to centroid and clear composition on new classification by @rexionmars in #24
- fix(a11y): meet WCAG contrast on muted text and complete the ARIA tabs pattern by @rexionmars in #25
- feat(hub): unify the class palette and surface EO metadata on the projects page by @rexionmars in #28
- feat(analysis): inspect the research pack from the analysis header by @rexionmars in #27
- feat: surface water mapping, and report the MapBiomas sample size in native cells by @rexionmars in #29
- fix(map): do not restore the previous AOI and composition at startup by @rexionmars in #32
- feat(energy): solar resource, photovoltaic siting, and wind screening by @rexionmars in #30
- feat(design): one palette, one chassis, one button set — and charts that draw the data by @rexionmars in #31
- Installer, runtime configuration, backup and splash by @rexionmars in #33
- Accuracy assessment, prose removal, and the solar diffuse terms by @rexionmars in #34
- A dock layout for the map and energy screens by @rexionmars in #35
- feat: the studio, its diagnostics, and the data-integrity fixes found in it by @rexionmars in #37
- fix(studio): a retained run could be drawn but not read by @rexionmars in #38
- docs: draft JOSS paper and CITATION.cff by @rexionmars in #12
- perf(ui): load the analysis and energy screens when they are opened by @rexionmars in #39
- fix(sidecar): explain why a run failed, and install the optional models from Settings by @rexionmars in #40
- feat(canopy): grow the stand from the area the application already measured by @rexionmars in #41
Full Changelog: v0.2.0...v0.3.0