The data pipeline
Every reading starts with real weather. ClimaSafe queriesOpen-Meteo at 59 points spread across the three islands, requesting air temperature, relative humidity, wind speed and direction, surface pressure, cloud cover, and three solar-radiation fields (direct, diffuse, and shortwave). A Cloudflare Worker caches the response for 15 minutes so the site stays fast and courteous to the upstream API. Land cover for surface context comes from theESA WorldCover 2021 dataset.
From weather to WBGT
The map does not fetch a WBGT number, it computes one, in your browser, for every point. It uses the Liljegren et al. (2008)energy-balance model, the method meteorological institutions use to derive WBGT from standard weather. The model solves two miniature physics problems: the steady-state temperature of a black globe absorbing sun, and the temperature of a wetted wick losing heat to evaporation and airflow. Those become the globe (Tg) and natural wet-bulb (Tnwb) terms, combined as 0.7 · Tnwb + 0.2 · Tg + 0.1 · Ta.
This matters because a common shortcut substitutes the ordinary (psychrometric) wet-bulb temperature for the natural one. That shortcut is only valid in shade and understates outdoor heat in sun, precisely the USVI case. ClimaSafe does the full physics instead.
The verification chain
Three links, each independently checkable:
Liljegren et al. (2008)
The peer-reviewed physical model, used operationally by national meteorological services.
doi:10.1080/15459620802310770
ECMWF thermofeel
Europe’s reference implementation, itself validated against Liljegren’s original C code.
oracle for 840 test cases
ClimaSafe’s engine
The browser implementation, checked against that oracle across the full tropical envelope.
max deviation 0.0000 °C
Solar geometry, which governs how much direct sun loads the globe, is validated separately against NREL’s Solar Position Algorithm (via pvlib) across 1,440 samples spanning five dates and all three islands. The worst-case impact of our solar approximation on the final WBGT is ±0.11°F, and just 0.03°F at peak midday sun. Interpolation, wind-vector, and color-binning math each carry their own automated test suites.
npm run verify:all. When the numbers change, the proof runs again.Honest limitations
We would rather you trust ClimaSafe because it is candid than because it is confident:
- Resolution. 59 query points feed a weather model that resolves ~11 km. Interpolation smooths between them; it does not create real sub-kilometre weather. Your exact spot can differ.
- Model, not stations. The inputs are model output, not a physical sensor on each ridge and beach.
- Stylized layers. Cloud puffs are a visualization of real cloud-cover %, not imagery. Wind direction and relative speed are real; particle speed is scaled for readability.
- Surface context. The land-cover notes (urban, beach, forest) are illustrative, literature-informed context and are not added to the displayed WBGT.
- Not an advisory. ClimaSafe is educational and does not replace NWS/NOAA advisories or professional medical guidance.
References & data sources
- Liljegren, J.C., et al. (2008). J. Occup. Environ. Hyg. doi:10.1080/15459620802310770
- Kong, Q., & Huber, M. (2022). Explicit Calculations of WBGT Compared With Approximations. Earth's Future. doi:10.1029/2021EF002334
- Reda, I., & Andreas, A. (2004). Solar Position Algorithm. NREL (via pvlib).
- Open-Meteo weather API, open-meteo.com. ESA WorldCover 2021, esa-worldcover.org.
- U.S. NWS WBGT, weather.gov/ict/WBGT. OSHA heat, osha.gov/heat-exposure.