!pip install -q rasterstats
!pip install -q odc-stac -U
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt
import numpy as np
import rasterstats
import rioxarray as rxr
import rasterio
import adlfs
import contextily as ctx
from tqdm import tqdm
from pathlib import Path
#from dask.distributed import Client, LocalCluster
#cluster = LocalCluster(processes=False, n_workers=4, local_directory='/tmp')
#client = Client(cluster)
#client
import dask_gateway
cluster = dask_gateway.GatewayCluster()
client = cluster.get_client()
cluster.adapt(minimum=10, maximum=100)
print(client.dashboard_link)
https://pccompute.westeurope.cloudapp.azure.com/compute/services/dask-gateway/clusters/prod.76584750d1ae4a98add3ee9dfe8e0711/status
gf = gpd.read_file('https://raw.githubusercontent.com/scottyhq/snotel/967b0071f3716118bfcae866c740cffb51fbb5f5/snotel-sites.geojson')
gf
code | name | elevation_m | latitude | longitude | county | state | beginDate | endDate | isActive | mgrs | timeseries | geometry | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 301_CA_SNTL | Adin Mtn | 1886.712036 | 41.235828 | -120.791924 | Modoc | California | 1983-10-01 00:00:00 | 2100-01-01 | True | 10TFL | True | POINT (-120.79192 41.23583) |
1 | 907_UT_SNTL | Agua Canyon | 2712.719971 | 37.522171 | -112.271179 | Kane | Utah | 1994-10-01 00:00:00 | 2100-01-01 | True | 12SUG | True | POINT (-112.27118 37.52217) |
2 | 916_MT_SNTL | Albro Lake | 2529.840088 | 45.597229 | -111.959023 | Madison | Montana | 1996-09-01 00:00:00 | 2100-01-01 | True | 12TVR | True | POINT (-111.95902 45.59723) |
3 | 1267_AK_SNTL | Alexander Lake | 48.768002 | 61.749668 | -150.889664 | Matanuska-Susitna | Alaska | 2014-08-28 00:00:00 | 2100-01-01 | True | 05VPJ | True | POINT (-150.88966 61.74967) |
4 | 908_WA_SNTL | Alpine Meadows | 1066.800049 | 47.779572 | -121.698471 | King | Washington | 1994-09-01 00:00:00 | 2100-01-01 | True | 10TET | True | POINT (-121.69847 47.77957) |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
925 | 877_AZ_SNTL | Workman Creek | 2103.120117 | 33.812420 | -110.917732 | Gila | Arizona | 1938-12-01 00:00:00 | 2100-01-01 | True | 12SWC | True | POINT (-110.91773 33.81242) |
926 | 1228_UT_SNTL | Wrigley Creek | 2842.869629 | 39.132332 | -111.356850 | Sanpete | Utah | 2012-10-01 00:00:00 | 2100-01-01 | True | 12SVJ | True | POINT (-111.35685 39.13233) |
927 | 1197_UT_SNTL | Yankee Reservoir | 2649.321533 | 37.747971 | -112.774948 | Iron | Utah | 2012-10-01 00:00:00 | 2100-01-01 | True | 12SUG | True | POINT (-112.77495 37.74797) |
928 | 878_WY_SNTL | Younts Peak | 2545.080078 | 43.932251 | -109.817749 | Park | Wyoming | 1979-10-01 00:00:00 | 2100-01-01 | True | 12TWP | True | POINT (-109.81775 43.93225) |
929 | 1033_CO_SNTL | Zirkel | 2846.832031 | 40.794880 | -106.595352 | Jackson | Colorado | 2002-08-14 06:00:00 | 2100-01-01 | True | 13TCF | True | POINT (-106.59535 40.79488) |
930 rows × 13 columns
snotel_gf = gf[gf.isActive==True]
snotel_gf = snotel_gf[(snotel_gf.beginDate<'2015-01-01') & (snotel_gf.endDate>'2022-01-01')]
snotel_gf = snotel_gf[snotel_gf.state!='Alaska']
f,ax=plt.subplots()
snotel_gf.plot(ax=ax)
ctx.add_basemap(ax=ax, crs=snotel_gf.crs, source=ctx.providers.Stamen.Terrain, attribution=False)
years = [2015,2016,2017,2018,2019,2020,2021,2022]
#years = [2016,2017,2018,2019,2020,2021,2022]
#years = [2017,2018,2019,2020,2021,2022]
max_swe_years = [f'max_swe_{year}' for year in years]
#for i,row in tqdm(snotel_gf.iterrows()):
# try:
# snotel_data = pd.read_parquet(f'https://github.com/scottyhq/snotel/raw/main/parquet/{row.code}.parquet').loc[slice(f'{years[0]}-01-01',f'{years[-1]}-12-31')]
# snotel_data = snotel_data[(snotel_data.index.month>1)&(snotel_data.index.month<10)]
# dates = snotel_data.groupby(snotel_data.index.year).idxmax()['WTEQ']
#print(dates)
# if len(dates)==len(years):
# snotel_gf.loc[i,max_swe_years] = dates.values
# except:
# pass
#date_index = []
#for date in dates.index.values:
# date_index.append(f'max_swe_{date}')
#snotel_gf = snotel_gf.loc[i,iter(date_index)] = dates.loc[2015:2022]
%%time
my_file = Path("snotel_gf_comparison.geojson")
if my_file.is_file():
snotel_gf = gpd.read_file('snotel_gf_comparison.geojson')
else:
for i,row in tqdm(snotel_gf.iterrows()):
try:
snotel_data = pd.read_parquet(f'https://github.com/scottyhq/snotel/raw/main/parquet/{row.code}.parquet').loc[slice(f'{years[0]}-01-01',f'{years[-1]}-12-31')]
snotel_data = snotel_data[(snotel_data.index.month>1)&(snotel_data.index.month<8)]
dates = snotel_data.groupby(snotel_data.index.year).idxmax()['WTEQ']
dates = dates[dates.notna()]
#print(dates)
#if len(dates)==len(years):
# snotel_gf.loc[i,max_swe_years] = dates.values
for year in [date for date in dates.index]:
snotel_gf.loc[i,f'max_swe_{year}'] = int(dates.dt.dayofyear[year])
except:
pass
#for year in years:
# snotel_gf[f'max_swe_{year}'] = pd.to_datetime(snotel_gf[f'max_swe_{year}']).dt.dayofyear
snotel_gf.to_file("snotel_gf_comparison.geojson", driver='GeoJSON')
CPU times: user 109 ms, sys: 0 ns, total: 109 ms Wall time: 115 ms
snotel_gf
code | name | elevation_m | latitude | longitude | county | state | beginDate | endDate | isActive | ... | timeseries | max_swe_2015 | max_swe_2016 | max_swe_2017 | max_swe_2018 | max_swe_2019 | max_swe_2020 | max_swe_2021 | max_swe_2022 | geometry | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 301_CA_SNTL | Adin Mtn | 1886.712036 | 41.235828 | -120.791924 | Modoc | California | 1983-10-01 00:00:00 | 2100-01-01 | True | ... | True | 32.0 | 51.0 | 68.0 | 86.0 | 75.0 | 32.0 | 74.0 | 76.0 | POINT (-120.79192 41.23583) |
1 | 907_UT_SNTL | Agua Canyon | 2712.719971 | 37.522171 | -112.271179 | Kane | Utah | 1994-10-01 00:00:00 | 2100-01-01 | True | ... | True | 64.0 | 33.0 | 65.0 | 78.0 | 81.0 | 88.0 | 76.0 | 71.0 | POINT (-112.27118 37.52217) |
2 | 916_MT_SNTL | Albro Lake | 2529.840088 | 45.597229 | -111.959023 | Madison | Montana | 1996-09-01 00:00:00 | 2100-01-01 | True | ... | True | 107.0 | 97.0 | 122.0 | 107.0 | 121.0 | 114.0 | 117.0 | 154.0 | POINT (-111.95902 45.59723) |
3 | 908_WA_SNTL | Alpine Meadows | 1066.800049 | 47.779572 | -121.698471 | King | Washington | 1994-09-01 00:00:00 | 2100-01-01 | True | ... | True | 105.0 | 96.0 | 109.0 | 108.0 | 83.0 | 102.0 | 107.0 | 116.0 | POINT (-121.69847 47.77957) |
4 | 302_OR_SNTL | Aneroid Lake #2 | 2255.520020 | 45.213280 | -117.192581 | Wallowa | Oregon | 1980-10-01 00:00:00 | 2100-01-01 | True | ... | True | 99.0 | 122.0 | 123.0 | 112.0 | 112.0 | 117.0 | 106.0 | 135.0 | POINT (-117.19258 45.21328) |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
791 | 877_AZ_SNTL | Workman Creek | 2103.120117 | 33.812420 | -110.917732 | Gila | Arizona | 1938-12-01 00:00:00 | 2100-01-01 | True | ... | True | 32.0 | 40.0 | 32.0 | 51.0 | 54.0 | 80.0 | 32.0 | 55.0 | POINT (-110.91773 33.81242) |
792 | 1228_UT_SNTL | Wrigley Creek | 2842.869629 | 39.132332 | -111.356850 | Sanpete | Utah | 2012-10-01 00:00:00 | 2100-01-01 | True | ... | True | 63.0 | 89.0 | 66.0 | 82.0 | 89.0 | 90.0 | 83.0 | 76.0 | POINT (-111.35685 39.13233) |
793 | 1197_UT_SNTL | Yankee Reservoir | 2649.321533 | 37.747971 | -112.774948 | Iron | Utah | 2012-10-01 00:00:00 | 2100-01-01 | True | ... | True | 63.0 | 91.0 | 94.0 | 64.0 | 81.0 | 88.0 | 86.0 | 80.0 | POINT (-112.77495 37.74797) |
794 | 878_WY_SNTL | Younts Peak | 2545.080078 | 43.932251 | -109.817749 | Park | Wyoming | 1979-10-01 00:00:00 | 2100-01-01 | True | ... | True | NaN | 89.0 | 76.0 | 105.0 | 106.0 | 108.0 | 92.0 | 119.0 | POINT (-109.81775 43.93225) |
795 | 1033_CO_SNTL | Zirkel | 2846.832031 | 40.794880 | -106.595352 | Jackson | Colorado | 2002-08-14 06:00:00 | 2100-01-01 | True | ... | True | 66.0 | 97.0 | 70.0 | 100.0 | 96.0 | 92.0 | 86.0 | 109.0 | POINT (-106.59535 40.79488) |
796 rows × 21 columns
snotel_gf = snotel_gf.to_crs('EPSG:32611')
buffer = 500 # at 1000m with 2015 excluded, medians of medians at 38 days, with 500m 34 days, with 200m 36.25 days, with 2000m 37 days
# 27 days new method 500m method, 22.0 with 1000m new new method, 23.5 with 500m new new method, 22.0 with 2000m
snotel_gf_buff = gpd.GeoDataFrame(snotel_gf.copy(),geometry=snotel_gf.buffer(buffer))
snotel_gf
code | name | elevation_m | latitude | longitude | county | state | beginDate | endDate | isActive | ... | timeseries | max_swe_2015 | max_swe_2016 | max_swe_2017 | max_swe_2018 | max_swe_2019 | max_swe_2020 | max_swe_2021 | max_swe_2022 | geometry | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 301_CA_SNTL | Adin Mtn | 1886.712036 | 41.235828 | -120.791924 | Modoc | California | 1983-10-01 00:00:00 | 2100-01-01 | True | ... | True | 32.0 | 51.0 | 68.0 | 86.0 | 75.0 | 32.0 | 74.0 | 76.0 | POINT (182202.056 4571874.067) |
1 | 907_UT_SNTL | Agua Canyon | 2712.719971 | 37.522171 | -112.271179 | Kane | Utah | 1994-10-01 00:00:00 | 2100-01-01 | True | ... | True | 64.0 | 33.0 | 65.0 | 78.0 | 81.0 | 88.0 | 76.0 | 71.0 | POINT (917980.554 4163320.291) |
2 | 916_MT_SNTL | Albro Lake | 2529.840088 | 45.597229 | -111.959023 | Madison | Montana | 1996-09-01 00:00:00 | 2100-01-01 | True | ... | True | 107.0 | 97.0 | 122.0 | 107.0 | 121.0 | 114.0 | 117.0 | 154.0 | POINT (893146.663 5061670.452) |
3 | 908_WA_SNTL | Alpine Meadows | 1066.800049 | 47.779572 | -121.698471 | King | Washington | 1994-09-01 00:00:00 | 2100-01-01 | True | ... | True | 105.0 | 96.0 | 109.0 | 108.0 | 83.0 | 102.0 | 107.0 | 116.0 | POINT (148062.869 5302498.875) |
4 | 302_OR_SNTL | Aneroid Lake #2 | 2255.520020 | 45.213280 | -117.192581 | Wallowa | Oregon | 1980-10-01 00:00:00 | 2100-01-01 | True | ... | True | 99.0 | 122.0 | 123.0 | 112.0 | 112.0 | 117.0 | 106.0 | 135.0 | POINT (484878.074 5006661.556) |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
791 | 877_AZ_SNTL | Workman Creek | 2103.120117 | 33.812420 | -110.917732 | Gila | Arizona | 1938-12-01 00:00:00 | 2100-01-01 | True | ... | True | 32.0 | 40.0 | 32.0 | 51.0 | 54.0 | 80.0 | 32.0 | 55.0 | POINT (1063320.876 3758033.963) |
792 | 1228_UT_SNTL | Wrigley Creek | 2842.869629 | 39.132332 | -111.356850 | Sanpete | Utah | 2012-10-01 00:00:00 | 2100-01-01 | True | ... | True | 63.0 | 89.0 | 66.0 | 82.0 | 89.0 | 90.0 | 83.0 | 76.0 | POINT (987900.153 4346652.811) |
793 | 1197_UT_SNTL | Yankee Reservoir | 2649.321533 | 37.747971 | -112.774948 | Iron | Utah | 2012-10-01 00:00:00 | 2100-01-01 | True | ... | True | 63.0 | 91.0 | 94.0 | 64.0 | 81.0 | 88.0 | 86.0 | 80.0 | POINT (872299.352 4186264.528) |
794 | 878_WY_SNTL | Younts Peak | 2545.080078 | 43.932251 | -109.817749 | Park | Wyoming | 1979-10-01 00:00:00 | 2100-01-01 | True | ... | True | NaN | 89.0 | 76.0 | 105.0 | 106.0 | 108.0 | 92.0 | 119.0 | POINT (1076540.895 4889486.939) |
795 | 1033_CO_SNTL | Zirkel | 2846.832031 | 40.794880 | -106.595352 | Jackson | Colorado | 2002-08-14 06:00:00 | 2100-01-01 | True | ... | True | 66.0 | 97.0 | 70.0 | 100.0 | 96.0 | 92.0 | 86.0 | 109.0 | POINT (1378449.187 4568410.906) |
796 rows × 21 columns
sas_token = 'se=2023-03-13T02%3A45Z&sp=racwdl&sv=2018-11-09&sr=c&skoid=b4d39ccb-ca9c-4e9d-a183-5e0f3ba3e609&sktid=f6b6dd5b-f02f-441a-99a0-162ac5060bd2&skt=2023-03-06T20%3A38%3A54Z&ske=2023-03-13T02%3A45%3A00Z&sks=b&skv=2018-11-09&sig=Nl9p59uFIaJRJgtbHhnVBgYgwh1MnZ/fcJrttie9gAM%3D'
tile_names = [tile[-5:] for tile in adlfs.AzureBlobFileSystem(account_name="snowmelt", credential=sas_token, anon=False).ls('snowmelt/eric/MGRS/')]
stats=['count', 'min', 'max', 'mean', 'median', 'std']
resolution = 80
#raster = rasterio.open(f"https://snowmelt.blob.core.windows.net/snowmelt/eric/MGRS/{'13UDP'}/runoff_onset_{'13UDP'}_{2016}_median_{resolution}m.tif")
#raster.read(1)
for i,row in tqdm(snotel_gf.iterrows()):
if row.mgrs in tile_names:
#print(f'{row.code} in MGRS square {row.mgrs}')
for year in years:
try:
raster = rasterio.open(f"https://snowmelt.blob.core.windows.net/snowmelt/eric/MGRS/{row.mgrs}/runoff_onset_{row.mgrs}_{year}_median_{resolution}m.tif")
snotel_row_proj = snotel_gf_buff[snotel_gf_buff.index==i].to_crs(raster.crs)
statistics = rasterstats.zonal_stats(snotel_row_proj, raster.read(1), affine=raster.transform, stats=stats, nodata=-32768)
snotel_gf.loc[i,f'sar_runoff_{year}'] = statistics[0]['median']
snotel_gf.loc[i,f'sar_runoff_{year}_std'] = statistics[0]['std']
if year == 2022:
snotel_gf.loc[i,f'sar_runoff_pixel_count'] = statistics[0]['count']
except:
#print(f'Error with tile {row.mgrs} for year {year}')
pass
791it [08:04, 1.52it/s]
for year in years:
snotel_gf[f'offset_{year}'] = snotel_gf[f'max_swe_{year}'] - snotel_gf[f'sar_runoff_{year}']
snotel_gf['median_offset'] = snotel_gf[snotel_gf.columns[pd.Series(snotel_gf.columns).str.startswith('offset')]].abs().median(axis=1)
snotel_gf['mean_offset'] = snotel_gf[snotel_gf.columns[pd.Series(snotel_gf.columns).str.startswith('offset')]].abs().mean(axis=1)
snotel_gf['mean_std'] = snotel_gf[snotel_gf.columns[pd.Series(snotel_gf.columns).str.endswith('std')]].mean(axis=1)
snotel_gf.sort_values('mean_std').dropna()
snotel_gf = snotel_gf[(snotel_gf['mean_std']>0) & (snotel_gf['mean_std']<25)]
#snotel_gf.sort_values('mean_offset').dropna().tail(50)
snotel_gf.sort_values('mean_offset').head(20)
snotel_gf.sort_values('sar_runoff_pixel_count').dropna().tail(20)
for year in years:
f,ax=plt.subplots(1,2,figsize=(10,4))
pairwise = snotel_gf[snotel_gf[[f'sar_runoff_{year}', f'max_swe_{year}']].notnull().all(1)]
ax[0].hist(pairwise[f'sar_runoff_{year}'],bins=30,alpha=0.5,label='SAR runoff dates')
ax[0].hist(pairwise[f'max_swe_{year}'],bins=30,alpha=0.5,label='SNOTEL Max SWE')
ax[0].legend()
ax[0].set_xlim([0,365])
ax[0].set_title(f'{year} Runoff Date / Max SWE Agreement')
ax[1].hist(snotel_gf[f'offset_{year}'],bins=50,label='pairwise offsets')
ax[1].legend()
mean = snotel_gf[f'offset_{year}'].mean()
median = snotel_gf[f'offset_{year}'].median()
ax[1].set_title(f'{year} Mean offset = {mean:.2f} Median offset = {median:.2f}')
ax[1].set_xlim([-100,100])
f,ax=plt.subplots(2,1,figsize=(10,10))
snotel_gf['median_offset'].hist(bins=50,ax=ax[0])
snotel_gf['mean_offset'].hist(bins=50,ax=ax[1])
ax[0].set_title('(Peak SNOTEL SWE - SAR Derivied Runoff Onset) 2017-2022 Median Offset for Each Station')
ax[1].set_title('(Peak SNOTEL SWE - SAR Derivied Runoff Onset) 2017-2022 Mean Offset for Each Station')
ax[0].set_xlabel('Offset [Days]')
ax[1].set_xlabel('Offset [Days]')
Text(0.5, 0, 'Offset [Days]')
snotel_gf['median_offset'].median()
# 25 all years
# 22.5 2017 on
17.5
f,ax=plt.subplots(figsize=(10,10))
#snotel_gf_projected = gpd.GeoDataFrame(snotel_gf,geometry=gf.geometry).to_crs('EPSG:32611')
snotel_gf.plot(column='median_offset',ax=ax,legend=True,cmap='cool',vmin=0,vmax=60)
ax.axis('equal')
ax.set_title('2015-2022 Median Absolute Difference between \nPeak SNOTEL SWE and SAR Derivied Runoff Onset [Days]')
ctx.add_basemap(ax=ax, crs=snotel_gf.crs, source=ctx.providers.Stamen.Terrain, attribution=False)
tooltip_list = ['code','name','elevation_m']
for year in years:
tooltip_list.append(f'offset_{year}')
tooltip_list.append(f'sar_runoff_{year}_std')
tooltip_list.extend(['median_offset','mean_offset','sar_runoff_pixel_count'])
snotel_gf = snotel_gf.drop(['beginDate','endDate','isActive'],axis=1)
snotel_gf.explore(column='median_offset',cmap='cool',tooltip=tooltip_list,vmin=0,vmax=60)
f,ax=plt.subplots()
ax.scatter(snotel_gf['sar_runoff_pixel_count'],snotel_gf['median_offset'])
#ax.set_xlim([0,10])
<matplotlib.collections.PathCollection at 0x7f86a32d39d0>
f,ax=plt.subplots()
ax.scatter(snotel_gf['elevation_m'],snotel_gf['median_offset'])
<matplotlib.collections.PathCollection at 0x7f86a3bfe1d0>
f,ax=plt.subplots()
ax.scatter(snotel_gf['mean_std'],snotel_gf['median_offset'])
<matplotlib.collections.PathCollection at 0x7f86a3e051e0>
corr = snotel_gf.corr()
corr.style.background_gradient(cmap='coolwarm')
elevation_m | latitude | longitude | timeseries | max_swe_2015 | max_swe_2016 | max_swe_2017 | max_swe_2018 | max_swe_2019 | max_swe_2020 | max_swe_2021 | max_swe_2022 | sar_runoff_2015 | sar_runoff_2015_std | sar_runoff_2016 | sar_runoff_2016_std | sar_runoff_2017 | sar_runoff_2017_std | sar_runoff_2018 | sar_runoff_2018_std | sar_runoff_2019 | sar_runoff_2019_std | sar_runoff_2020 | sar_runoff_2020_std | sar_runoff_2021 | sar_runoff_2021_std | sar_runoff_2022 | sar_runoff_2022_std | sar_runoff_pixel_count | offset_2015 | offset_2016 | offset_2017 | offset_2018 | offset_2019 | offset_2020 | offset_2021 | offset_2022 | median_offset | mean_offset | mean_std | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
elevation_m | 1.000000 | -0.745938 | 0.751235 | 0.061055 | 0.424969 | 0.427471 | 0.179848 | 0.027293 | 0.429122 | 0.304668 | 0.212845 | 0.107060 | -0.031014 | -0.063173 | 0.321091 | 0.088123 | 0.157681 | 0.233307 | -0.075801 | 0.268945 | 0.282690 | 0.001767 | 0.133856 | 0.131848 | 0.073790 | 0.280766 | 0.001313 | 0.172179 | 0.178913 | 0.360923 | 0.069264 | 0.027953 | 0.043037 | 0.035349 | 0.106157 | 0.060244 | 0.074893 | -0.080771 | -0.144865 | 0.267050 |
latitude | -0.745938 | 1.000000 | -0.454117 | -0.027512 | -0.038416 | 0.033001 | 0.229788 | 0.441604 | 0.036327 | 0.161184 | 0.231667 | 0.368764 | 0.041429 | -0.023857 | -0.213953 | -0.148823 | -0.033563 | -0.162994 | 0.274470 | -0.337485 | -0.075981 | 0.012653 | 0.056169 | -0.128019 | 0.158653 | -0.195474 | 0.147524 | -0.131339 | -0.169680 | -0.062874 | 0.200931 | 0.245605 | 0.084405 | 0.092604 | 0.093301 | 0.029970 | 0.204911 | -0.112779 | -0.078920 | -0.276511 |
longitude | 0.751235 | -0.454117 | 1.000000 | 0.019693 | 0.351122 | 0.339809 | -0.028849 | 0.051972 | 0.256816 | 0.240480 | 0.210851 | 0.123419 | -0.095757 | -0.146375 | 0.240539 | 0.033734 | 0.004457 | 0.219698 | -0.066826 | 0.188648 | 0.147355 | 0.078995 | 0.127311 | 0.114719 | 0.050287 | 0.249394 | -0.042745 | 0.142293 | -0.016107 | 0.345837 | 0.087881 | -0.035576 | 0.067613 | 0.045803 | 0.067996 | 0.093660 | 0.130860 | -0.042383 | -0.092861 | 0.198294 |
timeseries | 0.061055 | -0.027512 | 0.019693 | 1.000000 | nan | nan | nan | nan | nan | nan | nan | nan | 0.070484 | -0.034852 | -0.033695 | 0.057211 | 0.039850 | 0.020435 | -0.070594 | 0.018229 | 0.029860 | 0.012997 | 0.036316 | 0.039293 | -0.009371 | 0.027959 | 0.021052 | -0.022815 | -0.066203 | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | 0.026022 |
max_swe_2015 | 0.424969 | -0.038416 | 0.351122 | nan | 1.000000 | 0.556783 | 0.560949 | 0.468257 | 0.600395 | 0.502876 | 0.602325 | 0.528269 | 0.042034 | -0.119797 | 0.207991 | -0.109964 | 0.183141 | 0.104022 | 0.124706 | -0.083282 | 0.157430 | 0.016371 | 0.250430 | -0.016160 | 0.233265 | 0.066103 | 0.145503 | 0.020884 | -0.071635 | 0.766510 | 0.269839 | 0.377800 | 0.231653 | 0.269034 | 0.187790 | 0.198184 | 0.322872 | -0.220959 | -0.278872 | -0.035862 |
max_swe_2016 | 0.427471 | 0.033001 | 0.339809 | nan | 0.556783 | 1.000000 | 0.571545 | 0.578455 | 0.635594 | 0.680069 | 0.589576 | 0.593654 | 0.070847 | -0.065689 | 0.148744 | -0.119767 | 0.186910 | 0.098107 | 0.090105 | -0.105163 | 0.250717 | 0.005919 | 0.232445 | -0.032017 | 0.234939 | 0.098900 | 0.112220 | 0.030982 | -0.092550 | 0.398776 | 0.661322 | 0.383056 | 0.327613 | 0.206777 | 0.349687 | 0.187726 | 0.408688 | -0.372035 | -0.425454 | -0.025247 |
max_swe_2017 | 0.179848 | 0.229788 | -0.028849 | nan | 0.560949 | 0.571545 | 1.000000 | 0.613594 | 0.641417 | 0.573035 | 0.617811 | 0.665355 | 0.127755 | -0.103778 | 0.151909 | -0.151714 | 0.260054 | 0.005084 | 0.267109 | -0.172699 | 0.220047 | -0.030209 | 0.315227 | -0.098325 | 0.334156 | -0.022215 | 0.245424 | -0.070054 | 0.008730 | 0.367036 | 0.323163 | 0.718455 | 0.196931 | 0.239490 | 0.206431 | 0.121436 | 0.357099 | -0.314467 | -0.337072 | -0.155467 |
max_swe_2018 | 0.027293 | 0.441604 | 0.051972 | nan | 0.468257 | 0.578455 | 0.613594 | 1.000000 | 0.555713 | 0.631416 | 0.630206 | 0.711382 | 0.129032 | -0.097802 | 0.035804 | -0.216536 | 0.084707 | -0.060842 | 0.263360 | -0.246220 | 0.190263 | -0.036022 | 0.259225 | -0.118116 | 0.325665 | -0.055931 | 0.200480 | -0.017123 | -0.064297 | 0.288167 | 0.423750 | 0.494348 | 0.474341 | 0.206352 | 0.287924 | 0.133114 | 0.445661 | -0.354716 | -0.358080 | -0.205486 |
max_swe_2019 | 0.429122 | 0.036327 | 0.256816 | nan | 0.600395 | 0.635594 | 0.641417 | 0.555713 | 1.000000 | 0.600510 | 0.639401 | 0.613646 | 0.040749 | -0.057198 | 0.114232 | -0.104792 | 0.229275 | 0.135886 | 0.194105 | -0.028582 | 0.274109 | -0.015733 | 0.236428 | -0.026164 | 0.187072 | 0.079033 | 0.203588 | 0.117623 | 0.055059 | 0.451711 | 0.403834 | 0.415827 | 0.222809 | 0.437840 | 0.285606 | 0.264968 | 0.346131 | -0.357196 | -0.393670 | 0.023141 |
max_swe_2020 | 0.304668 | 0.161184 | 0.240480 | nan | 0.502876 | 0.680069 | 0.573035 | 0.631416 | 0.600510 | 1.000000 | 0.674695 | 0.652926 | 0.066533 | -0.066819 | 0.089159 | -0.124655 | 0.133256 | -0.036869 | 0.173771 | -0.170768 | 0.250882 | -0.052219 | 0.257734 | -0.053534 | 0.206737 | 0.047586 | 0.163384 | 0.079959 | -0.023264 | 0.359015 | 0.460751 | 0.423942 | 0.289347 | 0.182900 | 0.593278 | 0.268611 | 0.421155 | -0.492370 | -0.489415 | -0.089667 |
max_swe_2021 | 0.212845 | 0.231667 | 0.210851 | nan | 0.602325 | 0.589576 | 0.617811 | 0.630206 | 0.639401 | 0.674695 | 1.000000 | 0.741373 | 0.040793 | -0.067951 | 0.045332 | -0.158143 | 0.092282 | 0.058864 | 0.140170 | -0.123457 | 0.103205 | 0.039217 | 0.179846 | -0.046255 | 0.166825 | 0.015737 | 0.167984 | 0.001269 | -0.021380 | 0.457412 | 0.414498 | 0.489331 | 0.307220 | 0.332138 | 0.379217 | 0.537871 | 0.490488 | -0.253474 | -0.260993 | -0.071491 |
max_swe_2022 | 0.107060 | 0.368764 | 0.123419 | nan | 0.528269 | 0.593654 | 0.665355 | 0.711382 | 0.613646 | 0.652926 | 0.741373 | 1.000000 | 0.118743 | -0.095009 | 0.103661 | -0.176098 | 0.166978 | -0.011855 | 0.235571 | -0.175035 | 0.180047 | 0.037043 | 0.277347 | -0.111351 | 0.308962 | -0.039880 | 0.227179 | -0.060705 | -0.044697 | 0.346785 | 0.379072 | 0.479179 | 0.283608 | 0.246495 | 0.284840 | 0.240344 | 0.660579 | -0.272268 | -0.286512 | -0.157486 |
sar_runoff_2015 | -0.031014 | 0.041429 | -0.095757 | 0.070484 | 0.042034 | 0.070847 | 0.127755 | 0.129032 | 0.040749 | 0.066533 | 0.040793 | 0.118743 | 1.000000 | 0.201489 | 0.151952 | -0.043035 | 0.273055 | -0.084682 | 0.078910 | -0.179938 | 0.187109 | -0.053683 | 0.244621 | -0.083123 | 0.283914 | 0.040705 | 0.216351 | -0.018293 | 0.066925 | -0.609445 | -0.083688 | -0.092591 | 0.030706 | -0.151451 | -0.142301 | -0.225396 | -0.072220 | 0.151984 | 0.220646 | -0.038520 |
sar_runoff_2015_std | -0.063173 | -0.023857 | -0.146375 | -0.034852 | -0.119797 | -0.065689 | -0.103778 | -0.097802 | -0.057198 | -0.066819 | -0.067951 | -0.095009 | 0.201489 | 1.000000 | -0.093996 | 0.174144 | -0.054866 | 0.113317 | 0.045835 | 0.102235 | -0.033246 | -0.019209 | -0.026265 | 0.177212 | -0.049991 | 0.122883 | 0.025133 | 0.082399 | 0.144853 | -0.235796 | 0.022132 | -0.045288 | -0.110514 | -0.010357 | -0.011732 | 0.002156 | -0.109882 | 0.009323 | 0.041949 | 0.466035 |
sar_runoff_2016 | 0.321091 | -0.213953 | 0.240539 | -0.033695 | 0.207991 | 0.148744 | 0.151909 | 0.035804 | 0.114232 | 0.089159 | 0.045332 | 0.103661 | 0.151952 | -0.093996 | 1.000000 | 0.026139 | 0.335671 | 0.105532 | 0.141226 | 0.155015 | 0.275121 | -0.040557 | 0.304717 | 0.034096 | 0.339404 | 0.104580 | 0.296145 | 0.049647 | 0.124535 | 0.054473 | -0.643390 | -0.104256 | -0.094837 | -0.187367 | -0.172050 | -0.254102 | -0.127787 | 0.245838 | 0.225145 | 0.075761 |
sar_runoff_2016_std | 0.088123 | -0.148823 | 0.033734 | 0.057211 | -0.109964 | -0.119767 | -0.151714 | -0.216536 | -0.104792 | -0.124655 | -0.158143 | -0.176098 | -0.043035 | 0.174144 | 0.026139 | 1.000000 | -0.032678 | 0.179000 | -0.017214 | 0.217257 | -0.038178 | 0.093680 | -0.205832 | 0.247028 | -0.117913 | 0.200640 | -0.098543 | 0.085811 | 0.085795 | -0.055825 | -0.100068 | -0.117727 | -0.145353 | -0.047504 | 0.062666 | -0.004892 | -0.099833 | 0.088829 | 0.100086 | 0.550566 |
sar_runoff_2017 | 0.157681 | -0.033563 | 0.004457 | 0.039850 | 0.183141 | 0.186910 | 0.260054 | 0.084707 | 0.229275 | 0.133256 | 0.092282 | 0.166978 | 0.273055 | -0.054866 | 0.335671 | -0.032678 | 1.000000 | 0.081281 | 0.159751 | -0.030338 | 0.289898 | 0.013248 | 0.347363 | 0.027287 | 0.288632 | 0.105241 | 0.290073 | 0.030798 | 0.089881 | -0.043395 | -0.107774 | -0.484804 | -0.070312 | -0.129289 | -0.153660 | -0.173178 | -0.066456 | 0.166138 | 0.152591 | 0.020047 |
sar_runoff_2017_std | 0.233307 | -0.162994 | 0.219698 | 0.020435 | 0.104022 | 0.098107 | 0.005084 | -0.060842 | 0.135886 | -0.036869 | 0.058864 | -0.011855 | -0.084682 | 0.113317 | 0.105532 | 0.179000 | 0.081281 | 1.000000 | -0.054654 | 0.267696 | 0.039859 | 0.082758 | -0.002868 | 0.173414 | -0.006073 | 0.256503 | -0.036251 | 0.134349 | 0.038865 | 0.129484 | 0.006999 | -0.050310 | -0.025012 | 0.052216 | -0.034880 | 0.035415 | 0.011368 | 0.029498 | 0.032289 | 0.502620 |
sar_runoff_2018 | -0.075801 | 0.274470 | -0.066826 | -0.070594 | 0.124706 | 0.090105 | 0.267109 | 0.263360 | 0.194105 | 0.173771 | 0.140170 | 0.235571 | 0.078910 | 0.045835 | 0.141226 | -0.017214 | 0.159751 | -0.054654 | 1.000000 | 0.113255 | 0.216051 | -0.082191 | 0.330906 | -0.092873 | 0.404173 | 0.051766 | 0.317879 | -0.008592 | 0.129004 | 0.056351 | -0.022958 | 0.136142 | -0.724341 | -0.057523 | -0.125904 | -0.247207 | -0.034084 | -0.054858 | -0.089792 | -0.004032 |
sar_runoff_2018_std | 0.268945 | -0.337485 | 0.188648 | 0.018229 | -0.083282 | -0.105163 | -0.172699 | -0.246220 | -0.028582 | -0.170768 | -0.123457 | -0.175035 | -0.179938 | 0.102235 | 0.155015 | 0.217257 | -0.030338 | 0.267696 | 0.113255 | 1.000000 | -0.021982 | 0.103375 | -0.054165 | 0.173027 | -0.107052 | 0.250199 | -0.074924 | 0.232295 | 0.215016 | 0.063805 | -0.205252 | -0.124833 | -0.283314 | -0.007239 | -0.106902 | -0.011881 | -0.106403 | 0.107035 | 0.093898 | 0.580359 |
sar_runoff_2019 | 0.282690 | -0.075981 | 0.147355 | 0.029860 | 0.157430 | 0.250717 | 0.220047 | 0.190263 | 0.274109 | 0.250882 | 0.103205 | 0.180047 | 0.187109 | -0.033246 | 0.275121 | -0.038178 | 0.289898 | 0.039859 | 0.216051 | -0.021982 | 1.000000 | -0.045542 | 0.350095 | 0.008376 | 0.263815 | 0.195184 | 0.296462 | 0.061710 | 0.140939 | 0.001205 | -0.021704 | -0.022933 | -0.015914 | -0.744602 | -0.100384 | -0.161929 | -0.091458 | 0.091192 | 0.129809 | 0.031807 |
sar_runoff_2019_std | 0.001767 | 0.012653 | 0.078995 | 0.012997 | 0.016371 | 0.005919 | -0.030209 | -0.036022 | -0.015733 | -0.052219 | 0.039217 | 0.037043 | -0.053683 | -0.019209 | -0.040557 | 0.093680 | 0.013248 | 0.082758 | -0.082191 | 0.103375 | -0.045542 | 1.000000 | -0.001008 | 0.117554 | -0.037015 | 0.116782 | -0.093840 | 0.162363 | -0.072380 | 0.053339 | 0.027616 | -0.021818 | 0.046514 | 0.037116 | -0.040220 | 0.075908 | 0.093968 | 0.142981 | 0.117606 | 0.380147 |
sar_runoff_2020 | 0.133856 | 0.056169 | 0.127311 | 0.036316 | 0.250430 | 0.232445 | 0.315227 | 0.259225 | 0.236428 | 0.257734 | 0.179846 | 0.277347 | 0.244621 | -0.026265 | 0.304717 | -0.205832 | 0.347363 | -0.002868 | 0.330906 | -0.054165 | 0.350095 | -0.001008 | 1.000000 | -0.026149 | 0.472585 | -0.002365 | 0.352509 | -0.037777 | 0.068642 | 0.046457 | -0.052528 | 0.064201 | -0.097583 | -0.178700 | -0.624894 | -0.281794 | -0.013253 | 0.041267 | 0.027399 | -0.090669 |
sar_runoff_2020_std | 0.131848 | -0.128019 | 0.114719 | 0.039293 | -0.016160 | -0.032017 | -0.098325 | -0.118116 | -0.026164 | -0.053534 | -0.046255 | -0.111351 | -0.083123 | 0.177212 | 0.034096 | 0.247028 | 0.027287 | 0.173414 | -0.092873 | 0.173027 | 0.008376 | 0.117554 | -0.026149 | 1.000000 | -0.040752 | 0.245355 | -0.037006 | 0.162503 | 0.011552 | 0.046453 | -0.057715 | -0.101868 | -0.033613 | -0.041203 | -0.014895 | 0.008889 | -0.051892 | 0.140512 | 0.145548 | 0.526986 |
sar_runoff_2021 | 0.073790 | 0.158653 | 0.050287 | -0.009371 | 0.233265 | 0.234939 | 0.334156 | 0.325665 | 0.187072 | 0.206737 | 0.166825 | 0.308962 | 0.283914 | -0.049991 | 0.339404 | -0.117913 | 0.288632 | -0.006073 | 0.404173 | -0.107052 | 0.263815 | -0.037015 | 0.472585 | -0.040752 | 1.000000 | -0.009386 | 0.367237 | -0.053333 | 0.059172 | -0.006670 | -0.076235 | 0.103912 | -0.138361 | -0.122950 | -0.223727 | -0.741483 | -0.039339 | 0.092585 | 0.076566 | -0.105282 |
sar_runoff_2021_std | 0.280766 | -0.195474 | 0.249394 | 0.027959 | 0.066103 | 0.098900 | -0.022215 | -0.055931 | 0.079033 | 0.047586 | 0.015737 | -0.039880 | 0.040705 | 0.122883 | 0.104580 | 0.200640 | 0.105241 | 0.256503 | 0.051766 | 0.250199 | 0.195184 | 0.116782 | -0.002365 | 0.245355 | -0.009386 | 1.000000 | 0.092081 | 0.266864 | 0.172984 | 0.032695 | -0.015241 | -0.081506 | -0.095601 | -0.129384 | 0.038768 | 0.008364 | -0.111776 | 0.035035 | 0.006635 | 0.579066 |
sar_runoff_2022 | 0.001313 | 0.147524 | -0.042745 | 0.021052 | 0.145503 | 0.112220 | 0.245424 | 0.200480 | 0.203588 | 0.163384 | 0.167984 | 0.227179 | 0.216351 | 0.025133 | 0.296145 | -0.098543 | 0.290073 | -0.036251 | 0.317879 | -0.074924 | 0.296462 | -0.093840 | 0.352509 | -0.037006 | 0.367237 | 0.092081 | 1.000000 | -0.146333 | -0.008533 | -0.032577 | -0.127642 | 0.035748 | -0.114138 | -0.144370 | -0.127927 | -0.207900 | -0.581057 | 0.104433 | 0.093081 | -0.094649 |
sar_runoff_2022_std | 0.172179 | -0.131339 | 0.142293 | -0.022815 | 0.020884 | 0.030982 | -0.070054 | -0.017123 | 0.117623 | 0.079959 | 0.001269 | -0.060705 | -0.018293 | 0.082399 | 0.049647 | 0.085811 | 0.030798 | 0.134349 | -0.008592 | 0.232295 | 0.061710 | 0.162363 | -0.037777 | 0.162503 | -0.053333 | 0.266864 | -0.146333 | 1.000000 | 0.169607 | 0.019778 | -0.030541 | -0.090512 | -0.041794 | 0.004566 | 0.072155 | 0.015403 | 0.052496 | 0.022386 | 0.020274 | 0.556153 |
sar_runoff_pixel_count | 0.178913 | -0.169680 | -0.016107 | -0.066203 | -0.071635 | -0.092550 | 0.008730 | -0.064297 | 0.055059 | -0.023264 | -0.021380 | -0.044697 | 0.066925 | 0.144853 | 0.124535 | 0.085795 | 0.089881 | 0.038865 | 0.129004 | 0.215016 | 0.140939 | -0.072380 | 0.068642 | 0.011552 | 0.059172 | 0.172984 | -0.008533 | 0.169607 | 1.000000 | -0.106837 | -0.169479 | -0.070780 | -0.176649 | -0.100562 | -0.100080 | -0.058094 | -0.052745 | 0.025517 | 0.018943 | 0.200980 |
offset_2015 | 0.360923 | -0.062874 | 0.345837 | nan | 0.766510 | 0.398776 | 0.367036 | 0.288167 | 0.451711 | 0.359015 | 0.457412 | 0.346785 | -0.609445 | -0.235796 | 0.054473 | -0.055825 | -0.043395 | 0.129484 | 0.056351 | 0.063805 | 0.001205 | 0.053339 | 0.046457 | 0.046453 | -0.006670 | 0.032695 | -0.032577 | 0.019778 | -0.106837 | 1.000000 | 0.268044 | 0.363292 | 0.162264 | 0.310946 | 0.244520 | 0.311898 | 0.314576 | -0.273842 | -0.365555 | -0.003007 |
offset_2016 | 0.069264 | 0.200931 | 0.087881 | nan | 0.269839 | 0.661322 | 0.323163 | 0.423750 | 0.403834 | 0.460751 | 0.414498 | 0.379072 | -0.083688 | 0.022132 | -0.643390 | -0.100068 | -0.107774 | 0.006999 | -0.022958 | -0.205252 | -0.021704 | 0.027616 | -0.052528 | -0.057715 | -0.076235 | -0.015241 | -0.127642 | -0.030541 | -0.169479 | 0.268044 | 1.000000 | 0.369458 | 0.327553 | 0.299766 | 0.410927 | 0.343118 | 0.427984 | -0.493456 | -0.517209 | -0.085034 |
offset_2017 | 0.027953 | 0.245605 | -0.035576 | nan | 0.377800 | 0.383056 | 0.718455 | 0.494348 | 0.415827 | 0.423942 | 0.489331 | 0.479179 | -0.092591 | -0.045288 | -0.104256 | -0.117727 | -0.484804 | -0.050310 | 0.136142 | -0.124833 | -0.022933 | -0.021818 | 0.064201 | -0.101868 | 0.103912 | -0.081506 | 0.035748 | -0.090512 | -0.070780 | 0.363292 | 0.369458 | 1.000000 | 0.228852 | 0.310062 | 0.299245 | 0.236663 | 0.368808 | -0.412412 | -0.422503 | -0.144422 |
offset_2018 | 0.043037 | 0.084405 | 0.067613 | nan | 0.231653 | 0.327613 | 0.196931 | 0.474341 | 0.222809 | 0.289347 | 0.307220 | 0.283608 | 0.030706 | -0.110514 | -0.094837 | -0.145353 | -0.070312 | -0.025012 | -0.724341 | -0.283314 | -0.015914 | 0.046514 | -0.097583 | -0.033613 | -0.138361 | -0.095601 | -0.114138 | -0.041794 | -0.176649 | 0.162264 | 0.327553 | 0.228852 | 1.000000 | 0.182375 | 0.314602 | 0.329638 | 0.323840 | -0.210484 | -0.177384 | -0.173071 |
offset_2019 | 0.035349 | 0.092604 | 0.045803 | nan | 0.269034 | 0.206777 | 0.239490 | 0.206352 | 0.437840 | 0.182900 | 0.332138 | 0.246495 | -0.151451 | -0.010357 | -0.187367 | -0.047504 | -0.129289 | 0.052216 | -0.057523 | -0.007239 | -0.744602 | 0.037116 | -0.178700 | -0.041203 | -0.122950 | -0.129384 | -0.144370 | 0.004566 | -0.100562 | 0.310946 | 0.299766 | 0.310062 | 0.182375 | 1.000000 | 0.292529 | 0.329892 | 0.315491 | -0.352051 | -0.415317 | -0.025771 |
offset_2020 | 0.106157 | 0.093301 | 0.067996 | nan | 0.187790 | 0.349687 | 0.206431 | 0.287924 | 0.285606 | 0.593278 | 0.379217 | 0.284840 | -0.142301 | -0.011732 | -0.172050 | 0.062666 | -0.153660 | -0.034880 | -0.125904 | -0.106902 | -0.100384 | -0.040220 | -0.624894 | -0.014895 | -0.223727 | 0.038768 | -0.127927 | 0.072155 | -0.100080 | 0.244520 | 0.410927 | 0.299245 | 0.314602 | 0.292529 | 1.000000 | 0.449956 | 0.339914 | -0.439889 | -0.424589 | -0.003294 |
offset_2021 | 0.060244 | 0.029970 | 0.093660 | nan | 0.198184 | 0.187726 | 0.121436 | 0.133114 | 0.264968 | 0.268611 | 0.537871 | 0.240344 | -0.225396 | 0.002156 | -0.254102 | -0.004892 | -0.173178 | 0.035415 | -0.247207 | -0.011881 | -0.161929 | 0.075908 | -0.281794 | 0.008889 | -0.741483 | 0.008364 | -0.207900 | 0.015403 | -0.058094 | 0.311898 | 0.343118 | 0.236663 | 0.329638 | 0.329892 | 0.449956 | 1.000000 | 0.363029 | -0.251284 | -0.242608 | 0.030868 |
offset_2022 | 0.074893 | 0.204911 | 0.130860 | nan | 0.322872 | 0.408688 | 0.357099 | 0.445661 | 0.346131 | 0.421155 | 0.490488 | 0.660579 | -0.072220 | -0.109882 | -0.127787 | -0.099833 | -0.066456 | 0.011368 | -0.034084 | -0.106403 | -0.091458 | 0.093968 | -0.013253 | -0.051892 | -0.039339 | -0.111776 | -0.581057 | 0.052496 | -0.052745 | 0.314576 | 0.427984 | 0.368808 | 0.323840 | 0.315491 | 0.339914 | 0.363029 | 1.000000 | -0.288342 | -0.297117 | -0.081323 |
median_offset | -0.080771 | -0.112779 | -0.042383 | nan | -0.220959 | -0.372035 | -0.314467 | -0.354716 | -0.357196 | -0.492370 | -0.253474 | -0.272268 | 0.151984 | 0.009323 | 0.245838 | 0.088829 | 0.166138 | 0.029498 | -0.054858 | 0.107035 | 0.091192 | 0.142981 | 0.041267 | 0.140512 | 0.092585 | 0.035035 | 0.104433 | 0.022386 | 0.025517 | -0.273842 | -0.493456 | -0.412412 | -0.210484 | -0.352051 | -0.439889 | -0.251284 | -0.288342 | 1.000000 | 0.943363 | 0.131205 |
mean_offset | -0.144865 | -0.078920 | -0.092861 | nan | -0.278872 | -0.425454 | -0.337072 | -0.358080 | -0.393670 | -0.489415 | -0.260993 | -0.286512 | 0.220646 | 0.041949 | 0.225145 | 0.100086 | 0.152591 | 0.032289 | -0.089792 | 0.093898 | 0.129809 | 0.117606 | 0.027399 | 0.145548 | 0.076566 | 0.006635 | 0.093081 | 0.020274 | 0.018943 | -0.365555 | -0.517209 | -0.422503 | -0.177384 | -0.415317 | -0.424589 | -0.242608 | -0.297117 | 0.943363 | 1.000000 | 0.127306 |
mean_std | 0.267050 | -0.276511 | 0.198294 | 0.026022 | -0.035862 | -0.025247 | -0.155467 | -0.205486 | 0.023141 | -0.089667 | -0.071491 | -0.157486 | -0.038520 | 0.466035 | 0.075761 | 0.550566 | 0.020047 | 0.502620 | -0.004032 | 0.580359 | 0.031807 | 0.380147 | -0.090669 | 0.526986 | -0.105282 | 0.579066 | -0.094649 | 0.556153 | 0.200980 | -0.003007 | -0.085034 | -0.144422 | -0.173071 | -0.025771 | -0.003294 | 0.030868 | -0.081323 | 0.131205 | 0.127306 | 1.000000 |
snotel_gf.describe()
elevation_m | latitude | longitude | max_swe_2015 | max_swe_2016 | max_swe_2017 | max_swe_2018 | max_swe_2019 | max_swe_2020 | max_swe_2021 | ... | offset_2016 | offset_2017 | offset_2018 | offset_2019 | offset_2020 | offset_2021 | offset_2022 | median_offset | mean_offset | mean_std | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
count | 473.000000 | 473.000000 | 473.000000 | 433.000000 | 435.000000 | 435.000000 | 433.000000 | 435.000000 | 434.000000 | 436.000000 | ... | 430.000000 | 435.000000 | 421.000000 | 435.000000 | 434.000000 | 436.000000 | 409.000000 | 437.000000 | 437.000000 | 473.000000 |
mean | 2362.120096 | 42.558749 | -113.065845 | 73.935335 | 88.928736 | 91.655172 | 96.078522 | 98.818391 | 96.905530 | 91.942661 | ... | -17.254651 | -9.400000 | -1.342043 | -15.729885 | -7.109447 | -10.332569 | -8.182152 | 20.344966 | 23.274865 | 17.570013 |
std | 598.696246 | 3.308625 | 4.900410 | 28.761318 | 24.341881 | 25.114405 | 16.289576 | 17.642811 | 18.500055 | 17.398082 | ... | 31.342508 | 27.726607 | 22.509376 | 25.418502 | 22.895891 | 25.566311 | 31.673258 | 12.442188 | 11.892380 | 4.641499 |
min | 515.112000 | 33.691441 | -123.457474 | 32.000000 | 32.000000 | 32.000000 | 32.000000 | 48.000000 | 32.000000 | 32.000000 | ... | -128.000000 | -119.000000 | -79.000000 | -114.000000 | -122.000000 | -100.000000 | -111.000000 | 4.000000 | 4.250000 | 2.562500 |
25% | 1961.692749 | 39.677120 | -116.122330 | 61.000000 | 88.000000 | 68.000000 | 85.000000 | 85.000000 | 93.000000 | 85.000000 | ... | -31.875000 | -29.000000 | -12.000000 | -27.000000 | -18.000000 | -27.000000 | -25.000000 | 12.500000 | 15.937500 | 14.184456 |
50% | 2438.399902 | 42.562481 | -111.709999 | 66.000000 | 91.000000 | 94.000000 | 100.000000 | 104.000000 | 98.000000 | 87.000000 | ... | -15.500000 | -9.000000 | -4.000000 | -14.000000 | -7.000000 | -11.000000 | -8.500000 | 17.500000 | 20.875000 | 18.389199 |
75% | 2812.694336 | 45.077068 | -109.878151 | 104.000000 | 96.000000 | 119.000000 | 108.000000 | 107.000000 | 109.000000 | 102.000000 | ... | 4.500000 | 8.750000 | 12.000000 | -2.000000 | 5.000000 | 5.000000 | 12.000000 | 24.500000 | 27.437500 | 21.222068 |
max | 3541.775879 | 48.980751 | -103.976883 | 147.000000 | 140.000000 | 143.000000 | 207.000000 | 155.000000 | 137.000000 | 160.000000 | ... | 54.000000 | 71.000000 | 97.000000 | 62.000000 | 58.000000 | 74.500000 | 92.000000 | 108.000000 | 103.625000 | 24.955974 |
8 rows × 39 columns
f,ax=plt.subplots(figsize=(10,10))
#snotel_gf_projected = gpd.GeoDataFrame(snotel_gf,geometry=gf.geometry).to_crs('EPSG:32611')
snotel_gf[snotel_gf.max_swe_2019<90].plot(ax=ax,legend=True)
snotel_gf[snotel_gf.max_swe_2019>90].plot(ax=ax,legend=True)
ax.axis('equal')
ax.set_title('Checking out the bimodal distribution of 2017 peak SWE')
ctx.add_basemap(ax=ax, crs=snotel_gf.crs, source=ctx.providers.Stamen.Terrain, attribution=False)
f,ax=plt.subplots(figsize=(10,10))
#snotel_gf_projected = gpd.GeoDataFrame(snotel_gf,geometry=gf.geometry).to_crs('EPSG:32611')
#snotel_gf[snotel_gf.max_swe_2017<80].plot(ax=ax,x='elevation_m',y='max_swe_2017')
#snotel_gf[snotel_gf.max_swe_2017>80].plot(ax=ax,x='elevation_m',y='max_swe_2017')
ax.scatter(snotel_gf[snotel_gf.max_swe_2019<90].elevation_m,snotel_gf[snotel_gf.max_swe_2019<90].max_swe_2019)
ax.scatter(snotel_gf[snotel_gf.max_swe_2019>90].elevation_m,snotel_gf[snotel_gf.max_swe_2019>90].max_swe_2019)
ax.set_ylim([0,200])
#ax.axis('equal')
ax.set_title('2017 SNOTEL DOY of Peak SWE vs Elevation')
#ctx.add_basemap(ax=ax, crs=snotel_gf.crs, source=ctx.providers.Stamen.Terrain, attribution=False)
Text(0.5, 1.0, '2017 SNOTEL DOY of Peak SWE vs Elevation')