What this shows. Thermal-infrared signature of the land surface (soil, rock, vegetation, paved area) captured by satellite at peak solar-heating time (~10:30 / 13:30 local). This is not air temperature and not in-stream water temperature.
Why it can look so warm. MODIS measures the ground's radiometric skin temperature at the satellite's midday overpass — the peak diurnal moment, never the night minimum. Dry, bare, or south-facing surfaces routinely run 10–20 °C above ambient air at that moment, due to solar absorption. The basin's apparent thermal gain in the map is expected, not anomalous.
How to use it. As a thermal-landscape context layer — where the basin is hottest or coolest by geography. For in-stream water temperature, see the Thermal state tab (gauged daily-mean Tw). A process-based thermal budget is a planned v2 addition.
Two independent lines of evidence establish that stream thermal stress is the rising, decision-relevant signal in the Okanagan basin. Both are summarized here in plain language; the underlying analysis and citations are in the Methods tab and the full Methods Document PDF (§1 and §E.3).
A regional-anomaly composite of the four long Adjusted & Homogenized Canadian Climate Data (AHCCD; ECCC) records in the Okanagan — Kelowna, Vernon, Penticton, Summerland — warms at:
Window-matched against the IPCC AR6 published global rates:
Provenance:
AHCCD is ECCC's homogenized, co-located-station-spliced
temperature product — these are like-for-like observed trends
(observation, not attribution). The AHCCD record ends 2020
(normal homogenized-product lag; immaterial to a ~110-year
trend). Reproduced by
inst/dev/22_ahccd_trend.R
(artifact captured at
inst/dev/out/22_ahccd_trend_20260519.txt
).
Across the one fully-observed open-water season currently in the WSC real-time record (June–September 2025, 21 stream gauges + 3 lake gauges excluded):
Provenance:
Reproduced by
inst/dev/21_stream_regime_baseline.R
(artifact at
inst/dev/out/21_stream_regime_baseline_20260519.txt
). One season is a
baseline, not a trend
— provisional real-time WSC data; daily means understate
instantaneous peaks; the rolling 7-day mean is computed on
date-ordered observations and sparse-gauge gaps can inflate runs.
The two lines combine to a single decision-relevant claim: the basin is warming roughly twice as fast as the 20th-century global mean, and the most recent open-water season already pushes a substantial share of the modelled stream-gauge network across the published BC salmonid-stress threshold for sizeable portions of the summer. Combined with the negative Q–Tw coupling, the operational implication is that low-flow drought conditions and thermal stress reinforce each other — making a near-term forecast of threshold-crossing risk a useful trigger for demand-side curtailment decisions (the v1 user/decision; see Methods for the management-action framing).
For the full methodological treatment — AHCCD compositing rules, Theil–Sen / Mann–Kendall procedure, station inventories, and the honest caveats — see the Methods Document PDF, §1 'Climate context'.
Per-station classification based on peak daily-mean Tw in the OBWB-banked record. Three tiers:
Sortable + filterable. Click a column to sort.
Every consecutive period in the banked daily record where daily mean stream temperature equalled or exceeded one of the two management tiers. One row per event.
Filters appear under each column header (free-text for station/tier; date pickers for start/end). Click a column header to sort. The Copy / CSV / Excel buttons export the current filtered view. Empty tier-rows are stations that have never crossed that tier in the banked record ( 12 of 21 streams in the JJAS 2025 baseline; v0.2 §3.2 cold-water refugia).
How the operational M1 14-day forecast scores against what
actually happened, using the rolling-origin backtest stored in
data/cache/warning_skill_cases.rds
(re-generated each weekly refit). The numbers below are computed
from this cache at page load, so they are the same numbers the
v0.2 paper §3.1 quotes.
POD = probability of detection (TP / (TP + FN)). FAR = false-alarm ratio (FP / (TP + FP)). PSS = Peirce skill score. HSS = Heidke skill score. Both PSS and HSS are 1 for a perfect forecast and 0 for random; see Methods §3.6 and the Glossary for definitions.
Each hit (warned + event) contributes one realised-lead-time value to the histogram. Bin width = 1 day. The mean and median are drawn as vertical reference lines.
Cases are binned by their forecast probability (10 equal-width bins). The y-axis is the observed event rate within each bin. A well-calibrated forecaster falls on the y = x diagonal: 'when I say 70 %, the event happens 70 % of the time.' Marker size scales with the number of cases in the bin (small markers = sparse evidence, large markers = many cases).
The complete daily-mean stream-temperature record this tool is built on, accumulated past WSC's 577-day rolling window. Free + open. Released under CC-BY 4.0 .
Daily-frozen snapshot, regenerated each pipeline refresh (~3 h cadence). The link below always points at the most recent successful export.
⬇ Download latest (ZIP) Browse all dated snapshots →
Daily snapshots:
each refresh writes
oktemp_streamtemp_YYYY-MM-DD.zip
to the public bucket plus the
oktemp_streamtemp_latest.zip
stable alias. Cite the date-stamped file in any published
work until the Zenodo DOI is in place.
stream_temperature_daily.csv
— the primary data. One row per station × per date,
columns
station
,
date
,
water_temp
(°C),
discharge
(m³/s).
station_metadata.csv
— one row per station with WSC ID, name, decimal-degree
coordinates, drainage area, period of record, and (new)
an
external_historical_record
column flagging stations for which an external custodian
(currently INRS) holds pre-OBWB-bank records.
snapshot.csv
+
refresh_log.csv
— pipeline refresh provenance (this snapshot's metadata
+ the project's rolling 90-entry refresh log).
data_dictionary.md
— column-by-column definitions, units, QC, missing-value
convention, sort order, conventions, versioning.
LICENSE.md
— full CC-BY 4.0 terms + the compose-attribution note
for upstream WSC observations (OGL-Canada 2.0).
README.md
— dynamically rendered, stamped with this snapshot's
date, row count, station count.
Jatel, N. and Okanagan Basin Water Board (2026). Okanagan Stream Temperature Dataset (snapshot
A long-term archival DOI via Zenodo is planned in v1.x; cite the DOI in addition to or in place of the URL once issued.YYYY-MM-DD). Distributed under CC-BY 4.0. https://temp.stream/.
Any derived work should credit all three:
external_historical_record
column in
station_metadata.csv
.
oktemp_streamtemp_latest.zip
alias always points at the most recent successful
export. For citations or reproducibility, prefer the
explicit
oktemp_streamtemp_YYYY-MM-DD.zip
file.
The latest ZIP is at a stable public URL. Examples:
# bash / curl
curl -O https://storage.googleapis.com/obwb-okanagan-streamtemp/oktemp_streamtemp_latest.zip
# R
download.file("https://storage.googleapis.com/obwb-okanagan-streamtemp/oktemp_streamtemp_latest.zip",
destfile = "oktemp_latest.zip")
unzip("oktemp_latest.zip")
df <- read.csv("stream_temperature_daily.csv")
# Python
import urllib.request, zipfile
urllib.request.urlretrieve(
"https://storage.googleapis.com/obwb-okanagan-streamtemp/oktemp_streamtemp_latest.zip",
"oktemp_latest.zip")
with zipfile.ZipFile("oktemp_latest.zip") as z:
z.extractall(".")
import pandas as pd
df = pd.read_csv("stream_temperature_daily.csv", parse_dates=["date"])
A machine-readable inventory of every external program holding
Okanagan-relevant stream-temperature or related data — what
they hold, how to access them, attribution requirements,
whether
oktemp
ingests them — lives at
inst/extdata/external_data_sources.csv
in the project repository. Programs currently catalogued:
See the About tab for a plain-language glossary of every acronym; see the Methods tab §3.7 for the detailed comparison to BC provincial water tools and Appendix C for AQUARIUS supplementary access notes.
If you spot an error in the dataset, want to contribute an external time-series, or have a use-case the current schema doesn't serve, get in touch:
This tool implements the design in Okanagan Stream Temperature Risk Tool: Methods and Development Plan (working document, current version — May 2026) — a living technical document; see the linked PDF for the exact version stamp and full detail. This is a DRAFT pending OBWB expert review before operational deployment; the forecast skill is verified on one open-water season (see How well it works below for the honest limitations).
The hierarchical GAM is adopted for v1 because the project is forecast-oriented and the v1 station set is modest. SSN modelling is retained as a v2 candidate as station density grows.
The colour on the Thermal risk tab is the end of a four-step chain — one number per station, reduced to one calibrated word:
gaulss
location-scale family,
returns a daily mean-temperature point estimate and a
row-specific
residual SD (a second linear
predictor models log-SD as a smooth of air temperature
and day-of-year). That heteroscedastic SD is what lets risk
spread across the lexicon instead of collapsing every
station to “exceptionally unlikely.”
P = 1 − Φ((T − fit) / se)
. The 14-day horizon is collapsed to a single
P(any day in the next 14 d exceeds the threshold),
estimated from the joint autocorrelated posterior of the
forecast rollout — the legacy fallback combines the daily
probabilities under day-to-day independence (
1 − ∏(1 − p_day)
), which slightly over-counts
versus the autocorrelated estimate. This horizon probability
is the primary risk score the dots and polygons read.
What the model does. M1 predicts each station's daily mean water temperature 1–14 days ahead from a small set of inputs: recent air temperature (from the matched ECCC station), current discharge (from WSC), the day of year (season), and the station's own thermal memory (yesterday's water temperature). The model is fit jointly across all monitored streams so that data-poor stations borrow strength from data-rich ones — that is the “hierarchical” part.
What it is for. Near-term decision support for OBWB and local-government water managers: when current conditions and the next 1–14 days indicate elevated probability of crossing the v1 19 °C thermal-stress threshold (BC Water Quality Guideline; primary tier), the tool helps justify advancing a drought stage and tightening demand-side curtailment. It is not a flow-allocation model and not a recommendation engine — it surfaces calibrated risk; the decision is the manager's.
Key assumptions and limitations. Read these before interpreting the forecast:
In plain language: the model is accurate enough to be a useful near-term trigger, but the 14-day window is the window over which we score the forecast — not the practical lead time, which is much shorter.
An Okanagan Basin Water Board project.
Documents & code: Source repository (GitHub) · Methods Document (current draft, PDF) · Methods Document (current draft, Markdown)
The accumulated daily stream-temperature record this tool is built on is published as a public dataset:
WSC's near-real-time feed serves a fixed rolling 577-day window and there is no HYDAT historical archive for stream temperature at these stations — the OBWB-curated bank is the only growing, permanent record. The compose-attribution requirement (CC-BY 4.0 on this curated product, OGL-Canada 2.0 on the upstream WSC observations) is described in LICENSE.md inside the ZIP.
One row per scheduled or manual
targets::tar_make()
. Useful for spotting missed daily refreshes or model-skill
regressions. The full log lives in
data/cache/refresh_log.csv
and is kept to the
most recent 90 entries; older history accrues in the methods document.
No warranty. This tool is provided as is , without warranty of any kind, express or implied, including but not limited to warranties of accuracy, completeness, reliability, merchantability, fitness for a particular purpose, or non-infringement.
Third-party data. The tool ingests publicly available observations from the Water Survey of Canada (Environment and Climate Change Canada) and the BC Freshwater Atlas. The Okanagan Basin Water Board (OBWB) is not the source of these data and makes no representation as to their accuracy, completeness, or timeliness. Data may be provisional, subject to revision, or unavailable without notice.
Model output is an estimate. The stream-temperature predictions and threshold-exceedance likelihood statements shown here are produced by a statistical model fit to historical observations. They are best understood as informed estimates with quantifiable uncertainty, not as forecasts of actual conditions at any specific location and time. Out-of-sample model error (year-block cross-validation RMSE) is reported in the methods document; users should not assume accuracy beyond that bound.
Not for emergency or safety-of-life use. This tool is intended to support long-horizon water-management decisions. It is not designed for, and must not be relied upon as the sole basis for, decisions affecting public safety, emergency response, infrastructure operations, or regulatory compliance.
User responsibility. Any decision based on information from this tool remains the responsibility of the user. Users are expected to verify outputs against independent sources and to apply professional judgment before taking management action.
Limitation of liability. To the maximum extent permitted by law, the Okanagan Basin Water Board, its directors, officers, employees, contractors, and agents shall not be liable for any direct, indirect, incidental, special, consequential, or exemplary damages, including but not limited to loss of profits, revenue, data, or alternative uses, arising out of or in connection with the use of, or inability to use, this tool or any information obtained from it, even if advised of the possibility of such damages.
Acknowledging this notice. By using this tool, you acknowledge that you have read and understood this notice and agree to its terms.
Overlay daily-mean stream-temperature time-series for 2–5 stations on common axes. Useful for spotting spatial differences in thermal regime — refugia vs. action-zone vs. mainstem patterns ( methods §3.2 ).
Temp.Stream (the Okanagan Stream Temperature Risk Tool) is an operational forecasting + decision-support application for daily mean stream temperature at approximately 24 stream-temperature stations (of 30 Water Survey of Canada core gauges) in the Okanagan Basin of interior British Columbia. It is built and maintained by the Okanagan Basin Water Board (OBWB) as technical support to the basin's decision-makers: the Province of British Columbia , the Okanagan Nation Alliance Fisheries Department , and local governments .
The tool combines (a) live near-real-time observations from the Water Survey of Canada feed, (b) a hierarchical Gaussian location-scale generalised additive model (HGAM) that produces a 14-day forecast with station-specific heteroscedastic uncertainty, and (c) an M4 decision layer that expresses the probability of exceeding a salmonid thermal-stress threshold in the IPCC AR6 calibrated-likelihood lexicon paired with a controllable management action (Fyke and Weaver 2023). The forecasting layer fills a specific operational gap: BC's existing provincial water-monitoring stack (the River Forecast Centre, AQUARIUS) covers flow forecasting and the BC Water Quality Guideline for Temperature lives in the retrospective policy layer, but no operational stream-temperature forecast tool exists at provincial scale.
Draft. This is a v1 DRAFT pending OBWB expert review before operational use. Outputs are provided as is with no warranty. See the Methods tab for the full disclaimer + the technical model description, skill statistics, and lead-time caveats.
For the application as a whole:
Jatel, N. and Okanagan Basin Water Board (2026). Okanagan Stream Temperature Risk Tool. Available at https://temp.stream/. Accessed YYYY-MM-DD.
For the underlying CC-BY 4.0 dataset (the accumulating daily stream-temperature record):
Jatel, N. and Okanagan Basin Water Board (2026). Okanagan Stream Temperature Dataset. Distributed under CC-BY 4.0. https://temp.stream/. Long-term archival is planned via Borealis (the Canadian Dataverse Repository, UBC Dataverse Collection curated by UBC Library, with data on Canadian servers and DOIs minted through DataCite Canada) for primary Canadian- residency archival, with a secondary Zenodo deposit for international discoverability. Cite the DOI in addition to or in place of the URL once issued.
Code: Source repository is the property of the Okanagan Basin Water Board. Reproducibility-oriented release under a permissive license is planned. Dataset: Creative Commons Attribution 4.0 International . Upstream WSC observations: under the Open Government Licence — Canada (OGL-Canada 2.0) . Compose-attribution applies in any derived work: please credit the OBWB curated product, the WSC/ECCC upstream observations, and any external custodians listed below.
Upstream observations are from the
Water Survey of Canada
(Environment and Climate Change Canada). Additional climate
input from
ECCC weather stations
and the
AHCCD homogenized climate record. We thank
Claudine Boyer and André St-Hilaire (INRS, Québec)
for sharing inventory access to a custodial database of pre-
2017 WSC and ECCC daily Tw observations for five Okanagan
stations, a record complementary to the OBWB-curated bank and
being evaluated for integration. The
Okanagan Nation Alliance Fisheries Department
leads Okanagan Nation Fisheries Management
(https://syilx.org/fisheries) and provides the salmon-science
framing of the secondary 21 °C threshold; the Okanagan Nation
Alliance in coordination with the
Confederated Colville Tribes' Fish and Wildlife
Department
operates the Okanogan Basin Monitoring and Evaluation Program
(OBMEP), a complementary 22-site Tw monitoring program
identified as a v1.x ingest target. Manuscript co-authors who
have shaped the methods and decision-support framing include
Jeremy Fyke (ECCC)
— calibrated-likelihood + controllable-action framing;
Denise Neilsen (formerly AAFC Summerland)
— regional climate context;
Kirsten Hannam (AAFC Summerland)
;
George Wang (ONA)
; and
Sheena Spencer (BC Ministry of Forests)
. A complete machine-readable registry of upstream and external
data sources is at
inst/extdata/external_data_sources.csv
in the project repository.
Plain-language definitions of every acronym + term used elsewhere in the app. Technical detail is in the Methods tab.