I’ve updated and improved my code that tracks the state of BC’s snowpack using the automated snow pillow network, and thought I’d give a little bit more detail into what goes into the map and the graphs. There is a great Q+A with Tony Litke, one of the province’s snow specialists, here.
First off, what’s is a snow pillow? Basically, it’s an anti-freeze and water filled bladder that gets installed on a large concrete pad somewhere in the mountains. The hydrostatic pressure of the overlying snowpack pushes the antifreeze/water solution into a standpipe, and the height of that is measured with an automatic sensor. There are also newer versions that are basically giant scales measuring the weight of the snowpack.
Second, the snow pillows record snow water equivalence or SWE, and SWE is probably the most important snowpack variable from a hydrology perspective. It’s also the hardest to measure continuously as its a function of both snow depth and snow density, and those snow pillows are tough to install and maintain. The best way to think about SWE is to think about how much water you’d have if you melted the snow completely. One cubic meter of snow, with a density of 200 kg/m3, would turn into 0.2 cubic metres (or 200 litres) of water.
On to the code: the snow pillows in BC update automatically through the magic of satellites and cellular networks, and the province of BC updates a .csv file gives the current year’s SWE values for all the stations in the province. The code goes through each station, and matches the ID with the historical SWE data that pulled together by Vionnet et al. (2021) in their CanSWE dataset. For each day of the year, the quantiles of SWE data are calculated (see below), and then I plot the 25th, 50th, and 75th of SWE on each day of the year along with the current year’s values.
Because I’m also interested in the accumulation and melt rates, I look at the change in SWE from day to day in the historical data and the current year.
As the code goes through each station, it grabs the current day’s SWE, and the median historical SWE for the day of year, and stores that with yet another dataset that contains the latitude, longitude, and elevation of each snow pillow station. From there, I calculate the percent difference from normal, and map it using colours to represent how the snowpack is doing, in real-time (red is way below normal, blue is way above normal). The little histogram in the corner just shows the number of stations with a given percentage of normal, and the average (black line) for the day of analysis.