Przygotowując materiały do kursu 'Bądź data-smaRt’ (tytuł roboczy), potrzebowałem prognozy pogody. Krótkie poszukiwania w celu automatycznego i publicznie dostępnego API zaowocowały nową funkcją w pakiecie SmarterPoland, która pozwala na pobranie prognoz godzinnych i dniowych dla temperatury, ciśnienia, zachmurzenia i wielu innych ciekawych parametrów.
W dwóch linijkach, można pobrać prognozy i je narysować w R. Zobaczmy jak.
Aby poniższy kod zadziałał, potrzebne jest apiKey, które można pobrać po zarejestrowaniu się w serwisie The Dark Sky (https://developer.forecast.io/).
Mając ten klucz, możemy funkcją getWeatherForecast{SmarterPoland} pobrać prognozę dla punktu o określonych współrzędnych geograficznych (lat/lon) lub podając nazwę miasta (w tym przypadku współrzędne dla miasta odczytywane są z lokalnej bazy).
library(SmarterPoland) prognoza <- getWeatherForecast(apiKey, city='Warsaw') |
Pobrany obiekt zawiera trzy ramki danych. Informacje o aktualnej pogodzie. Prognozę co godzina na najbliższe 48 godzin i prognozę dzienną na 8 dni.
Co z taką prognozą możemy zrobić? Narysować!
library(ggplot2) library(scales) library(ggthemes) ggplot(prognoza$by.hour, aes(y=temperatureCelsius, x=time)) + geom_line(size=2) + geom_point(size=4) + geom_point(data=prognoza$now, size=10, color='red') + theme_tufte() + scale_y_continuous(breaks=5:12)+ theme(title=element_text(size=20), axis.text=element_text(size=20), panel.grid = element_line(size=2, color="grey")) + scale_x_datetime(breaks = date_breaks("3 hour"), minor_breaks = date_breaks("1 hour"), labels = date_format("%H:00\n %d/%m")) + ylab("") + xlab("") + ggtitle("Prognoza temperatury dla Warszawy") |
Za dwa dni sprawdzimy, czy ta prognoza się sprawdziła.
Co to może być?
> prognoza <- getWeatherForecast("0ef74dbd21eefe4439fa9b9cda478d27", city='Warsaw')
Error in as.POSIXct.default(df$time, origin = "1970-01-01", tz = df$timezone) :
do not know how to convert 'df$time' to class “POSIXct”
In addition: Warning message:
In `$.data.frame`(cityInfo, lon) : Name partially matched in data frame
Okazało się, że w niektórych prognozach dla różnych godzin jest różna liczba cech (np. czasem jest wilgotność czasem nie) i to psuło formatowanie.
Już naprawione.
Super, już działa, dzięki!