knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) library(imgw) library(tidyr) library(dplyr) options(scipen=999)
Głównym celem pakietu imgw jest dostarczenie wygodnego i programowalnego interfejsu do repozytorium danych meteorologicznych i hydrologicznych IMGW-PIB. Pakiet pozwala także na pobieranie danych radiosondażowych.
Pakiet imgw dla języka programowania *R umożliwia:
Pakiet imgw zawiera trzy główne grupy funkcji do pobierania danych, na które składają się cztery funkcje do danych meteorologicznych, cztery do danych hydrologicznych oraz jedna do danych radiosondażowych.
Dane meteorologiczne:
meteo()
- pobieranie danych meteorologicznych - ogólna funkcja (nadrzędna) umożliwiająca wybór m.in. określonego rzędu stacji, interwału czasowego, dodanie metadanych geograficznych do pobieranych danych, ...
meteo_hourly()
- pobieranie danych meteorologicznych - pomiary terminowe (godzinowe)meteo_daily()
- pobieranie danych meteorologicznych - serie danych dobowychmeteo_monthly()
- pobieranie danych meteorologicznych - serie danych miesięcznych
Dane hydrologiczne:
hydro()
- pobieranie danych hydrologicznych z dowolnie zdefiniowanym interwałem (funkcja nadrzędna/interfejs dla pozostałych niżej wymienionych)
hydro_daily()
- pobieranie danych hydrologicznych - serie dobowehydro_monthly()
- pobieranie danych hydrologicznych - serie miesięcznehydro_annual()
- pobieranie danych hydrologicznych - serie roczne
Pomiary radiosondażowe:
meteo_sounding()
- pobieranie danych (i metadanych) dla pomiarów aerologicznych udostępnionych przez Uniwersytet Wyoming
Pakiet imgw zawiera dodatkowe bazy danych przydatne do pracy z danymi meteo- i hydrologicznymi:
hydro_abberv
/meteo_abberv
- wykaz parametrów wraz z opisem stosowanym w repozytorium IMGW-PIB oraz zastosowane formy skrótów do wygodnej pracy w środowisku programistycznym lub w arkuszach kalkulacyjnychabbev = meteo_abbrev head(abbev)
library(knitr) abbev = meteo_abbrev kable(head(abbev), caption = "Parametry meteorologiczne i skróty zastosowane w pakiecie.")
hydro_stations
/meteo_stations
- zbiór metadanych dla większości stacji meteorologicznych i hydrologicznych wraz z numerem stacji, długością, szerokością gegoraficzną i wysokością stacjistation = meteo_stations head(station)
station = meteo_stations kable(head(station), caption = "Metadane dla stacji meteorologicznych.")
Poniżej zamieszczono przykłady zastosowania pakietu imgw
w połączeniu z pakietami dplyr oraz tidyr.
h = hydro_monthly(year = 2001:2010, coords = TRUE) head(h)
h = hydro_monthly(year = 2001:2010, coords = TRUE) kable(head(h), caption = "Pierwsze 6 wierszy pobranych danych:")
Kolumna idex
zawiera informację o rodzaju ekstremum, tj. 1
- minimum, 2
- średnia, 3
- maximum.^[Szczegółowe informacje znajdują się w zbiorze hydro_abbrev
].
.csv
lub .xlsx
. W tym drugim przypadku konieczne będzie aktywowanie (a gdy konieczne także wcześniejsze zainstalowanie) odpowiedniego pakietu:# CSV: write.csv(h, file = "result.csv", sep = ";",dec = ".") # powyzsza instrukcja zapisze pobrane dane do pliku `result.csv` z separatoratorem dla kolumn `;` i miejscem dziesietnym `.` # XLSX: library(writexl) # lub jesli biblioteka 'writexl' nie byla instalowana wowczas nalezy wczesniej wywolac komende: install.packages("writexl") write_xlsx(result, path = "result.xlsx")
Analizy hydrologiczne często koncentrują się na jednej grupy zjawisk, np. związanych z przepływami maksymalnymi.
W tym celu pozostaną w ramce danych tylko wartości przepływów maksymalnych oraz kolumny zawierające interesujące nas informacje, tj.
identyfikator stacji - id
, rok hydrologiczny - hyy
, szerokość geograficzną - X
oraz długość geograficzną - Y
.
Następnie obliczmy średni przepływ maksymalny na każdej z dostępnych stacji, w każdym z analizowanych lat hydrologicznych.
W tym celu można wykorzystać funkcję summarise()
z pakietu dplyr.
Zmiana postaci otrzymanej tabeli (z wąskiej do szerokiej) może zostać wykonana za pomocą pakietu tidyr i funkcji spread()
.
h2 = h %>% filter(idex == 3) %>% select(id, station, X, Y, hyy, Q) %>% group_by(hyy, id, station, X, Y) %>% summarise(mean_Q = round(mean(Q, na.rm = TRUE),1)) %>% spread(hyy, mean_Q)
kable(head(h2), caption = "Przykład wyniku przetwarzania danych hydrologicznych.")
sf
i tmap
. Poniżej zamieszczono przykładowy kod dla średnich maksymalnych przepływów rocznych:library(sf) library(tmap) library(rnaturalearth) library(rnaturalearthdata) world = ne_countries(scale = "medium", returnclass = "sf") h3 = h2 %>% filter(!is.na(X)) %>% st_as_sf(coords = c("X", "Y")) tm_shape(h3) + tm_symbols(size = as.character(c(2001:2010)), title.size = "Średni przepływ maksymalny") + tm_facets(free.scales = FALSE, ncol = 4) + tm_shape(world) + tm_borders(col = "black", lwd = 2) + tm_layout(legend.position = c(-1.25, 0.05), outer.margins = c(0, 0.05, 0, -0.25), panel.labels = as.character(c(2001:2010)))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.