Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Using ICESat-2 ATL15 (Gridded Arctic Land Ice Height) to investigate ice-surface height anomalies

Written by

Key learning outcomes:

  • How to gather data from disparate sources.

  • What is a Coordinate Reference System (CRS) and why it matters.

  • How to use geometries including Points and Polygons to define an area of interest and subset data.

  • The basics of how the icepyx library simplifies obtaining and interacting with ICESat-2 data.

  • How Xarray can simplify the import of multi-dimensional data.

  • Open, plot, and explore gridded raster data.

Computing environment

We will set up our computing environment with library imports and utility functions

Tip: If you need to import a library that is not pre-installed, use %pip install <package-name> alone within a Jupyter notebook cell to install it for this instance of CryoCloud (the pip installation will not persist between logins).

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Greenland subglacial lakes

There are two classes of subglacial lakes: stable and active. Stable lakes have had a stable volume over the observational record whereas active episodically drain and fill. We can observe active subglacial lakes using ice-surface deformation time series.

In this tutorial, we will focus on Greenland where active subglacial lakes have been inferred from surface height changes.

Northern hemisphere subglacial lakes compiled in a global inventory by Livingstone and others (2020):

N. hemisphere subglacial lakes

We can investigate active subglacial lakes using ice surface height anomalies as the overlying ice deforms when active lakes drain and fill episodically. These videos from NASA’s Science Visualization Studio illustrate how we observe active lakes filling and draining through time.

Locating the Greenland subglacial lakes

Consulting the supplementary data of the Livingstone and others (2020) inventory, we can construct a geopandas geodataframe to investigate Greenland’s subglacial lakes.

Opening non-cloud-hosted data uploaded to your CryoCloud Jupyter hub

If we are working with a dataset that is not cloud hosted or unavailable via a URL, we can upload that dataset to CryoCloud.

First, decide where the uploaded data will live on your CryoCloud hub. It could be a data directory folder that you create in your CryoCloud’s base directory or put the data into your working directory (whichever file management technique you prefer).

Second, download the paper’s supplementary data by clicking here.

Third, upload the supplementary data spreadsheet into your new data directory folder or your working directory. The supplementary data spreadsheet (.xlsx) is already uploaded to our working directory.

Loading...

However, this data has a direct download URL, so we can read the data directly into our notebook, skipping the download and upload steps:

Open data directly via URL

Loading...

This is looking good, but we can make it even better by storing the data in a GeoPandas GeoDataFrame which offers additional functionality beyond pandas. You can add a geometry column of Shapely objects that make geospatial data processing and visualization easier. Here we have Shapely points:

Loading...

Let’s look at Greenland’s active subglacial lake inventory by filtering on the Lake Type column:

Loading...

Now let’s plot the lake locations to ensure our data read-in went as expected. But first, we need to make sure all projections for the data we want to show are the same.

What is a CRS/EPSG?

  • A Coordinate Reference System (CRS) tells you how the Earth’s 3-D surface is projected onto a 2-D plane map. Below are examples of various projections of continguous USA from an excellent Data Carpentry tutorial on the CRS topic:

Coordinate Reference System comparison
  • A particular CRS can be referenced by its EPSG code (e.g., epsg:4326 as we used in the GeoPandas GeoDataFrame example above). The EPSG is a structured dataset of CRS and Coordinate Transformations. It was originally compiled by the now defunct European Petroleum Survey Group (EPSG) but continues to be one common way of representing a specific CRS.

  • Most map projections make land areas look proportionally larger or smaller than they actually are. Below is intuitive visualization of this from another excellent site of tutorials on geospatial topics called Earth Lab:

How projections distort a human head
  • Because of this distortion, we select a projection that is best suited for the geographic region we are studying to minimize distortions.

  • Previously we used epsg:4326, which is a geographic coordinate system that makes use of the World Geodetic System 1984 (WGS84) ellipsoid as a datum reference elevation. A datum consists in an ellipsoid relative to which the latitude and longitude of points are defined, with a geoid defining the surface at zero height (visual from ESA’s navipedia):

What is a datum
  • A geographic coordinate system is more than just the ellipsoid. It adds a coordinate system and units of measurement. epsg:4326 uses the very familiar longitude and latitude and degrees as the coordinate system and units. We selected epsg:4326 because longitude and latitude were the coordinates in the dataset.

  • There are numerous formats that are used to document a CRS. Three common formats include: proj.4, EPSG, and Well-known Text (WKT) formats.

  • Useful websites to look up CRS strings are spatialreference.org and espg.io. You can use the search on these sites to find an EPSG code.

  • Often you have data in one format or projection (CRS) and you need to transform it to a more regionally accurate CRS or match it to another datasets’ CRS to plot them together. Let’s transform our geopandas data to the NSIDC Sea Ice North Polar Stereographic projection (epsg:3413) easily visualize our lakes on a projection that minimizes distortion of our area of interest (Greenland).

