1616# ' @return data frame of discharge time-series
1717# ' @examples
1818# ' \dontrun{
19- # ' #Note the German API currently only provides access to stage data from the previous 30 days.
19+ # ' #Note the German API currently only provides access to stage data from the previous 30 days, so start and end date is ignored for this function .
2020# ' site <- "593647aa-9fea-43ec-a7d6-6476a76ae868"
2121# ' stage <- germany(site, variable = "stage")
2222# ' plot(stage$Date, stage$H, type = "l")
@@ -38,7 +38,7 @@ germany <- function(site,
3838 }
3939 param_code <- if (variable == " stage" ) " W" else " Q"
4040 column_name <- if (variable == " discharge" ) " Q" else " H"
41-
41+ latest_available = Sys.Date()
4242 end_date <- if (is.null(end_date )) Sys.Date() else as.Date(end_date )
4343
4444 # --- PEGELONLINE-specific: clamp start_date to the 30-day window --------
@@ -52,6 +52,14 @@ germany <- function(site,
5252 start_date <- earliest_available
5353 }
5454
55+ if (end_date < earliest_available | end_date > latest_available ) {
56+ warning(
57+ " PEGELONLINE only retains 30 days of raw data. Requested end_date " ,
58+ end_date , " is outside of data range -- clamping to " , latest_available , " ."
59+ )
60+ end_date <- latest_available
61+ }
62+
5563 original_data <- try(
5664 download_germany_data(site , param_code , start_date , end_date ),
5765 silent = TRUE
@@ -66,11 +74,9 @@ germany <- function(site,
6674 dt <- data.table :: as.data.table(original_data )
6775 dt [, Date : = as.Date(timestamp )]
6876 data.table :: setnames(dt , " value" , column_name )
69- dt <- dt [Date > = start_date & Date < = end_date , .SD , .SDcols = c(" Date" , column_name )]
70- # PEGELONLINE reports sub-daily (often 15-min) readings; collapse to a
71- # daily mean so the output matches every other RivRetrieve function's
72- # one-row-per-day convention.
73- dt <- dt [, .(value = mean(get(column_name ), na.rm = TRUE )), by = Date ]
77+
78+ dt <- dt [Date > = start_date & Date < = end_date , .(value = mean(get(column_name ), na.rm = TRUE )), by = Date ]
79+
7480 data.table :: setnames(dt , " value" , column_name )
7581 data.table :: setorder(dt , Date )
7682
0 commit comments