7.2 Weather Stations
Weather stations form the backbone of atmospheric observing systems. Surface stations, radiosondes, aircraft sensors, ocean buoys, and wind profilers provide in-situ measurements that serve as ground truth for remote sensing, supply initial conditions for numerical weather prediction, and constitute the long-term climate record. Understanding instrument principles, measurement uncertainties, data coding, and quality control is essential for every atmospheric scientist.
Surface Observation Networks
Surface weather observations are collected by thousands of stations worldwide and distributed via the WMO Global Telecommunication System (GTS). The three primary reporting formats are:
SYNOP
Synoptic observation code (FM 12). Reported at 00, 03, 06, 09, 12, 15, 18, 21 UTC by manned and automatic stations. Contains pressure, temperature, dewpoint, wind, weather, clouds, visibility, precipitation. Encoded in a standardized numerical format for international exchange.
METAR
Aviation routine weather report (FM 15). Issued hourly (or half-hourly at busy airports) with special reports (SPECI) for significant changes. Focus on aviation-critical parameters: ceiling, visibility, runway visual range, present weather, wind including gusts. Alphanumeric format used by pilots and flight dispatchers.
ASOS / AWOS
Automated Surface Observing System (USA) and Automated Weather Observing System. Over 900 ASOS stations report 1-minute observations and generate METAR. Sensors include: ultrasonic wind, capacitive T/Td, barometric pressure (3 redundant), tipping-bucket rain gauge, laser ceilometer, forward-scatter visibility sensor, freezing rain sensor.
Standard Meteorological Measurements
WMO standards specify instrument exposure, accuracy requirements, and reporting conventions for all surface meteorological variables.
Temperature (T)
Measured at 1.25-2.0 m above ground in a ventilated radiation shield (Stevenson screen or aspirated shield). Accuracy: $\pm$ 0.1 K. Platinum resistance thermometers (Pt100/Pt1000) are standard; thermistors and thermocouples also used. Response time ~20 s for aspirated sensors.
Humidity (Td, RH)
Dewpoint temperature and relative humidity. Chilled-mirror hygrometers are reference instruments (accuracy $\pm$ 0.2 K in Td). Operational stations use thin-film capacitive polymer sensors (accuracy $\pm$ 2-3% RH). Psychrometers (wet-bulb/dry-bulb) remain a backup method.
Pressure (p)
Station-level pressure measured by aneroid barometers, capacitive silicon sensors, or vibrating-cylinder sensors. Accuracy: $\pm$ 0.1 hPa. Mercury barometers (Torricelli, 1643) remain reference standards but are being phased out due to mercury toxicity. Barometric pressure is the single most important variable for synoptic analysis.
Wind (ff, dd)
Wind speed and direction at 10 m above ground (WMO standard). Cup anemometers + wind vanes, or ultrasonic 2D/3D anemometers. Reported as 2-min (SYNOP) or 10-min (METAR) mean with maximum gust. Accuracy: $\pm$ 0.5 m/s speed, $\pm$ 5$°$ direction.
Precipitation
Tipping-bucket rain gauges (0.2 mm resolution), weighing gauges (Geonor, OTT Pluvio), optical disdrometers (drop size distribution). Measured at ground level with wind shields (Alter, Tretyakov) to reduce catch deficit (up to 50% for snow without shielding).
Visibility
Forward-scatter sensors measure the scattering coefficient of air and compute meteorological optical range (MOR). Range: 10 m to 80+ km. Critical for aviation (RVR on runways). Human observers historically estimated visibility using landmarks at known distances.
Instrument Theory
Mercury Barometer (Torricelli, 1643)
The mercury barometer balances the weight of a mercury column against atmospheric pressure. At standard conditions (0$°$C, standard gravity):
$$p = \rho_{Hg}\,g\,h$$
where $\rho_{Hg} = 13595.1$ kg/m$^3$, $g = 9.80665$ m/s$^2$, and h is column height. 1 atm = 760 mmHg = 1013.25 hPa.
Psychrometer Equation
A psychrometer uses the wet-bulb depression ($T - T_w$) to determine humidity. The psychrometric equation relates wet-bulb temperature to vapor pressure:
$$e = e_s(T_w) - A\,p\,(T - T_w)$$
where $e$ is actual vapor pressure, $e_s(T_w)$ is saturation vapor pressure at the wet-bulb temperature, $A$ is the psychrometer coefficient ($\approx 6.6 \times 10^{-4}$ K$^{-1}$ for aspirated Assmann psychrometer), and $p$ is atmospheric pressure
Station Pressure Reduction to Mean Sea Level
To produce sea-level pressure charts for synoptic analysis, station pressure must be reduced to mean sea level (MSL). The standard WMO reduction uses the hypsometric equation:
$$p_{sl} = p_{stn} \exp\left(\frac{g\,z_{stn}}{R_d\,\bar{T}_v}\right)$$
where $z_{stn}$ is station elevation, $R_d = 287.05$ J/(kg K), and $\bar{T}_v$ is the mean virtual temperature of the fictitious air column between the station and sea level (estimated from station temperature with standard lapse rate assumptions)
Radiosondes
Radiosondes are expendable balloon-borne instrument packages that measure vertical profiles of temperature, humidity, and pressure as they ascend through the atmosphere. Modern GPS radiosondes also provide wind speed and direction from positional tracking. They are the most important source of upper-air data for NWP initialization.
~900
Upper-air stations globally (RAOB network)
5 m/s
Typical ascent rate (300 m/min)
~30 km
Balloon burst altitude (~10 hPa)
Launches occur at 00 UTC and 12 UTC (standard synoptic times). The flight lasts approximately 90 minutes. Data are transmitted in real time via UHF radio (typically 400-406 MHz) and encoded in the TEMP message format (FM 35) for dissemination on the GTS. Modern radiosondes (Vaisala RS41, Graw DFM-17, Meisei iMS-100) use GPS/GNSS tracking for winds with accuracy $\pm$ 0.1 m/s, replacing older radar-tracked rawinsondes.
Radiosonde Sensors
Temperature
Bead thermistor or thin wire (0.1 mm diameter). Accuracy: $\pm$ 0.3 K in troposphere, $\pm$ 0.5 K in stratosphere. Solar radiation correction applied during daytime flights based on ascent rate, solar angle, and sensor absorptivity.
Humidity
Thin-film capacitive polymer sensor. Accuracy: $\pm$ 4% RH in troposphere. Known issues: slow response at low temperatures, hysteresis, solar heating dry bias. Unreliable above ~15 km (too dry). Some sondes use heated twin-sensor design to mitigate icing.
Pressure
Silicon capacitive sensor or computed from GPS altitude using the hypsometric equation. Direct measurement accuracy: $\pm$ 1.0 hPa. GPS-derived pressure eliminates the need for a dedicated pressure sensor on some modern sondes.
Wind (GPS)
GPS position differencing at 1 Hz yields horizontal wind with $\pm$ 0.15 m/s accuracy and ~50 m vertical resolution. Far superior to optical theodolite tracking or radar tracking methods used historically.
TEMP Message Format
Upper-air data are reported at mandatory levels (1000, 925, 850, 700, 500, 400, 300, 250, 200, 150, 100, 70, 50, 30, 20, 10 hPa) and significant levels (where the temperature or humidity profile departs from linearity). The TEMP message includes Parts A (surface to 100 hPa), B (significant levels surface to 100 hPa), C (100 to ~10 hPa), and D (significant levels above 100 hPa). BUFR encoding is replacing the traditional alphanumeric format.
Wind Profilers and Other Observing Platforms
Doppler Wind Profilers
Wind profilers are vertically pointing Doppler radars (typically 404 MHz or 1290 MHz) that measure wind profiles continuously. Using the Doppler Beam Swinging (DBS) technique, the radar transmits in 3-5 directions (vertical + off-vertical at ~15$°$) and combines the radial velocities to reconstruct the 3D wind vector at each altitude gate. Vertical resolution: 60-400 m, temporal resolution: 6-60 minutes, altitude range: 0.5-16 km.
Aircraft Observations (AMDAR/ACARS)
Commercial aircraft equipped with the Aircraft Meteorological Data Relay (AMDAR) system report temperature, wind, and sometimes humidity and turbulence during flight. Over 4000 aircraft contribute ~700,000 observations daily, with especially dense coverage during ascent/descent near airports. AMDAR provides the most abundant upper-air wind data in the Northern Hemisphere extratropics.
Ocean Observations
Moored Buoys
Fixed position, measure SST, air temperature, pressure, wind, wave height. NDBC operates ~100+ buoys. TAO/TRITON array monitors ENSO in the tropical Pacific with moorings at 5$°$N/S intervals along the equator.
Drifting Buoys
Surface drifters measure SST and pressure (barometer drifters). The Argo program maintains ~4000 profiling floats that measure T/S profiles to 2000 m depth every 10 days. Ships provide VOS (Voluntary Observing Ship) reports and deploy XBT probes.
Data Quality Control
Before observations can be used in analysis and forecasting, they must pass quality control (QC) checks to detect and flag erroneous data. QC is performed at the station level, national level, and within data assimilation systems.
Gross Error Checks
Physical plausibility limits (e.g., T between -90$°$C and +60$°$C, p between 870-1085 hPa at sea level, RH 0-100%, wind speed 0-113 m/s). Data outside these bounds are immediately rejected.
Temporal Consistency
Rate-of-change checks: temperature should not change by more than 10$°$C/hour, pressure by more than 5 hPa/hour under normal conditions. Persistent value checks detect stuck sensors.
Spatial (Buddy) Checks
Compare observation with interpolated values from nearby stations. If departure exceeds a threshold (e.g., 5$\sigma$ of expected spatial variability), flag the observation. Effective for detecting station offsets or mislocated data.
Climatological Checks
Compare against station climatology: monthly mean $\pm$ N standard deviations. Catches systematic biases, seasonal coding errors, and equipment malfunctions. Use percentile-based limits for variables with non-Gaussian distributions.
Internal Consistency: Cross-variable checks ensure physical consistency: $T_d \leq T$, wind direction undefined when speed = 0, present weather codes consistent with observed precipitation and visibility. The WMO station model plots encode all surface variables graphically for synoptic map analysis.
Fortran: Radiosonde Data Processing
This Fortran program processes radiosonde data by computing geopotential heights from pressure and temperature using the hypsometric equation, and derives additional quantities such as virtual temperature, mixing ratio, and potential temperature.
program radiosonde_processing
implicit none
integer, parameter :: dp = selected_real_kind(15, 307)
integer, parameter :: nlevels = 15
! Physical constants
real(dp), parameter :: Rd = 287.05_dp ! Dry air gas constant [J/(kg K)]
real(dp), parameter :: g0 = 9.80665_dp ! Standard gravity [m/s^2]
real(dp), parameter :: eps = 0.622_dp ! Rd/Rv
real(dp), parameter :: cp = 1004.0_dp ! Specific heat [J/(kg K)]
real(dp), parameter :: p0 = 1000.0_dp ! Reference pressure [hPa]
! Radiosonde data arrays (mandatory levels)
real(dp) :: p(nlevels) ! Pressure [hPa]
real(dp) :: T(nlevels) ! Temperature [K]
real(dp) :: Td(nlevels) ! Dewpoint [K]
real(dp) :: z(nlevels) ! Geopotential height [m]
real(dp) :: Tv(nlevels) ! Virtual temperature [K]
real(dp) :: theta(nlevels) ! Potential temperature [K]
real(dp) :: w(nlevels) ! Mixing ratio [g/kg]
real(dp) :: es, e_act, Tv_mean
integer :: k
! Sample mandatory level data (typical mid-latitude sounding)
! Pressure [hPa]
p = (/ 1013.0_dp, 925.0_dp, 850.0_dp, 700.0_dp, 500.0_dp, &
400.0_dp, 300.0_dp, 250.0_dp, 200.0_dp, 150.0_dp, &
100.0_dp, 70.0_dp, 50.0_dp, 30.0_dp, 20.0_dp /)
! Temperature [K]
T = (/ 293.0_dp, 287.0_dp, 281.0_dp, 269.0_dp, 253.0_dp, &
243.0_dp, 229.0_dp, 221.0_dp, 216.0_dp, 213.0_dp, &
210.0_dp, 212.0_dp, 215.0_dp, 222.0_dp, 225.0_dp /)
! Dewpoint [K]
Td = (/ 289.0_dp, 283.0_dp, 275.0_dp, 260.0_dp, 237.0_dp, &
225.0_dp, 210.0_dp, 200.0_dp, 195.0_dp, 190.0_dp, &
185.0_dp, 183.0_dp, 180.0_dp, 178.0_dp, 176.0_dp /)
! Step 1: Compute mixing ratio and virtual temperature
do k = 1, nlevels
! Saturation vapor pressure at dewpoint [hPa] (Bolton 1980)
es = 6.112_dp * exp(17.67_dp * (Td(k) - 273.15_dp) / &
(Td(k) - 273.15_dp + 243.5_dp))
e_act = es ! At dewpoint, actual vapor pressure = es(Td)
! Mixing ratio [g/kg]
w(k) = 1000.0_dp * eps * e_act / (p(k) - e_act)
! Virtual temperature [K]: Tv = T(1 + 0.61*w_kg/kg)
Tv(k) = T(k) * (1.0_dp + 0.61_dp * w(k) / 1000.0_dp)
! Potential temperature [K]
theta(k) = T(k) * (p0 / p(k)) ** (Rd / cp)
end do
! Step 2: Compute geopotential height using hypsometric equation
! z2 - z1 = (Rd * Tv_mean / g) * ln(p1/p2)
z(1) = 0.0_dp ! Surface elevation (assume sea level)
do k = 2, nlevels
Tv_mean = 0.5_dp * (Tv(k-1) + Tv(k))
z(k) = z(k-1) + (Rd * Tv_mean / g0) * log(p(k-1) / p(k))
end do
! Output results
write(*,'(A)') '=== Radiosonde Derived Quantities ==='
write(*,'(A)') ' P[hPa] T[K] Td[K] Tv[K] theta[K]' // &
' w[g/kg] Z[m]'
write(*,'(A)') repeat('-', 72)
do k = 1, nlevels
write(*,'(F8.1, F8.1, F7.1, F8.1, F8.1, F9.2, F10.0)') &
p(k), T(k), Td(k), Tv(k), theta(k), w(k), z(k)
end do
! Print tropopause estimate (min temperature level)
write(*,'(A)') '--- Tropopause Estimate ---'
write(*,'(A,F8.1,A)') 'Min T = ', minval(T), ' K at'
write(*,'(A,F8.1,A)') 'Pressure = ', p(minloc(T, 1)), ' hPa'
write(*,'(A,F10.0,A)') 'Height = ', z(minloc(T, 1)), ' m'
end program radiosonde_processingInteractive Simulation: Station Data Analysis
PythonGenerate synthetic hourly weather station data (temperature, relative humidity, wind speed, pressure) over 7 days with realistic diurnal cycles. Plots time series and computes daily statistics and inter-variable correlations.
Click Run to execute the Python code
Code will be executed with Python 3 on the server