ChescoWx · Chester County PA Area · 32 temperature stations · 1889–2025

Elevation: Do the Hills Really Run Colder?

Valley floors vs. hilltops across the Chester County Area · Temperature, frost, snow and rain

Ask around the County and most people will tell you the hills are colder. Our station network runs from 130 ft beside the Schuylkill at Phoenixville to 678 ft on the ridge at East Nantmeal, and it has been recording side by side for decades. Matching every station against its neighbors in the same years shows the hills are different, but not in the way most people expect: hilltop afternoons are cooler, valley nights are colder, and over a full day the two come out almost even.

Valley group, same years
  • Phoenixville 1E, Devault DEOS, KPTW Pottstown, Octoraro Lake, West Chester DEOS, West Bradford DEOS
  • Average elevation 265 ft
Hilltop group, same years
  • Glenmoore DEOS, New Holland 2 SE, Glenmoore, KMQS Coatesville, Atglen DEOS, West Grove DEOS, East Nantmeal
  • Average elevation 643 ft
How elevations were measured
  • USGS 3DEP lidar at the surveyed sensor coordinate where the coordinate is precise
  • NCEI station-history (HOMR) surveys for older COOP sites
  • FAA survey for the airports; 4 sites with no metadata are flagged low-confidence

Both groups measured over the same years, 2012–2025, so there is no difference in era. The right-hand column is the full-record result for all 32 stations (see How we did it).

MeasurementValleys (~265 ft)Hilltops (~643 ft)DifferencePer 1,000 ft, full recordVerdict
Average daily high64.2°F62.3°F−1.9°F−4.8°F p <0.001Cooler on hills
Average daily low43.8°F45.3°F+1.5°F+3.6°F p 0.008Colder in valleys
Average temperature54.0°F53.8°F−0.2°F−0.6°F p 0.38About even
Day-night swing (high minus low)20.3°F17.0°F−3.3°F−8.4°F p <0.001Narrower on hills
Hottest day of the year95.6°F93.2°F−2.4°F−4.9°F p 0.003Cooler on hills
Coldest night of the year4.2°F4.7°F+0.5°F+1.5°F p 0.54About even
Days 90°F or hotter18 days9 days−9 days−22 p 0.001Half as many on hills
Freezing nights (low 32°F or below)111 days96 days−15 days−35 p 0.001More in valleys
Ice days (high 32°F or below)15 days20 days+5 days+14 p <0.001More on hills
Last spring freezeApr 23Apr 13−10 days−22 days p 0.003Later in valleys
First fall freezeOct 22Nov 1+10 days+21 days p 0.003Earlier in valleys
Frost-free growing season181 days201 days+20 days+42 days p 0.003Longer on hills
Snowfall, same storms (human observers)-5% <350 ft+12% 550 ft++17 pts+44% p <0.001More on hills
Annual precipitation47.09"46.01"−1.09"−6% p 0.51No effect
The lay of the land

Chester County rises to the west, not to the north

Sampled from USGS 3DEP lidar about every 400 m, the County's ground runs from 70 ft where the Schuylkill leaves the County to 1,071 ft on the Welsh Mountain ridge, with half the County above 436 ft and a third above 500 ft. The rise is mostly east to west. The eastern third averages about 345 ft; the western uplands around Honey Brook, Parkesburg and Atglen average about 559 ft. North to south the change is small: the highest band is the middle-north (Glenmoore to Elverson), and the far north drops back into the French Creek and Schuylkill valleys. The Great Valley cuts a low green band straight across the middle of the County.

Shaded relief map of Chester County with weather station locations

Across the 42 stations, elevation rises clearly to the west (r = −0.63) but not to the north (r = −0.06). Southern hilltop sites like West Grove DEOS (671 ft) and Atglen DEOS (665 ft) are as high as the northern ones.

Temperature

Hilltops have cooler days and milder nights

If elevation worked here the way it does in the free atmosphere, every reading would fall about 3.6°F per 1,000 ft of climb, day and night alike. Daytime highs do fall, a little faster than that: −4.8°F per 1,000 ft. Overnight lows go the other way and rise +3.6°F per 1,000 ft. Averaged over the day, the two nearly cancel, and the average temperature shows no significant change with elevation at all (−0.6°F per 1,000 ft, p = 0.38).

Average daily high

Each dot is one station's long-term average, adjusted to the same years. Larger dots have longer records. Red line: best fit, r = −0.69.

Average daily low

Same stations. Lows climb with elevation, the opposite of the textbook lapse rate. r = +0.46.

Why nights run backwards

