There are several features that can affect how low a temperature drops during the overnight hours. Clouds, current precipitation, wind, where the wind is coming from, ground cover, recent precipitation, etc.
During Daybreak Tuesday morning, the temperature in Roanoke was 58º, while it was 32º at SHD and 47º in Winchester. Why?
Easy answer? Winds and a few clouds. Winchester and Roanoke both saw sustained winds of 10 mph or greater throughout much of the night, from either the W or WNW - both of which would keep things relatively warm. Winchester also reported a few partly cloudy observations throughout the morning.
Looking at the skew-t diagram (we talked about these!), or the sounding, from several sites across West Virginia and Virginia, there was a prevalent inversion.
Many times we see an inversion, or temperature increasing with height, in the morning hours. Usually it is because of radiational cooling (cooling of the earth's surface), when the bottom of the surface layer cools more than the top of the surface layer because of longwave radiation.
But other factors can lead to an inversion - ever wonder why there are some mornings the higher elevations are warmer than the Valley? Most of the time we're starting to get warm air advection (warm air carried through the atmosphere via wind) in the mid levels of the atmosphere before the low levels. Therefore a station at 4,000ft will receive the warm air before a station at 900ft. That's another phenomena we see quite often here because of our terrain.