This is the reason this package exists. Extracts the DWD MOSMIX forecasts for a specific station/location.

get_forecasts(station, doc, datetime, meta, parameter = NULL,
  as.zoo = TRUE)

# S3 method for dwdforecast
print(x, ...)

Arguments

station

character or factor containing the name of the station (e.g., "11120", "06660"). The name has to match the name as provided by the XML file (see get_station_information).

doc

an XMLInternalDocument object as returned by xmlParse (XML package).

datetime

vector of time stamps for which the forecasts are valid as returned by get_datetime.

meta

object of class dwdmeta as returned by get_meta_info.

parameter

can be NULL, character, or a vector of character. If not set (parameter = NULL) all forecast parameters will be returned containing data. If set, only a subset will be returned (see 'Details' section).

as.zoo

logical, default TRUE. If FALSE a data.frame instead of a zoo object will be returned.

x

an object of class dwdforecast as returned by get_forecasts.

...

forwarded to S3 methods. Unused for now.

Value

Returns a data.frame or zoo object (depending on input as.zoo) with the DWD MOSMIX forecasts.

Details

Extracts the forecasted values for a given location. If as.zoo = FALSE a data.frame will be returned containing the date/time for which the forecasts are valid in the first column (datetime).

If as.zoo = TRUE a zoo object is returned. In this case the datetime column (see above) will be removed.

The parameter input argument allows to subset the data. If parameter = NULL all parameters will be returned which provide at least one valid value. Columns containing missing values only will be removed automatically. parameter can be used to subset the data. Only the user specified columns will be returned. Note that this could result in an empty object if no values are available given the parmaeter specification!

See also

get_station_information, get_meta_info, get_datetime, parameter_description.

Examples

# Latest L-type DWD MOSMIX forecast file for Innsbruck Airport url <- "https://opendata.dwd.de/weather/local_forecasts/mos/MOSMIX_L/single_stations/11120/kml/MOSMIX_L_LATEST_11120.kmz" # Download and extract file kmz <- tempfile("mosmix_demo_", fileext = ".kmz") check <- download.file(url, kmz) if ( inherits(check, "try-error") ) stop("Problems downloading the file!") kml <- unzip(kmz) # Parsing the unzipped kml file (XML format) # And extract required datetime and meta information. doc <- XML::xmlParse(kml) datetime <- get_datetime(doc) meta <- get_meta_info(doc) stations <- get_station_information(doc) # Extracting forecasts now # - parameter = NULL: extracts all parameters # - as.zoo = TRUE: returns a time series object. fcst1 <- get_forecasts("11120", doc, datetime, meta)
#> Processing station 11120
print(fcst1)
#> DWD MOS Forecast Object #> #> Issuer: Deutscher Wetterdienst #> ProductID: MOSMIX #> GeneratingProcess: DWD MOSMIX hourly, Version 1.0 #> IssueTime: 2019-01-09 21:00:00 UTC #> ReferencedModel(s) #> - 2019-01-09 12:00:00 UTC, ICON #> - 2019-01-09 12:00:00 UTC, ECMWF/IFS #> #> Object is of class zoo: TRUE #> Station identifier: 11120 #> Station description: INNSBRUCK FL. #> Station location: 11.35,47.27,581.0 (lon/lat/alt) #> First forecast for: 2019-01-09 22:00:00 #> Last forecast for: 2019-01-20 04:00:00 #> Number forecasts (time): 247 #> Number of parameters: 98
print(class(fcst1))
#> [1] "dwdforecast" "zoo"
print(head(fcst1[,1:5]))
#> PPPP E_PPP TX TTT E_TTT #> 2019-01-09 22:00:00 101590 20 NA 272.05 0.5 #> 2019-01-09 23:00:00 101610 40 NA 271.85 0.5 #> 2019-01-10 00:00:00 101650 50 NA 271.75 0.6 #> 2019-01-10 01:00:00 101680 60 NA 271.75 0.6 #> 2019-01-10 02:00:00 101700 60 NA 271.65 0.5 #> 2019-01-10 03:00:00 101790 60 NA 271.55 0.8
# Extracting forecasts now # - parameter = NULL: extracts all parameters # - as.zoo = FALSE: returns a data.frame fcst2 <- get_forecasts("11120", doc, datetime, meta, as.zoo = FALSE)
#> Processing station 11120
print(fcst2)
#> DWD MOS Forecast Object #> #> Issuer: Deutscher Wetterdienst #> ProductID: MOSMIX #> GeneratingProcess: DWD MOSMIX hourly, Version 1.0 #> IssueTime: 2019-01-09 21:00:00 UTC #> ReferencedModel(s) #> - 2019-01-09 12:00:00 UTC, ICON #> - 2019-01-09 12:00:00 UTC, ECMWF/IFS #> #> Object is of class zoo: FALSE #> Station identifier: 11120 #> Station description: INNSBRUCK FL. #> Station location: 11.35,47.27,581.0 (lon/lat/alt) #> First forecast for: 2019-01-09 22:00:00 #> Last forecast for: 2019-01-20 04:00:00 #> Number forecasts (time): 247 #> Number of parameters: 99
print(class(fcst2))
#> [1] "dwdforecast" "data.frame"
print(head(fcst2[,1:5]))
#> DWD MOS Forecast Object #> #> NULL #> NULL #> #> Object is of class zoo: FALSE #> Station identifier: datetime PPPP E_PPP TX TTT #> Station description: #> Station location: (lon/lat/alt) #> First forecast for: 2019-01-09 22:00:00 #> Last forecast for: 2019-01-10 03:00:00 #> Number forecasts (time): 6 #> Number of parameters: 5
# Extracting forecasts now # - parameter is set: return 2m temperature and 2m dewpoint # temperature only (see parameter_description method) # - as.zoo = TRUE: returns a time series object. fcst3 <- get_forecasts("11120", doc, datetime, meta, parameter = c("TTT", "Td"))
#> Processing station 11120
print(fcst3)
#> DWD MOS Forecast Object #> #> Issuer: Deutscher Wetterdienst #> ProductID: MOSMIX #> GeneratingProcess: DWD MOSMIX hourly, Version 1.0 #> IssueTime: 2019-01-09 21:00:00 UTC #> ReferencedModel(s) #> - 2019-01-09 12:00:00 UTC, ICON #> - 2019-01-09 12:00:00 UTC, ECMWF/IFS #> #> Object is of class zoo: TRUE #> Station identifier: 11120 #> Station description: INNSBRUCK FL. #> Station location: 11.35,47.27,581.0 (lon/lat/alt) #> First forecast for: 2019-01-09 22:00:00 #> Last forecast for: 2019-01-20 04:00:00 #> Number forecasts (time): 247 #> Number of parameters: 2
print(class(fcst3))
#> [1] "dwdforecast" "zoo"
print(head(fcst3))
#> TTT Td #> 2019-01-09 22:00:00 272.05 269.25 #> 2019-01-09 23:00:00 271.85 269.35 #> 2019-01-10 00:00:00 271.75 269.35 #> 2019-01-10 01:00:00 271.75 269.35 #> 2019-01-10 02:00:00 271.65 269.35 #> 2019-01-10 03:00:00 271.55 269.25
zoo::plot.zoo(fcst3 - 273.15, screen = 1, col = c("red", "green"), xlab = "date/time", ylab = "TTT/Td [degrees Celsius]", main = "DWD MOSMIX Forecasts for Station Innsbruck Airport (11120)")
# Remove kmz and kml file file.remove(kmz, kml)
#> [1] TRUE TRUE