Precipitation#

An introduction to Synoptic’s Precipitation service using SynopticPy.

[2]:
from datetime import datetime, timedelta

import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import polars as pl

from synoptic.services import Precipitation

Daily Precipitation#

Let’s get the daily precipitation at a single station for August 2024 and plot the daily accumulation with a running total for the month.

[3]:
df = Precipitation(
    stid="wbb",
    start=datetime(2024, 8, 1),
    end=datetime(2024, 9, 1),
    pmode="intervals",
    units="english",
    interval="day",
).df()

# Calculate cumulative precipitation for the time period
df = df.with_columns(cum_sum=pl.col("total").cum_sum())
df
🚚💨 Speedy delivery from Synoptic precipitation service.
📦 Received data from 1 stations.
[3]:
shape: (31, 21)
totalfirst_reportlast_reportcountintervalreport_typeunitsidstidnameelevationlatitudelongitudemnet_idstatetimezoneelev_demperiod_of_recordis_restrictedis_activecum_sum
f64datetime[μs, UTC]datetime[μs, UTC]i64i64strstru32strstrf64f64f64u32strstrf64struct[2]boolboolf64
0.02024-08-01 00:00:00 UTC2024-08-02 00:00:00 UTC14401"precip_accum_one_minute""Inches"1"WBB""U of U William Browning Buildi…4806.040.76623-111.84755153"UT""America/Denver"4727.7{"1997-01-01T00:00:00Z","2024-10-17T05:50:00Z"}falsetrue0.0
0.02024-08-02 00:00:00 UTC2024-08-03 00:00:00 UTC14402"precip_accum_one_minute""Inches"1"WBB""U of U William Browning Buildi…4806.040.76623-111.84755153"UT""America/Denver"4727.7{"1997-01-01T00:00:00Z","2024-10-17T05:50:00Z"}falsetrue0.0
0.02024-08-03 00:00:00 UTC2024-08-04 00:00:00 UTC14403"precip_accum_one_minute""Inches"1"WBB""U of U William Browning Buildi…4806.040.76623-111.84755153"UT""America/Denver"4727.7{"1997-01-01T00:00:00Z","2024-10-17T05:50:00Z"}falsetrue0.0
0.02024-08-04 00:00:00 UTC2024-08-05 00:00:00 UTC14404"precip_accum_one_minute""Inches"1"WBB""U of U William Browning Buildi…4806.040.76623-111.84755153"UT""America/Denver"4727.7{"1997-01-01T00:00:00Z","2024-10-17T05:50:00Z"}falsetrue0.0
0.02024-08-05 00:00:00 UTC2024-08-06 00:00:00 UTC14405"precip_accum_one_minute""Inches"1"WBB""U of U William Browning Buildi…4806.040.76623-111.84755153"UT""America/Denver"4727.7{"1997-01-01T00:00:00Z","2024-10-17T05:50:00Z"}falsetrue0.0
0.02024-08-27 00:00:00 UTC2024-08-28 00:00:00 UTC144027"precip_accum_one_minute""Inches"1"WBB""U of U William Browning Buildi…4806.040.76623-111.84755153"UT""America/Denver"4727.7{"1997-01-01T00:00:00Z","2024-10-17T05:50:00Z"}falsetrue1.15
0.02024-08-28 00:00:00 UTC2024-08-29 00:00:00 UTC140628"precip_accum_one_minute""Inches"1"WBB""U of U William Browning Buildi…4806.040.76623-111.84755153"UT""America/Denver"4727.7{"1997-01-01T00:00:00Z","2024-10-17T05:50:00Z"}falsetrue1.15
0.02024-08-29 00:00:00 UTC2024-08-30 00:00:00 UTC144029"precip_accum_one_minute""Inches"1"WBB""U of U William Browning Buildi…4806.040.76623-111.84755153"UT""America/Denver"4727.7{"1997-01-01T00:00:00Z","2024-10-17T05:50:00Z"}falsetrue1.15
0.02024-08-30 00:00:00 UTC2024-08-31 00:00:00 UTC144030"precip_accum_one_minute""Inches"1"WBB""U of U William Browning Buildi…4806.040.76623-111.84755153"UT""America/Denver"4727.7{"1997-01-01T00:00:00Z","2024-10-17T05:50:00Z"}falsetrue1.15
0.02024-08-31 00:00:00 UTC2024-09-01 00:00:00 UTC144031"precip_accum_one_minute""Inches"1"WBB""U of U William Browning Buildi…4806.040.76623-111.84755153"UT""America/Denver"4727.7{"1997-01-01T00:00:00Z","2024-10-17T05:50:00Z"}falsetrue1.15
[4]:
plt.figure(figsize=(10, 5))
ax = plt.gca()

ax.plot(df["last_report"], df["cum_sum"], marker="o", label="Total")
ax.bar(
    df["first_report"],
    df["total"],
    width=timedelta(days=1),
    align="edge",
    edgecolor="w",
    color="tab:green",
    label="Daily",
)
ax.xaxis.set_major_formatter(mdates.DateFormatter("%d %b\n%Y"))
ax.xaxis.set_major_locator(mdates.WeekdayLocator(1))
ax.xaxis.set_minor_locator(mdates.DayLocator())
ax.set_xlim(df["first_report"].min(), df["first_report"].max())

# ---------
# Cosmetics
ax.set_ylabel("Precipitation (inches)")
ax.set_title("August 2024 Precipitation at WBB")
ax.legend()
[4]:
<matplotlib.legend.Legend at 0x7f21a6babbf0>
../../_images/user_guide_services_tutorials_Precipitation_4_1.png

Stations with more than 1 inch precipitation in a week#

[5]:
df = Precipitation(
    state="UT",
    pmode="totals",
    start="2024-06-01",
    end="2024-06-07",
    units="english",
).df()
🚚💨 Speedy delivery from Synoptic precipitation service.
📦 Received data from 1,050 stations.
[6]:
df.filter(pl.col("total") > 1).sort("total")
[6]:
shape: (3, 19)
totalfirst_reportlast_reportcountreport_typeunitsidstidnameelevationlatitudelongitudemnet_idstatetimezoneelev_demperiod_of_recordis_restrictedis_active
f64datetime[μs, UTC]datetime[μs, UTC]i64strstru32strstrf64f64f64u32strstrf64struct[2]boolbool
1.12024-06-01 00:00:00 UTC2024-06-07 00:00:00 UTC144"precip_accum""Inches"1490"MCRU1""MONTE CRISTO"8931.041.46547-111.4968825"UT""America/Denver"8950.1{"2000-01-20T00:00:00Z","2024-10-17T04:00:00Z"}falsetrue
1.432024-06-01 00:00:00 UTC2024-06-07 00:00:00 UTC576"precip_accum_fifteen_minute""Inches"72189"UCC42""Centerfield"5164.039.09943-111.8077194"UT""America/Denver"5164.0{"2018-09-18T18:04:00Z","2024-10-17T04:45:00Z"}falsetrue
3.622024-06-01 00:00:00 UTC2024-06-07 00:00:00 UTC556"precip_accum""Inches"2957"BLKU1""BLACKS FORK COMMISSARY NEAR CO…8845.040.96083-110.57944106"UT""America/Denver"8848.4{"2001-06-06T00:00:00Z","2024-10-17T04:15:00Z"}falsetrue