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:

  • Dostęp i pobieranie archiwalnych danych meteorologicznych i hydrologicznych udostępnionych przez Instytut Meteorologii i Gospodarki Wodnej - Państwowy Instytut badawczy IMGW)
  • Uzupełnienie pobieranego zbioru danych o informacje (metadane) przestrzenne w układzie współrzędnych WGS 84
  • Wybór określonego zestawu danych - łącznie istnieje 11 dostępnych formatów w zależności od wybranego interwału czasowego, zbioru danych oraz standardu zapisu
  • Dostarczenie pełnego opisu parametrów w języku polskim i angielskim oraz w formach skróconych wygodnych do pracy w środowisku programistycznym lub w arkuszu kalkulacyjnym

Funkcje

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.

  1. 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 dobowych
  • meteo_monthly() - pobieranie danych meteorologicznych - serie danych miesięcznych
  1. 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 dobowe
  • hydro_monthly() - pobieranie danych hydrologicznych - serie miesięczne
  • hydro_annual() - pobieranie danych hydrologicznych - serie roczne
  1. Pomiary radiosondażowe:
  • meteo_sounding() - pobieranie danych (i metadanych) dla pomiarów aerologicznych udostępnionych przez Uniwersytet Wyoming

Bazy danych

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 kalkulacyjnych
abbev = meteo_abbrev
head(abbev)
Parametry meteorologiczne i skróty zastosowane w pakiecie.
fullname abbr_eng fullname_eng
Absolutna temperatura maksymalna [C] tmax_abs Absolute maximum air temperature [C]
Absolutna temperatura minimalna [C] tmin_abs Absolute minimum air temperature [C]
Aktynometria [J/cm2] irrad Irradiance [J/cm2]
Charakterystyka tendencji [kod] press_tend Pressure tendency
Chmury CH [kod] cl_CH_code High cloud cover [code]
Chmury CH tekstem cl_CH High cloud cover [text]
  • 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ą stacji
station = meteo_stations
head(station)
Metadane dla stacji meteorologicznych.
id X Y
249190020 19.64124 49.96387
249199999 19.26644 49.94970
249190040 19.37912 49.93805
249190050 19.81285 49.94243
249190060 19.96480 49.90470
249190070 19.22531 49.87891

Przykłady

Poniżej zamieszczono przykłady zastosowania pakietu imgw w połączeniu z pakietami dplyr oraz tidyr.

Dane hydrologiczne - przykład

  1. Pobranie 10-letniej serii miesięcznych danych hydrologicznych dla wszystkich dostępnych stacji w okresie 2001-2010, wraz z automatycznym dodaniem informacji przestrzennych (długość geograficzna, szerokość geograficzna).
h = hydro_monthly(year = 2001:2010, coords = TRUE)
head(h)
Pierwsze 6 wierszy pobranych danych:
id X Y station riv_or_lake hyy idhyy idex H Q T mm
95158 150210180 21.8335 50.88641 ANNOPOL Wisła (2) 2001 1 1 214 172 NA 11
95159 150210180 21.8335 50.88641 ANNOPOL Wisła (2) 2001 1 2 228 207 NA 11
95160 150210180 21.8335 50.88641 ANNOPOL Wisła (2) 2001 1 3 250 272 NA 11
95161 150210180 21.8335 50.88641 ANNOPOL Wisła (2) 2001 2 1 215 174 NA 12
95162 150210180 21.8335 50.88641 ANNOPOL Wisła (2) 2001 2 2 225 201 NA 12
95163 150210180 21.8335 50.88641 ANNOPOL Wisła (2) 2001 2 3 258 297 NA 12

Kolumna idex zawiera informację o rodzaju ekstremum, tj. 1 - minimum, 2 - średnia, 3 - maximum.1.

  1. Dla osób preferujących pracę w arkuszach kalkulacyjnych możliwe jest zapisanie pobranych danych do formatów .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")
  1. 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.

  2. 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)
Przykład wyniku przetwarzania danych hydrologicznych.
id station X Y 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
149180010 KRZYŻANOWICE 18.28780 49.99301 200.5 147.4 87.9 109.2 170.6 226.9 152.9 131.0 160.9 461.1
149180020 CHAŁUPKI 18.32752 49.92127 174.7 96.7 57.6 91.8 146.9 170.6 110.2 101.6 124.7 314.6
149180040 GOŁKOWICE 18.49640 49.92579 4.5 2.0 1.7 1.7 2.5 3.3 2.1 1.7 2.2 8.6
149180050 ZEBRZYDOWICE 18.61326 49.88025 13.5 7.9 3.8 5.0 10.4 6.5 5.8 2.8 4.5 23.6
149180060 CIESZYN 18.62972 49.74616 57.2 57.7 29.8 26.8 65.4 60.7 54.7 33.0 34.7 135.0
149180070 CIESZYN 18.63137 49.74629 NaN NaN NaN NaN NaN NaN 0.6 0.5 0.6 0.6
  1. Uzyskane wyniki mogą zostać następnie zwizualizowane w formie przestrzennej za pomocą np. pakietów GIS: 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)))
Zmienność wieloletnia średnich maksymalnych przepływów

Zmienność wieloletnia średnich maksymalnych przepływów


  1. Szczegółowe informacje znajdują się w zbiorze hydro_abbrev