GeographyPin Hail Alley atlas: methodology and data dictionary

Edition 1.0. Source acquisition: September 5, 2026. Analysis: January 1, 2011–December 31, 2025, 15 complete years. This is a GeographyPin analysis of NOAA/SPC reports, not an official NOAA map.

Historical reported severe hail—not a forecast, storm-footprint map or property-level roof-damage assessment.

Sources and verification

The source is SPC’s historical Severe Weather Database compiled from NWS Storm Data. On the acquisition date, the annual 2025 hail CSV was marked “Updated: 23 Apr 2026.” No preliminary current-year daily reports were added. A finalized historical edition can still receive later corrections: retain this snapshot and checksum when citing edition 1.0.

The boundary source is the U.S. Census Bureau’s 2024 Cartographic Boundary File for states, scale 1:5,000,000, in NAD83. These are generalized jurisdiction footprints, including mapped water. State and regional weights are not land-only exposure measures.

Selection and date convention

  1. Select source yr values 2011 through 2025 inclusive. Check that all 15 years are present and that year, month and day fields agree with date.
  2. Include the contiguous 48 states and Washington, DC, by the source st postal code. Exclude Alaska, Hawaii and territories.
  3. Require valid numeric coordinates within broad contiguous-U.S. bounds. Retain source coordinates near boundaries even if they fall outside a generalized cartographic polygon. Geographic coordinates are treated as WGS84 for projection; SPC’s format document does not specify their datum. The resulting datum uncertainty is small relative to the grid scale, but positional errors are not corrected.
  4. Main threshold: source mag at least 1 inch (25.4 mm). Significant-hail layer: mag at least 2 inches (50.8 mm). Exactly 1-inch and exactly 2-inch observations are included in their respective layers.
  5. Use the supplied calendar date. All 147,594 source records in the selected period have tz=3, which the SPC specification defines as Central Standard Time, UTC−06:00. A counted day is midnight–midnight in this fixed source convention. It is not necessarily the observation’s local civil date and is not a 12Z-to-12Z convective day.

The original source has 414,481 records. The selected period contains 147,594. Scope filtering removes 73 records; coordinate checks remove none. A further 33,226 records are below 1 inch, leaving 114,295 main-threshold reports. Of those, 12,273 report hail at least 2 inches. These are input report counts, not the map’s metric and not a ranking of states.

Grid and neighborhood counts

Project observations into NAD83 / Conus Albers, EPSG:5070. Each center is x=i×80,000 m, y=j×80,000 m, where i and j are integers. This origin remains fixed for later editions. A center represents an 80 km square extending 40 km in each axis direction. Export all squares with positive intersection area with the 49-jurisdiction cartographic footprint: 1,378 squares in edition 1.0.

At every center, select observations at a projected Euclidean distance no greater than 40,233.6 m, equivalent to 25 miles. EPSG:5070 preserves area rather than exact distance; the fixed projected radius approximates ground distance. The method does not claim address-level precision.

Count each distinct qualifying calendar date once at the center, regardless of how many reports occurred on that date. Divide the 15-year count by 15 for days per year. Repeat independently for hail at least 2 inches. Monthly values use the same unique dates grouped by month, then divided by 15. A 1-inch-only date is excluded from the 2-inch count; a date with any 2-inch report in the neighborhood counts once in both layers.

One date can contain more than one storm, and a storm can span more than one date. “Reported hail days” is consequently more exact than “unique storms.” Nearby circles can overlap, and circular neighborhoods on an 80 km lattice do not cover every point between their centers. Do not sum grid counts to produce a national storm or report total.

Display smoothing

Apply a two-dimensional isotropic Gaussian with standard deviation 120 km, equivalent to 1.5 grid intervals. Truncate at four standard deviations, giving a 480 km kernel radius. Use constant zero padding outside the array and pad the grid rectangle by more than the kernel radius to prevent array-edge effects.

Smoothing is normalized by the fraction of each square covered by the U.S. cartographic footprint:

smoothed = Gaussian(raw × footprint_fraction) / Gaussian(footprint_fraction).

This normalization prevents outside-domain cells from being treated as observed zero-hail areas. Display the result clipped to the U.S. footprint. It does not recover missing observations or reports from Canada or Mexico. The renderer fills nonfinite outside-mask display cells from their nearest valid neighbor and uses bilinear interpolation for a continuous display, then clips the graphic to the Census union. This interpolation adds no new observations. Preserve raw and smoothed values separately in the data download. Main state statistics use raw values.

