Stand attributes per acre of condition
TPA_UNADJ is divided by the share of its plot footprint (microplot, subplot or macroplot) that lies in its condition, so values are per acre of condition. Basal area reproduces FIADB’s COND.BALIVE. Pass min_dia=5 for merchantable-size attributes, or plot_cns= to compute any set of plots, including earlier measurements.
Condition pairs
at_risk_land gets a row for each time-2 condition its land became, from SUBP_COND_CHNG_MTRX. CHNG_AREA_SHARE is the pair’s share of the plot area, and t2_OUTCOME says what the land became (forest, nonforest, water, nonsampled, no_t2_condition). Condition attributes come at both times with t1_ and t2_ prefixes; add more with columns=.
Expanded by the plot’s EXPNS and adjustment factor, CHNG_AREA_SHARE reproduces area_change(), so unit-level models and published change estimates share one definition of the land.
Tree fates
COMPONENT and FATE (survivor, ingrowth, cut, mortality, diversion, reversion), its interval weight TPAGROW_UNADJ and the annual rates TPAREMV_UNADJ and TPAMORT_UNADJ, its diameters over the interval, and its TREE attributes at both times. Weighted by the plot’s EXPNS and the adjustment factor for SUBPTYP_GRM, the CUT and DIVERSION rows reproduce removals() and the MORTALITY rows mortality().
Putting them together
The tables share keys, so time-1 stand attributes join onto condition pairs by the time-1 plot and condition:stands on the time-1 plots (plot_cns=pairs["PREV_PLT_CN"].unique()) when the pairs come from a different evaluation.
Label codes with the reference lookups, prefixing time-1 and time-2 labels:
join_reference raises on a code the reference table doesn’t define, so a stale lookup can’t pass unnoticed.
Record where results came from
provenance(checksum=True) adds the file’s SHA-256. The builders also carry an EVALID column when the database is clipped to one evaluation.
See also
- Area change — the population estimate
condition_intervalsreproduces - Remeasurement panels —
panel(), with expansion options