MATLAB Examples

cryosat2_data documentation

The cryosat2_data returns Slater's 2018 or Helm et al's 2014 Antarctic surface elevation DEM and correspondig geographic or polar stereographic cartesian coordinates.

See also cryosat2_interp.


Requirements and installation

This function requires the Antarctic Mapping Tools package found here. You'll also need the dataset(s) from Helm and/or Slater. You might just want one or both, it's up to you.

Helm: You can download the data manually here, unzip the two Antarctic folders containing .tif files, and make sure Matlab knows how to find the folders by adding a path to the folder. Alternatively you might able to just type the following two lines to download and unzip the Helm data:


Slater: Manually download the .tif files here. Or you can try typing this into your Command Window:



Z = cryosat2_data
Z = cryosat2_data(lati,loni)
Z = cryosat2_data(xi,yi)
Z = cryosat2_data(...,extrakm)
Z = cryosat2_data(...,'res',resolution)
[lat,lon,Z] = cryosat2_data(...)
[X,Y,Z] = cryosat2_data(...,'xy')
[...] = cryosat2_data(...,'uncertainty')
[...] = cryosat2_data(...,'author',AuthorOption)


Z = cryosat2_data returns CryoSat-2 surface elevation data at the full 1 km resolution. This is a 6669x6669 dataset and loading may take a second. Surface elevations are relative to the WGS84 ellipsoid.

Z = cryosat2_data(lati,loni) returns only enough CryoSat-2 data to fully encompass a set of points given by geo coordinates lati,loni.

Z = cryosat2_data(...,xi,yi) returns only enough CryoSat-2 data to fully encompass a set of points given by polar stereographic (True lat -71) coordinates xi,yi.

Z = cryosat2_data(...,extrakm) as above, but encompasses points xi,yi or lati,loni and adds a buffer of specified width extrakm in kilometers around all four sides of data points. This is useful when you want data surrounding a point or several measurments.

Z = cryosat2_data(...,'res',resolution) specifies a resolution in kilometers. By default, this function returns the full 1 km CryoSat-2 data set. Downsampling is somewhat crude as it only loads every Nth datapoint rather than antialiasing. For a good antialiased low-res dataset, load the full dataset then use imresize to attain the resolution you seek.

[lat,lon,Z] = cryosat2_data(...) returns geo coordinates and elevation or mask data Z.

[X,Y,Z] = cryosat2_data(...,'xy') returns polar stereographic coordinates when the 'xy' tag is included.

[...] = cryosat2_data(...,'uncertainty') loads the uncertainty dataset rather than the surface elevation dataset.

[...] = cryosat2_data(...,'author',AuthorOption) specifies either 'slater2018' (default), or 'helm2014'.

Example 1: Comparison to Bedmap2

Suppose you're interested in the elevation of Totten Glacier and the surrounding region. Totten Glacier is located at

scarloc 'totten glacier'
ans =
        -66.83        116.33

so load a 500 km wide DEM by setting (66.83S,116.33E) as the center point and specify a 250 km buffer on all sides of the centerpoint. Below I'm specifying Zc as the CryoSat surface elevation to distinguish it from Bedmap2 elevation data which we'll load later:

[lat,lon,Zc] = cryosat2_data(-66.83,116.33,250);

Use surfps if you want to see the surface in fancy 3D and also return a handle which we'll use later:

h = surfps(lat,lon,Zc);

Now we're ready to quantitatively compare Slater's CryoSat-2 DEM to Bedmap2. Use bedmap2_interp to get the surface elevation from Bedmap2. Remember, an important difference between Bedmap2 and the CryoSat-2 DEMs is that Bedmap2 is natively referenced to the geoid, whereas the CryoSat-2 DEM is referenced to WGS-84 ellipsoid. You can either use Antarctic Geoid Conversions functions to get them on the same reference or you can specify 'surfw' to denote the WGS-84-referenced elevations when you load Bedmap2 data:

Zb = bedmap2_interp(lat,lon,'surfw');

Now set the color data in the surface plot as the difference between Slater's CryoSat-2 and Bedmap2. Also place a colorbar and use a cmocean diverging colormap (Thyng et al., 2016):

cb = colorbar;
ylabel(cb,'CryoSat-2 (Slater) minus Bedmap2 (m)')
caxis([-200 200])
cmocean curl

Change to a nadir viewing angle:

axis tight
shadem(-3) % applies relief shading

Example 2: Uncertainty in the Helm et al. 2014 DEM

Load a 1100 km by 1100 km uncertainty grid centered on Crary Ice Rise. To start, use scarloc to find the coordinates of Mount Finley:

scarloc 'crary ice rise'
ans =
        -82.93       -172.50

Now a 1100 km by 1100 km grid can be loaded as the center coordinate plus a 550 km buffer around top, bottom, left, and right edges:

[lat,lon,U] = cryosat2_data(-82.93,-172.5,550,'uncertainty','author','helm');

Now here's a map of uncertainty in the Helm et al., 2014 DEM:

axis tight
cb = colorbar('southoutside');
xlabel(cb,'Helm et al., 2014 DEM uncertainty (m)')
mapzoomps('nw') % places an inset in the upper left corner

Citing these datasets

If you use CryoSat-2 data, please cite whichever dataset you use and, if you can, please also cite Antarctic Mapping Tools:

Slater, Shepherd, McMillan, Muir, Gilbert, Hogg, Konrad and Parrinello: A new digital elevation model of Antarctica derived from CryoSat-2 altimetry, The Cryosphere, 2018.

Helm, Veit; Humbert, Angelika; Miller, Heinz (2014): Elevation and elevation change of Greenland and Antarctica derived from CryoSat-2. The Cryosphere, 8(4), 1539-1559,

Greene, C. A., Gwyther, D. E., & Blankenship, D. D. Antarctic Mapping Tools for Matlab. Computers & Geosciences. 104 (2017) pp.151-157.

Author Info

This function was written by Chad A. Greene of the Institute for Geophysics (UTIG) at the University of Texas in Austin, April 2016, updated May 2018 to include Slater's new DEM.