Loading...

Using the Shapely Polygon geometry to create a search radius and subset data

  • The Shapely points used before are useful to tell us the centroid of the lakes.

  • However, we’d like to be able to create a search radius around that point to search for and subset data.

  • Some datasets are massive, so using Shapely polygons as a search radius around your region of interest will speed up your computation.

Loading...

Now that we know our active lake locations, let’s grab data to study the filling and draining of the lakes. We will use ICESat-2 surface elevations to investigate.

What is ICESat-2?

ICESat-2 (Ice, Cloud, and land Elevation Satellite 2), part of NASA’s Earth Observing System, is a satellite mission for measuring ice sheet elevation and sea ice thickness, as well as land topography, vegetation characteristics, and clouds. It does so using an altimeter or an altitude meter, which is an instrument used to measure the altitude of an object above a fixed level (the datum we talked about earlier). This is typically achieved by measuring the time it takes for a lidar or radar pulse, released by a satellite-based altimeter, to travel to a surface, reflect, and return to be recorded by an onboard instrument. ICESat-2 uses three pairs of laser pulsers and the detector to count the reflected photons.

ICESat-2 laser configuration (from Smith and others, 2019):

ICESat-2 laser configuration

What is ATL14/15?

ATL15 is one of the various ICESat-2 data products. ATL15 provides various resolutions (1 km, 10 km, 20 km, and 40 km) of gridded raster data of height change at 3-month intervals, allowing for visualization of height-change patterns and calculation of integrated active subglacial lake volume change (Smith and others, 2022).

ATL14 is an accompanying high-resolution (100 m) digital elevation model (DEM) that provides spatially continuous gridded data of ice sheet surface height.

Learn more about the ICESat-2 ATL14/15 Gridded Antarctic and Arctic Land Ice Height Change data product dataset here.

Streaming cloud-hosted data from NASA Earth Data Cloud

We will be working with cloud-hosted data files. This guide explains how to find and access Earthdata cloud-hosted data. Here is a complete list of earthdata cloud-hosted data products currently available from NSIDC.

Using icepyx to simplify searching for ICESat-2 data

icepyx is a community and Python software library that simplifies the process of searching (querying), accessing (via download or in the cloud), and working with (including subsetting, visualizing, and reading in) ICESat-2 data products. A series of examples introduce users to its functionality, and the icepyx community always welcomes new members, feature requests, bug reports, etc.

To search for data spatially, icepyx accepts shapefiles, kml files, and geopackage files, as well as bounding boxes and polygons, as input bounding regions. We have two options for supplying this information: (1) save one of the lakes’ geometries as a geopackage or (2) extract the exterior coordinates and supply them directly. You may run either of the next two cells; then we’ll use the spatial information to query ICESat-2 data for that region.

We can visualize our spatial extent on an interactive map with background imagery.

{'Number of available granules': 4, 'Average size of granules (MB)': 226.04341173171997, 'Total size of all granules (MB)': 904.1736469268799}
[['ATL15_GL_0321_40km_004_01.nc', 'ATL15_GL_0321_20km_004_01.nc', 'ATL15_GL_0321_10km_004_01.nc', 'ATL15_GL_0321_01km_004_01.nc'], ['s3://nsidc-cumulus-prod-protected/ATLAS/ATL15/004/ATL15_GL_0321_40km_004_01.nc', 's3://nsidc-cumulus-prod-protected/ATLAS/ATL15/004/ATL15_GL_0321_20km_004_01.nc', 's3://nsidc-cumulus-prod-protected/ATLAS/ATL15/004/ATL15_GL_0321_10km_004_01.nc', 's3://nsidc-cumulus-prod-protected/ATLAS/ATL15/004/ATL15_GL_0321_01km_004_01.nc']]
's3://nsidc-cumulus-prod-protected/ATLAS/ATL15/004/ATL15_GL_0321_01km_004_01.nc'

You can manually find s3 URL’s for cloud-hosted data from NASA Earth Data

Learn more about finding cloud-hosted data from NASA Earth data cloud here

The next step (accessing data in the cloud) requires a NASA Earthdata user account. You can register for a free account here. We provide two options for reading in your data: (1) by setting up an s3 file system and using Xarray directly; or (2) by using icepyx (which uses Xarray under the hood). Currently, the read time is similar with both methods. The h5coro library will soon be available to help speed up this process.