The maps use the colorblind-safe cividis sequential color scale with a continuous linear range. The severe layer spans 0–8 days per year, with fixed numeric legend marks at 0, 0.5, 1, 2, 3, 4, 6 and 8. The significant layer spans 0–1.5 days per year, with marks at 0, 0.25, 0.5, 1 and 1.5. The seasonality scale spans 0–50% of annual reported severe-hail days. Preserve these ranges and marks on annual refreshes unless a documented new display edition is necessary.

State and regional summaries

Intersect each 80 km square with every state polygon in EPSG:5070. Weight each raw neighborhood mean by its square/state intersection area. The state mean is the weighted sum divided by the summed intersection area. The significant-hail mean uses the same weights. The highest local grid value is the largest raw severe-hail mean among squares with positive intersection area, even when a square center lies across the state boundary.

This is an area average of sampled neighborhood report-day frequencies. It is not the number of hailstorm days occurring anywhere in the state. A day affecting two neighborhoods can contribute to both local frequencies; a source report outside a state can contribute within a 25-mile neighborhood of a cell representing part of that state.

Washington, DC, intersects only one square; Rhode Island intersects three. Other small, coastal and border states also require care. A square’s center and observation circle may lie partly or entirely across a jurisdiction boundary. DC is included for geographic completeness, but it is not a state and its coarse value should not be interpreted as a DC-specific hail measurement.

Peak months maximize the area-weighted raw monthly means before rounding. Preserve every tied peak; the numeric tolerance for weighted arithmetic is 1×10⁻¹². If a grid point has no observed qualifying days, its peak is None observed. Rounded equal displayed values do not establish a statistical tie.

The seasonality heatmap uses these disjoint editorial groupings; each included jurisdiction appears once:

Regional group definitions
RegionState postal codes
Traditional-core statesCO, NE, WY
Northern PlainsMT, ND, SD, MN
Central PlainsIA, KS, MO
Southern PlainsOK, TX
SoutheastAL, AR, FL, GA, KY, LA, MS, NC, SC, TN
Great LakesIL, IN, MI, OH, WI
Northeast and Mid-AtlanticCT, DC, DE, ME, MD, MA, NH, NJ, NY, PA, RI, VT, VA, WV
SouthwestAZ, NM
Pacific and interior WestCA, ID, NV, OR, UT, WA

“Traditional-core states” aggregates entire states for reproducibility; it does not define the Hail Alley boundary or isolate the Front Range. A regional monthly mean uses the combined square/state intersection weights. Its percentage share divides that monthly mean by the sum of all 12 monthly means. Percentages describe the seasonal distribution of reported severe-hail days, not a probability that a storm will strike in a particular month. A zero in this sample is not a guarantee that hail cannot occur.

Comparison with official SPC products

Consulted official 1986–2015 reference products:

The NetCDF metadata explicitly describe mean days per year within 25 miles, using the two respective thresholds. For a reproducible broad-pattern check, project their coordinate locations into EPSG:5070, linearly interpolate onto the edition-1.0 centers and calculate spatial Spearman correlations with the new smoothed grids. Correlations are 0.9582 for the 1-inch layer and 0.9742 for the 2-inch layer across 1,378 shared centers. These statistics support broad geographic similarity, not exact agreement, causal inference or validation of an individual cell. Periods, map projections, grids and processing differ. The older maps are reference climatologies, not data substituted into the 2011–2025 analysis.

File dictionary

All CSVs are UTF-8, comma separated, with one header row and decimal points. Month lists use semicolons inside a field. Geographic coordinates in downloadable Point GeoJSON are longitude then latitude, WGS84, following RFC 7946. Derived floating-point CSV values are stored to eight decimal places for reproducibility; this does not imply that the underlying observations have that precision.

Main grid CSV and Point GeoJSON