On clear, calm nights the ground loses heat fast and chills the air touching it. That cold air is dense, so it drains downhill like water and pools in the stream valleys: the Brandywine, the French Creek, the Octoraro, the Schuylkill. The hilltops sit above the pool in a band of milder air, the "thermal belt" that orchardists have planted on for centuries. In the afternoon the air is well mixed and the ordinary rule returns: higher means cooler. The result is a day-to-night swing that is about 3.3°F narrower on the hilltops.

Frost and growing season

The valleys freeze first, and stay frosty longer

Because the coldest air collects low, freeze counts fall with elevation. The hilltop group logged about 15 fewer freezing nights a year than the valley group over the same years, saw its first fall freeze about 10 days later and its last spring freeze about 10 days earlier, for a frost-free season roughly 20 days longer. Gardeners on the ridges really do get extra weeks.

The exception is the bitterest cold. Days when the high never gets above freezing (ice days) increase with height, 5 more a year on the hilltops, because those are windy, well-mixed Arctic outbreaks where the ordinary lapse rate applies. The single coldest night of the year shows no relationship with elevation (p = 0.54).

Freezing nights per year (low 32°F or below)

r = −0.55, −35 nights per 1,000 ft.

Growing season (days between last spring and first fall freeze)

r = +0.51, +42 days per 1,000 ft.

Height above your neighbors

Days follow elevation; nights follow the shape of the land

Elevation above sea level is only half the story. For each station with a surveyed sensor location (22 stations), we also measured how far it sits above or below the ground within 1 km of it, using the same 3DEP lidar. A station on a knoll scores positive; one in a hollow or stream valley scores negative. The two measures do completely different jobs:

MeasurementPer 1,000 ft of elevationPer 100 ft above surroundingsExplained, elevation aloneExplained, both
Average daily high−5.7°F p <0.001−0.1°F n.s.77%77%
Average daily low−0.2°F n.s.+1.8°F p <0.00129%76%
Average temperature−3.0°F p <0.001+0.9°F p <0.00115%63%
Freezing nights0 nights n.s.−16 nights p <0.00132%79%
Growing season+16 days n.s.+16 days p <0.00145%75%
Days 90°F or hotter−23 days p 0.010−1 days n.s.48%49%

Freezing nights vs. height above surroundings

Height above the average ground within 1 km. Elevation alone explains 32% of the station-to-station difference in freeze nights; height above surroundings explains 79%.

What this means on the ground

Afternoon highs care about absolute elevation: about −5.7°F per 1,000 ft, with no help from local terrain. Nights are the reverse. Once you know how far a site sits above its surroundings, elevation adds nothing to the overnight low. Each 100 ft above the neighboring ground is worth about +1.8°F on the average low and about 16 fewer freezing nights a year.

That is why Warwick DEOS (429 ft, in the French Creek valley) logs more freezing nights than Phoenixville at 130 ft, and why West Grove DEOS, perched about 140 ft above its surroundings, has the fewest of the surveyed stations. With both effects accounted for, the average temperature falls about 3.0°F per 1,000 ft, close to the textbook rate.

Snowfall

Snow: more on the hills, and more to the north

Season totals are a poor test because observers miss days and seasons. A better one compares observers in the same storms. We took 517 storms with a County median of 2" or more (1856–2026) and every human report in them: COOP observers, CoCoRaHS, trained spotters and NWS reports. Each site's typical share of the County median, in the storms it reported, is its snow factor. 61 sites reported 8 or more of these storms.

On that basis the elevation effect is clear: about +44% more snow per 1,000 ft (p <0.001). Allowing for location as well, elevation stays significant (+59% per 1,000 ft) and there is a separate north–south effect of about +4% for every 7 miles north (p 0.003). East–west has no effect of its own (−1.7%, p 0.21). The west gets a little more snow only because it is higher.

Group of observer sitesSnow vs. County median, same storms
Sites at 550 ft or higher+12%
Sites below 350 ft−5%
North of 40.0°N (roughly north of Downingtown)+7%
South of 40.0°N−3%
West of 75.75°W (roughly west of Glenmoore and Unionville)+4%
East of 75.75°W0%
Map of Chester County observer sites colored by snowfall relative to the County median in the same storms

Blue: more than the County median in the same storms. Red: less. The snowy band runs across the north and the western uplands; the southern hills around West Grove and Kennett get less despite their height.

Snow factor vs. elevation, same storms

Each dot is one observer site; larger dots reported more storms. Hollow dots: spotter and NWS reports, whose locations are town-level. Line: best fit weighted by storms reported, +44% per 1,000 ft.

In practical terms a site 1,000 ft higher gets roughly half again as much snow from the same storm. East Nantmeal (678 ft, north) runs about +44%; Phoenixville 1E (130 ft) runs about −5%. Over a typical 25-inch season that is the difference between about 36 and 24 inches. Individual sites still scatter widely around the line, because observer practice varies, which is why season totals alone could not show this.

