Skip to content

cwhr13-hex-fractions STAC note states ~96.5 M-ac statewide total — computed from H3's GLOBAL average res-10 cell area; the asset measures 102.8 M-ac (no acres are missing) #504

Description

@cboettig

Summary

The cwhr13-hex-fractions STAC note states a statewide mapped total that is wrong by ~6%, and it is reaching partners: the ca-30x30 agent quotes the note verbatim to users, and one model reverse-engineered a bogus per-cell constant from it. The underlying data is fine — this is a metadata/arithmetic defect, not an ingest loss.

Current note:

"Note: the statewide mapped total (~96.5 M-ac) matches the mode build; the residual gap to nominal CA area is coastline/centroid quantization, now explicit as the per-cell 1-SUM(frac) remainder + the whr13num=0 share."

What the data actually says

Measured against the live asset (cirrus MCP, mcp-data-server:main):

quantity value
SUM(frac × h3_cell_area(h10,'km^2')) × 247.105, all classes 102,834,000 ac
same, excluding whr13num=0 102,742,000 ac
whr13num=0 (nodata) 91,371 ac — not a ~5M-ac gap
distinct h10 cells 25,944,500
mode build (cwhr13/hex), SUM(h3_cell_area) over cells 102,834,000 ac — identical
CA-Nature ecoregion extent (SUM(Shape_Area), ecoregion.parquet, EPSG:3310) 101,498,000 ac

So the cell union is 416,155 km² vs California's 410,749 km² — +1.32% MORE, which is what you expect when boundary cells overhang the state edge. There is no deficit to explain, and no acres are missing.

Where ~96.5 M-ac comes from

It is the cell count multiplied by H3's global average res-10 hexagon area instead of each cell's actual area:

25,944,500 cells × 0.0150475 km²  = 390,400 km² = 96,469,758 ac   ≈ the note's "~96.5 M-ac"
25,944,500 cells × 0.016040  km²  = 416,155 km² = 102,834,000 ac  ← actual, per-cell

California's res-10 cells are ~6.6% larger than the global mean, so the global constant understates by ~5%. Note the direction: this makes it look like ~5M acres are missing, and it produces exactly the "~5% undercount" that ca-30x30#73 was opened about in June.

Three separate consequences make it worth fixing rather than leaving:

  1. The note contradicts the asset. "~96.5 M-ac" vs 102.8 M-ac measured.
  2. The stated mechanism is false. There is no "residual gap to nominal CA area" — the union is larger than CA. Attributing a nonexistent gap to "coastline/centroid quantization" gives readers a wrong causal story, and 1-SUM(frac) + the whr13num=0 share (91k ac) do not account for 5M acres.
  3. It propagates. ca-30x30 agents quote it ("classes sum to ~96.5M acres mapped, not the nominal state area"), and in a 2026-07-31 benchmark run qwen reported "H3 resolution-10 cells × 3.718 acres/cell (rough constant for h10)" — that is 0.0150475 km² × 247.105, i.e. the global average, almost certainly inherited from this note. The true California mean is 3.9636 ac/cell.

Suggested fix

  1. Correct the note to the measured total (~102.8 M-ac, both builds identical) and drop the "residual gap"/quantization explanation.
  2. If a comparison to California's area is wanted, state the direction honestly: the res-10 cell union covering California is ~1.3% larger than the CA-Nature ecoregion extent because boundary cells overhang the state edge — and note that per-class percentages are unaffected, since a uniform area scale cancels in a ratio (which is why the 12-of-13 class agreement with the 2025 assessment holds regardless).
  3. Keep the genuinely useful part: 1-SUM(frac) per cell and the whr13num=0 share are real diagnostics; they are just not a 5M-acre explanation.
  4. Check the generator, not just the text. If any ingest/QA step computes a "mapped total" from a nominal/global H3 cell area, the same understatement will appear anywhere that code runs. I scanned cwhr13, cwhr, conserved-areas-terrestrial-2025, and ecoregion — only cwhr13-hex-fractions carries this sentence today, so it may be hand-written rather than generated. Worth confirming which, since a generated one would need a code fix.

Verification

-- expect ~102,834,000 for BOTH, and equality between them
SELECT ROUND(SUM(frac * h3_cell_area(h10,'km^2')) * 247.105)
FROM read_parquet('s3://public-ca30x30/cwhr13/hex-fractions/h0=*/data_0.parquet', hive_partitioning=true);
SELECT ROUND(SUM(h3_cell_area(h10,'km^2')) * 247.105)
FROM read_parquet('s3://public-ca30x30/cwhr13/hex/h0=*/data_0.parquet', hive_partitioning=true) WHERE whr13num <> 0;

Filed from ca-30x30 regression work while checking whether our ingest had lost acres (it has not). Related: ca-30x30#73 (opened on the apparent ~5% undercount — this is its explanation), #413 (the separate, real pinyon-juniper footprint divergence), #417 (provenance).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions