Monday, May 30, 2016

Averaging ERSST globally

ERSST V4 is the sea surface temperature data I use in TempLS. It comes out on about the 3rd of each month, earlier than land data. I have long been thinking about integrating it separately to make a SST index. I do calculate SST separately as part of the breakdown of TempLS. But that is part of a global mesh, and the land boundaries are fuzzy. Also there are issues of treatment of sea ice which need further development.

ERSST is published by NOAA as a monthly set of temperatures on a 2° square lat/lon grid, starting centered at (88S, 0E). Land grids are marked as NA, but sea ice is set to -1.8°C (freezing point of sea water), which is an ongoing problem. NOAA itself published global ocean temperatures about 2 weeks after release of ERSST, so my index should match that. The initial data may be modified somewhat by the time of the NOAA calc, although this shouldn't make a big change.

So this pushes me into the world of land and sea ice masking. I haven't used this in TempLS, mainly because the poor coverage of polar and Africa/S America regions dwarfs the boundary irregularity. There are instances of sea areas represented by land data and vice versa, but they tend to average out. And also masking does not work well with my preferred method of triangular mesh.

However, masking is appropriate for the regular SST grid. I started with land masking, which should be simpler because land doesn't move. I was once assured that land masks could be found in many places, but it wasn't so easy. What I want is a 2x2 grid showing the fractional amount of land in each, which I can use for weighting. It is weighting tht is the issue - a grid with a SST reading but only fractionally sea overweights that reading.

It wasn't so easy. Masks seems to be built in to various software. GIS people seem to have masks down to km resolution, or better. Matlab seems to have them, but I use R, which doesn't seem to have a package. GFDL had one that I teased out of NCDF, but then it was for a 2x2.5 mesh. I did find one at JISAO, that was actually marked for ERSST, and on a 2x2 grid, but it was just binary - 1 for sea, 0 for land. That doesn't add to the information in the ERSST file.

There is also the wrinkle that the ERSST values are central, which makes for a slightly off-key grid. In a typical grid 0N,0E would be the edge of a cell. But here it is the centre. However, I realised that I do have a resource that I download every day, which is the NOAA High Resolution OI SST. This has 1/4° resolution, and although there is no fractional information, I can build 2x2 cells with 65 fractional levels. You can see best what such a map would look like by going to that sphere plot and in the controls on right, changing the resolution from 1/2 to 1/4 and pressing "New Plot". But you can also see here how that resolution looks:

That worked well, and I have posted the resulting masks (see below). Then comes the sea ice issue. In TempLS I handle it by removing cells with month temperatures less than -1°C. The argument is that while SST is normally good proxy for air temperature, under ice it certainly isn't. And while -1.8 indicates absolutely frozen, a nearby reading probably means frozen for part of the month. Actually, a larger practical issue is the calculation of an anomaly base average. If you have a temperature of, say, 0°C now, and the ice was largely frozen during the base period, then an anomaly of 1.8°C is probably misleading. The air temperature during the base period was probably much lower than -1.8. So anomaly data is omitted much more because of failed base than because of present value.

So I looked up the Smith and Reynolds paper to see more how NOAA does it. They use a separate sea ice mask, which is compiled from different parts, but mostly from HADISST1. This goes to present (with delay) in a 1° square grid, and gives percentage values. I drew a plot of the sea ice fraction for January 2016 below. It uses an odd color scheme, which is two parts of a rainbow rearranged to show contrast halfway. The reason for this is that S&R say that 50% is their cut-off; cells with more than 50% ice are marked as no data.

Fractional ice cover

The good news is that the marginal areas are not huge. The bad news, of course, is that HADISST, or any other such data, will not be available early in the month. But I can use it for historic data. S&R explain how they use some other data to achieve their own mid-month publication, but I don't think I have access to that.

My own calculations with a simple cut-off at -1.8°C track the NOAA index quite well, but with a persistent small disparity, being in modern times (with 1961-90 base) about 0.01-0.03 °C cooler. I can raise this with a higher cutoff, so sea ice it does seem to be a likely cause. And I think that may be about the best I can do with the data available when ERSST comes out. But I'll see if I can do better with historical HADISST.

If I calculate global index, it also makes sense to calculate regions, by latitude and ocean, and I'll work out ways of doing that. I'll post again soon with results, and hopefully include the ERSST index with the regular data here for May.

I have posted a zipfile of the landmasks I made here. There are readme files, and two R save files, mask.sav and mask1.sav. Each contains a list (mask()) with masks for 1/4, 1/2, 1 and 2° square grids. mask.sav has the normal alignment, where (0,0) is a cell corner, and mask1 has the alignment I need here, where (0,0) is a centre (except for 1/4°). The order is as for ERSST, starting near (-90,0), lon first, then lat.


  1. Hi Nick,

    I tend to use the ERA-interim mask which you can get here:

    You can get it on a 1/8 degree grid if you want to get higher resolution than you have now.

    1. Thanks, Matter
      Unfortunately, your link requires a login, which I guess I could acquire, but I think the 1/4° is now probably adequate.