Did you know that the St. Moritz Casino is the highest in Switzerland? If you like gambling, I have a little game for you: what are the odds to find snow near St. Moritz?

Fortunately, I just finished the processing of 218 Sentinel-2 dates from 2015-Dec-04 to 2018-Apr-10 of tile 32TNS with our let-it-snow processor. I did this off-line production for a colleague because, as of today, Theia only distributes the snow products after July 2017 in this region of Switzerland (see the available products here). A quick way to check the output is to compute a snow cover probability map: that is, for each pixel, the number of times that snow was observed divided by the number of times that the snow could be observed.

To compute this map we just need to know that the Theia snow products (LIS_SEB.TIF raster files) are coded as follows:

0: No-snow 100: Snow 205: Cloud including cloud shadow 254: No data

Here is a piece of script to do this:

#!/bin/bash 
# initialize snow.tif with zeros
# store in Byte because we have less than 255 dates
f0=$(find . -name LIS_SEB.TIF | head -1)
gdal_calc.py --overwrite -A $f0 --type=Byte --calc=A*0 --outfile=snow.tif
# accumulate snow pixels in snow.tif
for f in $(find . -name LIS_SEB.TIF)
do
# snow is coded with 100
gdal_calc.py --overwrite -A $f -B snow.tif --type=Byte --calc="B+(A==100)" --outfile=snow.tif
done
# now do the same for clear.tif
# init
gdal_calc.py --overwrite -A $f0 --type=Byte --calc=A*0 --outfile=clear.tif
# accumulate clear pixels in clear.tif
for f in $(find . -name LIS_SEB.TIF)
do
# only snow and no snow are coded with values lower than 101
gdal_calc.py --overwrite -A $f -B clear.tif --type=Byte --calc="B+(A<101)" --outfile=clear.tif
done
# Finally compute the snow probability in % (100.0* makes the calculation in float)
gdal_calc.py -A snow.tif -B clear.tif --type=Byte --calc="(100.0*A)/B" --outfile=snowProba.tif

This is the output:

The images are scaled from 0 (black) to 100 (white). The units are number of days for snow and clear, percentage for snowProba.

From which you can map the odds to find snow near St. Moritz (click on the image to animate)! 

One thought on “The odds to find snow in St. Moritz

  1. Hi Simone,Just trying to mimic the recent flood event in Lake Eyre basin (24/03/2018): https://earthobservatory.nasa.gov/IOTD/view.php?id=92100), based on one of your scripts. I am not familiar with flood mapping using Sentinel images and appreciate if you could check a slightly modified version of your script:// This script was originally written by Simon Ilyushchenko (GEE team) and ….// Default locationvar pt = ee.Geometry.Point(137.292, -28.175); // LAKE Eyre Basin// Load Sentinel-1 C-band SAR Ground Range collection (log scaling, VV co-polar)var collection = ee.ImageCollection(‘COPERNICUS/S1_GRD’).filterBounds(pt).filter(ee.Filter.listContains(‘transmitterReceiverPolarisation’, ‘VV’)).select(‘VV’);// Filter by datevar before = collection.filterDate(‘2018-02-18’, ‘2018-03-20’).mosaic();var after = collection.filterDate(‘2018-04-09’, ‘2018-04-15’).mosaic();// Threshold smoothed radar intensities to identify « flooded » areas.var SMOOTHING_RADIUS = 500;var DIFF_UPPER_THRESHOLD = -3;var diff_smoothed = after.focal_median(SMOOTHING_RADIUS, ‘circle’, ‘meters’).subtract(before.focal_median(SMOOTHING_RADIUS, ‘circle’, ‘meters’));var diff_thresholded = diff_smoothed.lt(DIFF_UPPER_THRESHOLD);// Display mapMap.centerObject(pt, 13);Map.addLayer(before, {min:-30,max:0}, ‘Before flood’);Map.addLayer(after, {min:-30,max:0}, ‘After flood’);Map.addLayer(after.subtract(before), {min:-10,max:10}, ‘After – before’, 0);Map.addLayer(diff_smoothed, {min:-10,max:10}, ‘diff smoothed’, 0);Map.addLayer(diff_thresholded.updateMask(diff_thresholded),{palette: »0000FF »},’flooded areas – blue’,1);thanksDawit

Répondre à Dawit Berhane Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.