The file system method requires you complete a login step. icepyx will automatically ask for your credentials when you perform a task that needs them. If you do not have them stored as environment variables or in a .netrc file, you will be prompted to enter them.

Enter your Earthdata Login username:  icepyx_devteam
Enter your Earthdata password:  ········
['delta_h/Polar_Stereographic', 'delta_h/time', 'delta_h/x', 'delta_h/y', 'dhdt_lag1/dhdt/Bands', 'dhdt_lag1/dhdt_sigma/Bands', 'dhdt_lag1/ice_area/Bands', 'dhdt_lag1/Polar_Stereographic', 'dhdt_lag1/time', 'dhdt_lag1/x', 'dhdt_lag1/y', 'dhdt_lag12/dhdt/Bands', 'dhdt_lag12/dhdt_sigma/Bands', 'dhdt_lag12/ice_area/Bands', 'dhdt_lag12/Polar_Stereographic', 'dhdt_lag12/time', 'dhdt_lag12/x', 'dhdt_lag12/y', 'dhdt_lag16/dhdt/Bands', 'dhdt_lag16/dhdt_sigma/Bands', 'dhdt_lag16/ice_area/Bands', 'dhdt_lag16/Polar_Stereographic', 'dhdt_lag16/time', 'dhdt_lag16/x', 'dhdt_lag16/y', 'dhdt_lag20/dhdt/Bands', 'dhdt_lag20/dhdt_sigma/Bands', 'dhdt_lag20/ice_area/Bands', 'dhdt_lag20/Polar_Stereographic', 'dhdt_lag20/time', 'dhdt_lag20/x', 'dhdt_lag20/y', 'dhdt_lag4/dhdt/Bands', 'dhdt_lag4/dhdt_sigma/Bands', 'dhdt_lag4/ice_area/Bands', 'dhdt_lag4/Polar_Stereographic', 'dhdt_lag4/time', 'dhdt_lag4/x', 'dhdt_lag4/y', 'dhdt_lag8/dhdt/Bands', 'dhdt_lag8/dhdt_sigma/Bands', 'dhdt_lag8/ice_area/Bands', 'dhdt_lag8/Polar_Stereographic', 'dhdt_lag8/time', 'dhdt_lag8/x', 'dhdt_lag8/y', 'orbit_info/bounding_polygon_dim1', 'orbit_info/bounding_polygon_lat1', 'orbit_info/bounding_polygon_lon1', 'quality_assessment/phony_dim_1', 'quality_assessment/qa_granule_fail_reason', 'quality_assessment/qa_granule_pass_fail', 'tile_stats/N_bias', 'tile_stats/N_data', 'tile_stats/Polar_Stereographic', 'tile_stats/RMS_bias', 'tile_stats/RMS_d2z0dx2', 'tile_stats/RMS_d2zdt2', 'tile_stats/RMS_d2zdx2dt', 'tile_stats/RMS_data', 'tile_stats/sigma_tt', 'tile_stats/sigma_xx0', 'tile_stats/sigma_xxt', 'tile_stats/x', 'tile_stats/y']
{'Polar_Stereographic': ['delta_h/Polar_Stereographic'], 'time': ['delta_h/time'], 'x': ['delta_h/x'], 'y': ['delta_h/y']}
Loading...

We can acquaint ourselves with this dataset in a few ways:

  • The data product’s overview page (Smith and others, 2022) to get the very basics such as geographic coverage, CRS, and what the data product tells us (quarterly height changes).

  • The Xarray Dataset read-in metadata: clicking on the written document icon of each data variable will expand metadata including a data variable’s dimensions, datatype, etc.

  • The data product’s data dictionary (Smith and others, 2021) to do a deep dive on what individual variables tell us.

  • The data product’s Algorithm Theoretical Basis Document

We’ll be plotting the delta_h data variable in this tutorial, here’s what we can learn about from these sources:

  • ATL14/15’s overview page: this is likely the ‘quarterly height changes’ described, but let’s dive deeper to be sure

  • ATL14/15’s Xarray Dataset imbedded metadata tells us a couple things: delta_h =height change at 1 km (the resolution selected earlier) and height change relative to the datum (Jan 1, 2020) surface

  • ATL14/15’s data dictionary: delta_h = quarterly height change at 40 km

Ok, since the data is relative to a datum, we have two options:

  1. Difference individual time slices to subtract out the datum, like so:

    (time0_0 - datum) - (time1_1 - datum) = time0_0 - datum - time1_1 + datum = time0_0 - time1_1

  2. Subtract out the datum directly. The datum is the complementary dataset high-resolution DEM surface contained in tha accompanying dataset ATL14.

