Temperature -vs- Elevation

Just back from a weekend riding on the Blue Ridge Parkway. So beautiful. My data field logs Live Weather Temp, Device Temp, and Elevation every 15 minutes so I can plot the graph below. Unlike flat Florida, Device Temp was more realistic, as the temperature varied dramatically as I climbed and descended between 2000 ft and 6000 ft. The general rule of thumb is about 3.5F for every 1000 ft (but that varies of course depending on many factors).

I've seen people refer to Open Weather. Is that what Garmin uses for its native Weather library?

Weather Underground would also suffer from not taking elevation change into account. But Device Temps suffer from sun exposure. Most users won't have a TEMPE sensor. So I'd like to improve on those flaws.

Does any Weather Service report the Station's Elevation? If so, I could at least apply a 3.5F offset as my actual elevation varies from the Station's elevation.

I've never implemented a Web Request. Any decent code examples that demonstrate how to grab Weather Underground temps? That would be interesting to compare to Garmin's WX data and Device Temps.

Thanks!!