Use this correctly
ZCTA geography, not a postal boundary
USPS ZIP Codes are mail-delivery routes. Census ZIP Code Tabulation Areas are generalized statistical areas. This release uses Census ZCTA codes and representative points for the 50 states and District of Columbia; it is not suitable for address validation or determining USPS delivery coverage.
Each row reports annual heat accumulation from January 1 through the selected station's latest complete TMAX/TMIN observation. 20 ZCTAs in this release are retained with null measurements and an explicit reason instead of being silently omitted.
Reproducible method
One station, chosen from an eight-station fallback chain
- 1
Start with Census ZCTA representative latitude/longitude coordinates.
- 2
Order the nearest 8 active NOAA GHCN-Daily stations by Haversine distance.
- 3
Select the first candidate with complete, fresh source-year TMAX and TMIN observations.
- 4
Accumulate base-50°F daily GDD from January 1 and publish station, distance, rank, dates, and freshness alongside the value.
A station is fresh when its last complete observation is no more than 7 UTC days old at generation. This data product contains no modeled soil temperature.
Machine-readable contract
Data dictionary
The same definitions are available in schema.json.
| Field | Type / units | Definition |
|---|---|---|
zcta5 | string | Five-character U.S. Census ZIP Code Tabulation Area code; this is not a USPS delivery-area boundary. |
state_fips | string | Two-character state FIPS code assigned from the county containing the largest share of ZCTA land area. |
state_code | string | USPS-style two-letter state or territory abbreviation for grouping only. |
centroid_latitude_degrees | numberdecimal degrees | Representative latitude from the Census ZCTA Gazetteer. |
centroid_longitude_degrees | numberdecimal degrees | Representative longitude from the Census ZCTA Gazetteer. |
gdd_base_f | integerdegrees Fahrenheit | Base temperature subtracted from each daily mean; fixed at 50°F for this release. |
accumulation_start_date | stringISO 8601 date | Calendar date at which annual GDD accumulation begins, always January 1 of source_year. |
observation_start_date | string | nullISO 8601 date | First NOAA observation date with both TMAX and TMIN at the selected station. |
observation_end_date | string | nullISO 8601 date | Last NOAA observation date with both TMAX and TMIN at the selected station. |
days_with_observations | integer | nulldays | Count of source-year days with both TMAX and TMIN used in the accumulation. |
cumulative_gdd_f_degree_days | number | nullbase-50°F degree-days | Sum of max(0, (TMAX°F + TMIN°F) / 2 - 50°F) over available observation days. |
station_id | string | null | GHCN-Daily station identifier selected for this ZCTA. |
station_distance_km | number | nullkilometres | Haversine distance from the Census ZCTA representative point to the selected station. |
fallback_rank | integer | null1-based rank | Selected station rank by distance; 1 is the nearest candidate and values above 1 are fallbacks. |
station_candidate_count | integerstations | Maximum number of nearest active stations considered by the release pipeline. |
freshness_status | string | fresh, stale, or unavailable relative to freshness_max_lag_days at generation time. |
freshness_age_days | integer | nulldays | Whole UTC days from observation_end_date to release generation; null when data are unavailable. |
freshness_max_lag_days | integerdays | Maximum accepted observation lag used by the release pipeline. |
data_available | boolean | True when a fresh station record produced a GDD value for the ZCTA. |
unavailable_reason | string | null | Machine-readable reason for a missing GDD value: no_recent_station_data or no_station_data. |
State summary fields
state-summary.csv uses the separate, machine-readable state summary schema.
| Field | Type / units | Definition |
|---|---|---|
state_fips | string | Two-character state FIPS code. |
state_code | string | Two-letter state or District of Columbia abbreviation. |
total_zctas | integerZCTAs | Count of public ZCTA rows assigned to the state. |
available_zctas | integerZCTAs | Count of ZCTAs with a fresh GDD50 value. |
unavailable_zctas | integerZCTAs | Count of ZCTAs retained without a fresh GDD50 value. |
direct_station_zctas | integerZCTAs | Available ZCTAs that used the nearest station candidate. |
fallback_station_zctas | integerZCTAs | Available ZCTAs that used candidate rank 2 or greater. |
min_gdd_f_degree_days | number | nullbase-50°F degree-days | Minimum cumulative GDD50 among available ZCTAs; null when none are available. |
median_gdd_f_degree_days | number | nullbase-50°F degree-days | Median cumulative GDD50 among available ZCTAs; null when none are available. |
mean_gdd_f_degree_days | number | nullbase-50°F degree-days | Arithmetic mean cumulative GDD50 among available ZCTAs; null when none are available. |
max_gdd_f_degree_days | number | nullbase-50°F degree-days | Maximum cumulative GDD50 among available ZCTAs; null when none are available. |
latest_observation_date | string | nullISO 8601 date | Latest selected-station observation end date in the state; null when none are available. |
Source ledger
Derived here; observed and mapped upstream
NOAA and Census supplied the underlying government observations and geography. This project did not collect thermometer observations and does not imply endorsement by NOAA, Census, or the U.S. government.
Known edges
What this release cannot tell you
- ZCTA representative points simplify real within-area microclimates and elevation differences.
- The nearest fresh station may be distant, especially in sparse networks; inspect
station_distance_kmandfallback_rank. - Missing TMAX or TMIN days are skipped, so
days_with_observationsmay be below elapsed calendar days. - GDD50 is a heat-accumulation index, not observed soil temperature, a forecast, or a universal biological threshold.
- Puerto Rico and other territories are excluded until the station-ingestion country-code boundary is expanded and validated.
- State assignment for cross-state ZCTAs uses the state containing the largest Census land-area share.
Stable references
Version and citation policy
The canonical latest page resolves a small R2 manifest and moves only after every remote object verifies. Dated R2 prefixes never change; a different byte at an existing version makes publishing fail. Checksums cover every distribution, schema, and metadata file.
WhenToApplyPreEmergent.com (2026-07-16). WhenToApplyPreEmergent ZIP/ZCTA Growing Degree Days (base 50°F) [Data set]. https://whentoapplypreemergent.com/datasets/gdd/2026-07-16/