In this tutorial we’ll use the first method. We’ll use some explanatory data analysis to illustrate this.

Loading...

Hmmm...doesn’t look like much change over this quarter. Why? Check out the bounds of the colorbar, we’ve got some pretty extreme values (colorbar is defaulting to ±10 m!) that appear to be along the margin. It’s making more sense now. We can change the bounds of the colorbar to plot see more of the smaller scale change in the continental interior.

-5.8791504
6.1810913

We can use a TwoSlopeNorm to achieve different mapping for positive and negative values while still keeping the center at zero:

Loading...

Now the colorbar bounds are more representative, but we still have the issue that extreme values along the margin are swapping any signals we might see in the continental interior.

Loading...

We can use these quantiles as the colorbar bounds so that we see the data variability by plotting the most extreme values at the maxed out value of the colorbar. We’ll adjust the caps of the colorbar (using extend) to express that there are data values beyond the bounds.

Loading...

Let’s zoom into an individual active lake to see more detail. First let’s remind ourselves of the Greenland active subglacial lakes by filtering on lake type:

Loading...

Now using these geometry bounds we can plot the area immediately around the active subglacial lake.

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Summary

Congratulations! You’ve completed the tutorial. In this tutorial you have gained the skills to:

  • Transfrom Coordinate Reference Systems.

  • Open data into Pandas, GeoPandas and Xarray DataFrames/Arrays.

  • Use Shapely geometries to define an area of interest and subset data.

  • Learned to use icepyx for streamlining data access.

References

Livingstone, S.J., Li, Y., Rutishauser, A. et al. Subglacial lakes and their changing role in a warming climate. Nat Rev Earth Environ 3, 106–124 (2022). doi:Livingstone et al. (2022)

Smith, B., Fricker, H. A., Holschuh, N., Gardner, A. S., Adusumilli, S., Brunt, K. M., et al. (2019). Land ice height-retrieval algorithm for NASA’s ICESat-2 photon-counting laser altimeter. Remote Sensing of Environment, 233, 111352. doi:Smith et al. (2019)

Smith, B., T. Sutterley, S. Dickinson, B. P. Jelley, D. Felikson, T. A. Neumann, H. A. Fricker, A. Gardner, L. Padman, T. Markus, N. Kurtz, S. Bhardwaj, D. Hancock, and J. Lee. (2022). ATLAS/ICESat-2 L3B Gridded Antarctic and Arctic Land Ice Height Change, Version 2 [Data Set]. Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. Smith et al. (2022). Date Accessed 2023-03-16.

Smith, B., T. Sutterley, S. Dickinson, B. P. Jelley, D. Felikson, T. A. Neumann, H. A. Fricker, A. Gardner, L. Padman, T. Markus, N. Kurtz, S. Bhardwaj, D. Hancock, and J. Lee. “ATL15 Data Dictionary (V01).” National Snow and Ice Data Center (NSIDC), 2021-11-29. https://nsidc.org/data/documentation/atl15-data-dictionary-v01. Date Accessed 2023-03-16.

References
  1. Smith, B., Fricker, H. A., Holschuh, N., Gardner, A. S., Adusumilli, S., Brunt, K. M., Csatho, B., Harbeck, K., Huth, A., Neumann, T., Nilsson, J., & Siegfried, M. R. (2019). Land ice height-retrieval algorithm for NASA’s ICESat-2 photon-counting laser altimeter. Remote Sensing of Environment, 233, 111352. 10.1016/j.rse.2019.111352
  2. Smith, B., Sutterley, T., Dickinson, S., Jelley, B., Felikson, D., Neumann, T., Fricker, H., Gardner, A., Padman, L., Markus, T., Kurtz, N., Bhardwaj, S., Hancock, D., & Lee, J. (2022). ATLAS/ICESat-2 L3B Gridded Antarctic and Arctic Land Ice Height Change, Version 2. NASA National Snow. 10.5067/ATLAS/ATL15.002
  3. Livingstone, S. J., Li, Y., Rutishauser, A., Sanderson, R. J., Winter, K., Mikucki, J. A., Björnsson, H., Bowling, J. S., Chu, W., Dow, C. F., Fricker, H. A., McMillan, M., Ng, F. S. L., Ross, N., Siegert, M. J., Siegfried, M., & Sole, A. J. (2022). Subglacial lakes and their changing role in a warming climate. Nature Reviews Earth & Environment, 3(2), 106–124. 10.1038/s43017-021-00246-9