Skip to content

Commit

Permalink
Update README.md with introductory information for viewers
Browse files Browse the repository at this point in the history
  • Loading branch information
garyo committed Feb 10, 2024
1 parent 23a6120 commit a2d0d50
Showing 1 changed file with 68 additions and 14 deletions.
82 changes: 68 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,53 @@
# Sea Surface Temp Visualization

This python code downloads daily worldwide sea surface temp datasets
and visualizes them either as a world map on a given day, or as a time
series per year.
Sea Surface Temperatures are a key indicator of climate change. The
world's oceans are a significant reservoir of heat, warming and
cooling much more slowly than the atmosphere. Ocean heat drives larger
storms, adds more moisture to the air above the ocean, and affects sea
life and ocean chemistry. Monitoring ocean temperature is important to
understand the drivers and impacts of climate change.

It downloads the sea surface temp data from
https://www.ncei.noaa.gov/data/sea-surface-temperature-optimum-interpolation/v2.1/access/avhrr.
That contains daily HDF datasets containing .25° lat/lon cells over
the entire Earth surface for each day since 1982, including temp and
temperature anomaly compared to the historical mean for that date.
NOAA's [National Centers for Environmental
Information](https://www.ncei.noaa.gov/) maintains datasets of daily
global ocean temperatures, derived mostly from satellites and updated
using ship and buoy based observations. The raw data is filtered and
resampled onto a 1/4-degree grid over the whole globe, and is
available for every day from 1981 through the present at [their
website](https://www.ncei.noaa.gov/products/climate-data-records/sea-surface-temperature-optimum-interpolation)
with one or two days lag. It is an amazing testament to the incredible
work of scientists and engineers worldwide that we have access to
real-time data like this.

This code processes those datasets into maps for any given day, or
line charts with temp per day for the entire time period. The processing steps include:
- limiting to +/- 60° latitude, to ignore the polar regions
- removing cells containing > 50% ice cover
- weighting each cell by its actual area (cells closer to the poles are smaller)
This tool produces a set of visualizations of that data: maps of the
latest temperature, and a set of time series of average temps for all
years. For each of those, it shows the actual temperatures as well as
the variance or "anomaly" from the mean value from the 1971-2000 time
period. The anomalies are computed cell by cell by subtracting the
mean value at that grid cell over the 1971-2000 period.

Several things stand out from the time series graphs:

- Ocean temperatures have been steadily increasing over the 40-year
recorded time span, visible in the graph as the later years are
shaded darker blue.
- Sea surface temperatures have been rising significantly since 2023,
reaching daily records every day since spring of that year. (This
acceleration beyond the global climate change signal is largely due
to [El Niño](https://oceanservice.noaa.gov/facts/ninonina.html), but
also somewhat to the underwater eruption of the [Hunga-Tonga
volcano](https://volcano.si.edu/volcano.cfm?vn=243040) in 2022 and
slightly affected by the 2020 [regulation of
sulfur](https://www.imo.org/en/MediaCentre/PressBriefings/pages/02-IMO-2020.aspx)
in marine fuels, which had been masking temperature rises.)
- The all-time record for temperature was set in Feb 2024, and the
all-time record for temperature variance from the mean was set in
January 2024. Both records are likely to be broken as 2024
progresses.

For technical details on data sources and how this code works, see [below](#technical-details).

Here are the latest files, auto-produced daily by a github action. You can use these directly on the web via these URLs:

Latest files, auto-produced daily by a github action. You can use these directly via these URLs:
- https://github.com/garyo/sea-surface-temp-viz/releases/latest/download/sst-map.png
- https://github.com/garyo/sea-surface-temp-viz/releases/latest/download/sst-anom-map.png
- https://github.com/garyo/sea-surface-temp-viz/releases/latest/download/sst-all.png
Expand All @@ -29,3 +60,26 @@ Latest files, auto-produced daily by a github action. You can use these directly

For older examples, see the `doc` subdir.

# Technical Details

This python code downloads daily worldwide sea surface temp datasets
and visualizes them either as a world map on a given day, or as a time
series per year.

It downloads the sea surface temp data from
https://www.ncei.noaa.gov/data/sea-surface-temperature-optimum-interpolation/v2.1/access/avhrr.
That contains daily HDF datasets containing .25° lat/lon cells over
the entire Earth surface for each day since 1982, including temp and
temperature anomaly compared to the historical mean for that date.

It processes those datasets into maps for any given day, or
line charts with temp per day for the entire time period. The processing steps include:
- limiting to +/- 60° latitude, to ignore the polar regions
- removing cells containing > 50% ice cover
- weighting each cell by its actual area (cells closer to the poles are smaller)

Because it takes a while to download all the datasets, it keeps a disk
cache in `./sst-data-cache.json`. If you want to re-run from scratch,
just delete that file. It does process datasets in parallel using
`asyncio` but to get all the global datasets since 1981 takes around
20 minutes on my machine.

0 comments on commit a2d0d50

Please sign in to comment.