Precipitation

Rain: no elevation effect

Annual precipitation shows no relationship with elevation (39 stations, r = −0.11, p = 0.51). Our hills are not tall enough to wring extra moisture out of passing storms. The gauge matters more than the ground: automated gauges average about −4% against the network and manual gauges about +3%, mainly because unheated tipping buckets undercatch snow and ice. The Chester County Airport ASOS (KMQS, 660 ft) is the extreme low reading on the chart for that reason, not because of where it sits.

Typical annual precipitation, adjusted to the same years (inches)

Grey line: best fit, flat and not significant. Hollow dots: elevation is low-confidence (no published site metadata).

How we did it

Comparing stations that never overlapped

The problem. A plain average of each station's record mixes elevation with era. Before 1950 the network was almost entirely valley sites; most hilltop stations arrived decades later. Weather varies from one decade to the next, so comparing a 1920s valley average with a 2010s hilltop average would mix the difference between those decades into the difference between the sites.

Two independent checks. First, the scoreboard above uses only 2012–2025, when 20 stations were reporting at once, so every station is measured in the same years. Second, the full record (32 stations, back to 1889) uses a year-matched fit: each station's value in each year is split into a station part and a part shared by everyone reporting that year. The station parts are then directly comparable, whatever years each station covered. Snow and rain use the same fit on a percentage scale.

The two methods agree on direction and significance for every temperature measure (table below).

Data gates. Station-years count only when temperature is complete and not flagged suspect; stations need at least 5 qualifying years. Snow seasons must pass the County snow-quality rules. The partial 2026 year is excluded. Known precipitation faults (KMQS 2008–2013 and 2016, London Grove 2015) are excluded.

Moved stations. West Chester 2NW relocated at least five times; its 304 ft elevation applies only to the 1998–2016 site, so only those years are compared. Its earlier sites still help line up the years but are not plotted.

Known station problems. Several stations have documented overnight-low artifacts (Devault 1W, Warwick DEOS from 2023, West Chester DEOS from 2018). Dropping them, along with the low-confidence elevations, leaves the low-temperature result intact: +3.5°F per 1,000 ft, p = 0.02.

MeasurementSame years 2012–2025 (20 stations)Full record, year-matched (32 stations)High-confidence elevations only
Average daily high−5.6°F r −.83, p <0.001−4.8°F r −.69, p <0.001−4.7°F r −.70, p <0.001
Average daily low+4.4°F r +.63, p 0.003+3.6°F r +.46, p 0.008+3.4°F r +.45, p 0.01
Average temperature−0.6°F r −.20, p 0.40−0.6°F r −.16, p 0.38−0.6°F r −.17, p 0.37
Day-night swing (high minus low)−10.0°F r −.81, p <0.001−8.4°F r −.65, p <0.001−8.0°F r −.66, p <0.001
Hottest day of the year−7.3°F r −.75, p <0.001−4.9°F r −.51, p 0.003−4.4°F r −.48, p 0.007
Coldest night of the year+1.7°F r +.25, p 0.28+1.5°F r +.11, p 0.54+1.5°F r +.11, p 0.55
Days 90°F or hotter−29 days r −.69, p <0.001−22 days r −.55, p 0.001−21 days r −.53, p 0.003
Freezing nights (low 32°F or below)−42 days r −.71, p <0.001−35 days r −.55, p 0.001−33 days r −.54, p 0.002
Ice days (high 32°F or below)+15 days r +.85, p <0.001+14 days r +.72, p <0.001+14 days r +.72, p <0.001
Last spring freeze−27 days r −.68, p <0.001−22 days r −.50, p 0.003−22 days r −.50, p 0.005
First fall freeze+28 days r +.71, p <0.001+21 days r +.50, p 0.003+20 days r +.50, p 0.005
Frost-free growing season+55 days r +.71, p <0.001+42 days r +.51, p 0.003+42 days r +.51, p 0.004

Terrain. Ground elevations come from the USGS 3DEP elevation service at 10 m resolution: a grid about every 400 m across the County, plus rings of points 250 m, 1 km and 3 km around every station and observer site. "Height above surroundings" is the site's elevation minus the average of the 1 km ring. It is computed only for stations with surveyed coordinates, because a coordinate rounded to a mile can land on the wrong hillside.

Same-storm snow. Each storm's reports are compared against that storm's County median, and a site's factor is fitted across all the storms it reported, so a site that only reported big storms is not favored. Spotter and NWS report locations are town centroids; the result holds with COOP and CoCoRaHS observers alone (+48% per 1,000 ft, p 0.002).