Using ICESat-2 ATL15 (Gridded Arctic Land Ice Height) to investigate ice-surface height anomalies
Contents
Using ICESat-2 ATL15 (Gridded Arctic Land Ice Height) to investigate ice-surface height anomalies#
Written by#
Wilson Sauthoff (https://wsauthoff.github.io)
Luis Lopez (https://betolink.dev/)
Jessica Scheick (https://eos.unh.edu/person/jessica-scheick)
Tasha Snow (https://tsnow03.github.io)
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 presist between logins. All of the libraries we intend to use are pre-installed so we can skip this step.
# import internal libraries
import os
# import external libraries
import earthaccess
import geopandas as gpd
import h5py
import hvplot.xarray
import icepyx as ipx
import matplotlib as mpl
%matplotlib widget
import matplotlib.colors as colors
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np
import pandas as pd
from pyproj import CRS, Transformer
import rioxarray
import s3fs
import xarray as xr
# define utility function
def ll2ps(lon, lat):
"""
Transform coordinates from geodetic coordinates (lon, lat)
to Greenland (epsg:3413) coordinates (x, y)
x, y = ll2ps(lon, lat)
Inputs
* lon, lat in decimal degrees (lon: W is negative; lat: S is negative)
Outputs
* x, y in [m]
"""
crs_ll = CRS("EPSG:4326")
crs_xy = CRS("EPSG:3413")
ll_to_xy = Transformer.from_crs(crs_ll, crs_xy, always_xy = True)
x, y = ll_to_xy.transform(lon, lat)
return x, y