Contributors: Melissa Wrzesien1,2, Brendan McAndrew1,3, Jian Li4,5, Caleb Spradlin4,6
1 Hydrological Sciences Lab, NASA Goddard Space Flight Center, 2 University of Maryland, 3 Science Systems and Applications, Inc., 4 InuTeq, LLC, 5 Computational and Information Sciences and Technology Office (CISTO), NASA Goddard Space Flight Center, 6 High Performance Computing, NASA Goddard Space Flight Center
Learn about the role of modeling in a satellite mission
Open, explore, and visualize gridded model output
Compare model output to raster- and point-based observation datasets
The goal of a future snow satellite is to provide improved understanding of global snow mass, as compared to current estimates. However, a single sensor likely won’t be able to accurately observe all types of snow in all conditions for the entire globe. Instead, we need to combine future snow observations with other tools - including models and observations from currently available satellites.
Models can also help to extend snow observations to areas where observations are not available. Data may be missing due to orbit gaps or masked out in regions of higher uncertainty. Remote sensing observations and models can be combined through data assimilation, a process where observations are used to constrain model estimates.
The figure above shows a conceptual example of how satellite observations with orbit gaps could be combined with a model to produce results with no missing data. (Figure modified from diagram provided by Eunsang Cho)
What is LIS?¶
Since models will likely play a role in processing observations from a snow satellite mission, it is important to become comfortable working with gridded data products. Today we will use sample model output from NASA’s Land Information System (LIS).
The Land Information System is a software framework for land surface modeling and data assimilation developed with the goal of integrating satellite and ground-based observational data products with advanced modeling techniques to produce estimates of land surface states and fluxes.
TL;DR LIS = land surface models + data assimilation
One key feature LIS provides is flexibility to meet user needs. LIS consists of a collection of plug-ins, or modules, that allow users to design simulations with their choice of land surface model, meteorological forcing, data assimilation, hydrological routing, land surface parameters, and more. The plug-in based design also provides extensibility, making it easier to add new functionality to the LIS framework.
Current efforts to expand support for snow modeling include implementation of snow modules, such as SnowModel and Crocus, into the LIS framework. These models, when run at the scale of ~100 meters, will enable simulation of wind redistribution, snow grain size, and other important processes for more accurate snow modeling.
Development of LIS is led by the Hydrological Sciences Laboratory at NASA’s Goddard Space Flight Center. (Figure above provided by the LIS team)
Working with Modeled Output¶
Here we will use sample model output from a LIS-SnowModel simulation over a western Colorado domain. Daily estimates of SWE, snow depth, and snow density are written to output. The SnowModel simulation has a spatial resolution of 100 m. We’ve provided four years of output, though here we’ll mostly use output from water year 2020.
Below, we’ll walk through how to open and interact with the LIS-SnowModel output. Our main objectives are to demonstrate how to do the following with a gridded dataset like LIS-SnowModel:
Understand attributes of model data file and available variables
Create a spatial map of model output
Create time series at a point and averaged across domain
Compare LIS-SnowModel to raster and point data
Create a visualization for quick evaluation of model estimates
# interface to Amazon S3 filesystem import s3fs # interact with n-d arrays import numpy as np import xarray as xr # interact with tabular data (incl. spatial) import pandas as pd import geopandas as gpd # interactive plots import holoviews as hv import geoviews as gv import hvplot.pandas import hvplot.xarray # set bokeh as the holoviews plotting backend #hv.extension('bokeh') # set holoviews backend to Bokeh #gv.extension('bokeh') # used to find nearest grid cell to a given location from scipy.spatial import distance import fsspec from datetime import datetime as dt from geoviews import opts from geoviews import tile_sources as gvts from datashader.colors import viridis import datashader from holoviews.operation.datashader import datashade, shade, dynspread, spread, rasterize from holoviews.streams import Selection1D, Params import panel as pn import param as pm import warnings import holoviews.operation.datashader as hd warnings.filterwarnings("ignore") pn.extension() pn.param.ParamMethod.loading_indicator =True