Code for producing the SNOWSCAPE dashboard. The dashboard assembles webcam images, WSR-88D (NEXRAD) radar products, and instrument data into a single composite figure that is regenerated at 15-min intervals during field operations.
The dashboard was developed in support of the SNOWSCAPE field campaign in northern Utah.
| Code | Name | Elevation (m MSL) | Instruments |
|---|---|---|---|
| SNI | Snowbasin | 2256 | MRR Pro, CL61 ceilometer, Lufft gauge, MWR |
| UHNTC | Huntsville | 1529 | MRR-2, CL31 ceilometer, Lufft gauge |
| UUSYR | Syracuse | 1285 | MRR-2, CL31 ceilometer, Lufft gauge, MWR |
├── instrument_functions/ # Instrument data loading libraries
│ ├── Ceilometer_Functions.py
│ ├── Lufft_Functions.py
│ ├── MRR_functions.py
│ ├── MRRPro_Functions.py
│ └── MWR_Functions.py
├── data/ # Pre-computed terrain profiles for radar cross sections
│ ├── BLP_distance_along_azimuth.npy
│ ├── BLP_elevation_along_azimuth.npy
│ ├── SNI_distance_along_azimuth.npy
│ └── SNI_elevation_along_azimuth.npy
├── Produce_Instrument_Plots_v2.py
├── Produce_Snowscape_Dashboard_v2.py
├── Reflectivity_Script.py
├── Get_Snowbasin_Webcam.py
├── Snowscape_Dashboard_Functions.py
└── map_script_2.py
| File | Description |
|---|---|
Ceilometer_Functions.py |
Loads CL61 (SNI) and CL31 (UHNTC, UUSYR) ceilometer NetCDF files |
Lufft_Functions.py |
Retrieves Lufft precipitation sensor data from the Synoptic Data API |
MRR_functions.py |
Loads processed MRR-2 NetCDF files for Huntsville and Syracuse |
MRRPro_Functions.py |
Loads processed MRR Pro NetCDF files for Snowbasin |
MWR_Functions.py |
Parses Radiometrics LV2 CSV files from the microwave radiometer |
Pre-computed terrain elevation profiles along each KMTX radar azimuth, used by
Reflectivity_Script.py to overlay terrain on range-height cross sections.
| File | Description |
|---|---|
Produce_Instrument_Plots_v2.py |
Generates a 6-panel time-height figure for one site (MRR Ze, velocity, spectral width; ceilometer backscatter; MWR liquid density; Lufft precip) |
Reflectivity_Script.py |
Downloads the most recent KMTX scan from AWS and produces a composite reflectivity map and range-height cross sections toward Snowbasin and Ben Lomond Peak |
Produce_Snowscape_Dashboard_v2.py |
Assembles all products into the final dashboard composite figure |
Get_Snowbasin_Webcam.py |
Downloads the latest Snowbasin Wildcat webcam image from Ski Utah |
Snowscape_Dashboard_Functions.py |
Helper functions for Produce_Snowscape_Dashboard_v2.py: loads camera images, radar product images, and per-site instrument plots |
map_script_2.py |
Loads the topography grid and Utah lake outlines used by Reflectivity_Script.py |
Install the required Python packages (a conda environment is recommended):
numpy
xarray
pandas
matplotlib
cartopy
pyart-mpl # Py-ART (conda-forge: arm-pyart)
requests
boto # legacy boto library for NEXRAD AWS access
shapely
geopandas
Each script contains a clearly marked section at the top with path variables:
| Script | Variable(s) to set |
|---|---|
instrument_functions/MRR_functions.py |
base_path |
instrument_functions/MRRPro_Functions.py |
base_path, site_name |
Produce_Instrument_Plots_v2.py |
IMAGE_DIR, instrument data directories |
Reflectivity_Script.py |
FigDir |
Get_Snowbasin_Webcam.py |
save_path |
Snowscape_Dashboard_Functions.py |
DashboardDir, horel_camera_images, Individual_Site_Plots |
Produce_Snowscape_Dashboard_v2.py |
DashboardDir, Basin_Cam, Individual_Site_Plots, logo_path |
python Produce_Instrument_Plots_v2.py --site SNI
python Produce_Instrument_Plots_v2.py --site UUSYR
python Produce_Instrument_Plots_v2.py --site UHNTCpython Reflectivity_Script.pypython Get_Snowbasin_Webcam.pypython Produce_Snowscape_Dashboard_v2.pyThese scripts are run on a cron schedule every 15 minutes during the field campaign.
Michael Wasserstein — University of Utah, Department of Atmospheric Sciences
