You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
LANDFIRE 2024 CONUS vegetation structure & fuels suite — the second tranche of the LANDFIRE import. Split out of #203, which covers vegetation type / succession / departure (EVT, BpS, FRG, SClass, VCC, VDep).
⛔ SCOPE
Extent
CONUS only, full upstream extent. AK/HI/PR-VI deferred (same boundary as #203).
FCCS (Fuel Characteristic Classification System) has no LF2024 build — LF2023 (4.4 GB) is the latest. Include as fccs-2023 or defer; decide before building.
Do not use LF2025 — partial release (~⅓ the LF2024 size).
⚠️ The defining trap: these are CODED class rasters, not measurements
EVC, EVH, FVC, FVH (and the canopy layers, in their own way) store coded class bins, not physical values — cover/height ranges with the life form embedded in the code range (tree / shrub / herb bands, plus separate codes for water, snow-ice, barren, developed, agriculture). A reference planning app renders Fuel Vegetation Height as named classes ("Forest Height …", "Shrub Height …", "Herb Height …", "Sparse Vegetation", "Fallow/Idle"), which is the honest presentation.
Consequences:
mean on the raw pixel codes is meaningless. Never apply it.
Default treatment: categorical — mode + fractions hex, with classification:classes from the shipped CSV class names.
Optionally also publish a numeric remap (bin midpoint → % cover / metres) as a separate derived layer with its own mean hex, but only after confirming the exact code ranges from each product's CSV. Do not conflate the two in one column.
CBD (kg m⁻³), CC (%), CH/CBH (m, often stored ×10) may be genuinely continuous — confirm per product from the CSV/metadata before choosing mean vs categorical. Read the units; don't infer from the product name.
Any layer confirmed continuous: mean, no fractions.
122 indexed pods × 256Gi/8cpu, --resampling near, run one workflow at a time.
Naming
Full official product name in every STAC title/description and every classification:classes[].name; abbreviations only in keys. No bare "FBFM40" / "CBH" in displayed strings.
Bucket / license
public-landfire, same layout and license: public-domain as #203. Register in the bucket-level STAC collection created there.
Work plan
Same shape as #203: stage raw → pre-flight each COG (real nodata + class histogram as validation truth) → WGS84 COG → sequential hex (mode, then fractions) → coverage gate (scripts/check-hex-coverage.sh, comparing populated partitions) → STAC/README with complete classification:classes + color_hint from the CSV R,G,B → scripts/verify-stac.py green.
Sequence after #203 — 11 products × 2 hex jobs is a large compute commitment; don't overlap it with #203's runs.
Acceptance criteria
11 (or 12 with FCCS) products on public-landfire, LF2024 pinned, full CONUS.
Coded-value handling documented per product from its CSV; no mean applied to class codes.
Per product: COG + res-10 hex; mode + fractions for categorical, mean only where units are confirmed continuous.
Complete classification:classes with official palette color_hint; full product names in all displayed strings.
Dataset
LANDFIRE 2024 CONUS vegetation structure & fuels suite — the second tranche of the LANDFIRE import. Split out of #203, which covers vegetation type / succession / departure (EVT, BpS, FRG, SClass, VCC, VDep).
⛔ SCOPE
Extent
CONUS only, full upstream extent. AK/HI/PR-VI deferred (same boundary as #203).
Products — 11 layers, LF2024 pinned
Bulk pattern (verified 2026-08-05):
https://landfire.gov/data-downloads/CONUS_LF2024/LF2024_<CODE>_CONUS.zipevc-2024evh-2024fbfm13-2024fbfm40-2024fvc-2024fvh-2024fvt-2024cbh-2024cbd-2024cc-2024ch-2024FCCS (Fuel Characteristic Classification System) has no LF2024 build — LF2023 (4.4 GB) is the latest. Include as
fccs-2023or defer; decide before building.Do not use LF2025 — partial release (~⅓ the LF2024 size).
EVC,EVH,FVC,FVH(and the canopy layers, in their own way) store coded class bins, not physical values — cover/height ranges with the life form embedded in the code range (tree / shrub / herb bands, plus separate codes for water, snow-ice, barren, developed, agriculture). A reference planning app renders Fuel Vegetation Height as named classes ("Forest Height …", "Shrub Height …", "Herb Height …", "Sparse Vegetation", "Fallow/Idle"), which is the honest presentation.Consequences:
meanon the raw pixel codes is meaningless. Never apply it.mode+fractionshex, withclassification:classesfrom the shipped CSV class names.meanhex, but only after confirming the exact code ranges from each product's CSV. Do not conflate the two in one column.CBD(kg m⁻³),CC(%),CH/CBH(m, often stored ×10) may be genuinely continuous — confirm per product from the CSV/metadata before choosingmeanvs categorical. Read the units; don't infer from the product name.H3 + reducers
--parent-resolutions 9,8,7,6,5,0— matches NLCD 2024 and Import: LANDFIRE CONUS vegetation & departure suite — EVT, BpS, FRG, SClass, VCC, VDep (LF2024/2020/2016) #203 for directh10 = h10joins.mode→<dataset>/hex/andfractions→<dataset>/hex-fractions/.mean, no fractions.--resampling near, run one workflow at a time.Naming
Full official product name in every STAC title/description and every
classification:classes[].name; abbreviations only in keys. No bare "FBFM40" / "CBH" in displayed strings.Bucket / license
public-landfire, same layout andlicense: public-domainas #203. Register in the bucket-level STAC collection created there.Work plan
Same shape as #203: stage raw → pre-flight each COG (real nodata + class histogram as validation truth) → WGS84 COG → sequential hex (
mode, thenfractions) → coverage gate (scripts/check-hex-coverage.sh, comparing populated partitions) → STAC/README with completeclassification:classes+color_hintfrom the CSVR,G,B→scripts/verify-stac.pygreen.Sequence after #203 — 11 products × 2 hex jobs is a large compute commitment; don't overlap it with #203's runs.
Acceptance criteria
public-landfire, LF2024 pinned, full CONUS.meanapplied to class codes.mode+fractionsfor categorical,meanonly where units are confirmed continuous.classification:classeswith official palettecolor_hint; full product names in all displayed strings.scripts/verify-stac.py --bucket public-landfire --dataset <each>exits 0.Split from #203. Part of #140; serves the fire/fuels side of #143.