Methodology field definitions
FieldMeaning
grid_idStable signed column and row integers on the EPSG:5070 lattice.
center_lat, center_lonCenter coordinates in decimal degrees.
center_x_m, center_y_mCenter coordinates in EPSG:5070 meters.
period_start, period_end, yearsInclusive source years and divisor, 15.
radius_miles, grid_spacing_kmFixed 25-mile projected neighborhood and 80-km lattice.
severe_hail_daysDistinct source dates with one or more reports at least 1 inch within the neighborhood.
severe_hail_days_per_yearSevere date count divided by 15.
smoothed_severe_days_per_yearNormalized Gaussian display value for the severe layer.
significant_hail_daysDistinct source dates with one or more reports at least 2 inches.
significant_hail_days_per_yearSignificant date count divided by 15.
smoothed_significant_days_per_yearNormalized Gaussian display value for the significant layer.
peak_monthsFull English month names tied for maximum raw severe count, or None observed.
report_countNumber of qualifying at-least-1-inch input reports in the neighborhood before same-day deduplication.
conus_cell_area_fractionFraction of the square inside the cartographic jurisdiction footprint, from greater than 0 through 1.
center_in_conusWhether the center is inside or on the footprint boundary.
severe_days_jan through severe_days_decInteger severe date counts by month over all 15 years.
significant_days_jan through significant_days_decInteger significant date counts by month over all 15 years.
source_version, source_download_dateSource/edition identifiers and original source acquisition date.

State summary CSV

Methodology field definitions
FieldMeaning
state, state_codeJurisdiction name and postal code, including District of Columbia.
area_weighted_mean_severe_hail_days_per_yearIntersection-area-weighted mean of raw 1-inch neighborhood frequencies.
highest_local_grid_severe_days_per_yearHighest raw severe value among intersecting squares.
area_weighted_mean_significant_hail_days_per_yearCorresponding weighted 2-inch mean.
peak_monthsUnrounded weighted monthly maximum, including tied peaks.
cartographic_area_km2Area of the generalized state footprint in EPSG:5070, including mapped water.
intersecting_grid_cellsCount of positive-area intersecting squares.
max_grid_idsGrid IDs tied for highest local severe value.
period_start, period_end, source_version, source_download_dateSource window and provenance.

Supplementary CSVs

Limitations

Report networks are uneven. Population, roads, trained observers and storm-chasing activity affect where reports appear; rural and nighttime hail can be missed. Reported diameters often cluster at familiar-object sizes and warning thresholds. A point coordinate is an observation, not the full hail swath. Missing reports do not establish that no hail occurred.

Grid spacing, neighborhood radius, projected distance approximation, generalized boundaries, area weighting and smoothing affect the result. Border neighborhoods lack Canadian and Mexican reports in this dataset. The product maps at-least-1-inch reported hail, not every small hail occurrence, and it is a 15-year historical analysis rather than a 30-year climate normal.

Hail-day frequency is not claims frequency, repair cost, expected financial loss or the probability of roof damage. No monetary-loss fields were used. Roof outcomes depend on the storm, impacts and building. This product does not provide a live forecast or resolve addresses, ZIP codes, properties or individual roofs. Rising report totals alone do not establish a climate-change trend.

Reproduction and updates

Place analyze_hail.py beside the saved source ZIPs, then run it using a Python environment containing NumPy, pandas, SciPy, Shapely, PyProj and pyshp. The script caches source files, verifies the edition hashes and writes derived data to a child outputs directory. If an official source has changed, it stops on the checksum mismatch instead of silently labeling new data edition 1.0. The optional rendering script creates the map and heatmap from the derived arrays and boundaries.

The script checks full year coverage, timestamp fields, threshold nesting, count/report inequalities, monthly-to-annual sums, area conservation and state mean/max consistency. It independently recomputes four radius/date neighborhoods by brute force, including the highest raw cell. All these checks passed for edition 1.0.

Refresh after SPC publishes its finalized previous-year data. Roll the window forward to retain 15 complete years. Preserve the grid origin, thresholds, radius, smoothing settings and published numeric legend breaks unless a documented new methodology edition is necessary. Archive previous files and checksums, record the new acquisition date and append the version history. Do not combine preliminary current-year reports with the finalized historical window.

Reuse

GeographyPin’s derived maps and data are offered under Creative Commons Attribution 4.0 International: https://creativecommons.org/licenses/by/4.0/ . Editorial, educational and other reuse is allowed under that license. Keep visible attribution such as “GeographyPin analysis of NOAA/SPC reports” and link to https://geographypin.com/hail-alley-map/ where practical. Identify modifications and retain the historical-data caveat. NOAA/SPC and Census source material retains its original status. Attribution must not imply government or GeographyPin endorsement.

Version history