Głównym celem pakietu climate jest zapewnienie wygodnego i programowalnego dostępu do danych meteorologicznych i hydrologicznych z publicznie dostępnych repozytoriów:

  • Polski Instytut Metrologii i Gospodarki Wodnej - Państwowy Instytut Badawczy (IMGW-PIB)

  • OGIMET (ogimet.com)

  • Strona University of Wyoming - dane atmosferycznego profilowania pionowego (http://weather.uwyo.edu/upperair/).

Funkcje

Pakiet climate składa się z czterech głównych funkcji - dwóch dla danych meteorologicznych, jednej dla danych hydrologicznych i jednej dla sondowania meteo:

  1. Dane meteorologiczne
  • meteo_ogimet() - Umożliwia pobieranie godzinnych i dziennych danych meteorologicznych ze stacji SYNOP dostępnych w repozytorium ogimet.com. Każda stacja meteorologiczna (Synoptyczna) pracująca w ramach World Meteorological framework powinna być dostępne po roku 2000 roku

    • stations_ogimet() - Umożliwia uzyskiwanie współrzędnych geograficznych, położenia stacji nad poziomem morza oraz identyfikatora WMO i nazwy stacji dla kraju określonej przez użytkownika; opcjonalnie wykreśl wyniki na mapie
  • meteo_imgw() - Pozwala pobrać dane meteorologiczne interwale godzinowym, dziennym lub miesięcznym o danej randze stacji(SYNOP / CLIMATE / PRECIP) dostępnych w kolekcji dane.imgw.pl. Jest to wrapper funckji meteo_monthly(), meteo_daily() oraz meteo_hourly()z pakietu imgw (poprzedniej wersji paczki).

  • meteo_shortening() - Skracanie nazw kolumn parametrów meteorologicznych poprawiając czytelność pobranego zestawu danych i usuwanie zduplikowanych nazw kolumn.

  1. Dane hydrologiczne:
  • hydro_imgw() - Pobieranie danych hydrologicznych o interwale dziennym, miesięcznym lub rocznym ze stacji dostępnych w repozytorium dane.imgw.pl. Jest to wrapper funckji meteo_monthly(), meteo_daily() oraz meteo_hourly()z pakietu imgw (poprzedniej wersji paczki).
  1. Dane radiosondażowe :
  • meteo_sounding() - Pobieranie pomiarów pionowych profil atmosfery (danych radiosondażowych)

Przykłady

Pokażemy, jak korzystać z naszego pakietu i przygotować dane do analizy przestrzennej z dodatkową pomocą paczek dplyr oraz tidyr. Najpierw pobierzemy 10 lat (2001-2010) miesięcznych obserwacji hydrologicznych dla wszystkich dostępnych stacji i automatycznie dodają ich współrzędne przestrzenne.

#>     Your system locale is: C.UTF-8 which may cause trouble.
#>     Please consider changing it manually while working with climate, e.g.:
#>     Sys.setlocale(category = 'LC_ALL', locale = 'en_US.UTF-8')
#> /tmp/Rtmp5uusoM/file18f8289fdf18
#> /tmp/Rtmp5uusoM/file18f81a46d311
#> /tmp/Rtmp5uusoM/file18f83e8dcb9b
#> /tmp/Rtmp5uusoM/file18f86929569e
#> /tmp/Rtmp5uusoM/file18f81b31ba88
#> /tmp/Rtmp5uusoM/file18f85e1398d9
#> /tmp/Rtmp5uusoM/file18f8297d9bb4
#> /tmp/Rtmp5uusoM/file18f8278759e6
#> /tmp/Rtmp5uusoM/file18f863c24fc
#> /tmp/Rtmp5uusoM/file18f8301149f9
#> /tmp/Rtmp5uusoM/file18f832bea7da
#> /tmp/Rtmp5uusoM/file18f8785be546
#>               id  X  Y station riv_or_lake  hyy idhyy idex   H   Q  T mm
#> 94896  150210180 NA NA ANNOPOL   Wisla (2) 2001     1    1 214 172 NA 11
#> 94897  150210180 NA NA ANNOPOL   Wisla (2) 2001     1    2 228 207 NA 11
#> 94898  150210180 NA NA ANNOPOL   Wisla (2) 2001     1    3 250 272 NA 11
#> 94899  150210180 NA NA ANNOPOL   Wisla (2) 2001     2    1 215 174 NA 12
#> 94900  150210180 NA NA ANNOPOL   Wisla (2) 2001     2    2 225 201 NA 12
#> 94901  150210180 NA NA ANNOPOL   Wisla (2) 2001     2    3 258 297 NA 12

Zmienna idex reprezentuje id ekstremum, gdzie “1” oznacza minimum, “2” oznacza średnią, a “3” maksimum. 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 i długość geograficznąY. Następnie obliczymy średnią maksymalną wartość przepływu na stacjach w każdym roku za pomocą ** dplyr ** summarise(), oraz rozdzielimy dane według roku używając ** tidyr **’ spread () aby uzyskać roczne średnie maksymalne przepływy w kolejnych kolumnach.

h2 = h %>%
  filter(idex == 3) %>%
  select(id, station, X, Y, hyy, Q) %>%
  group_by(hyy, id, station, X, Y) %>%
  summarise(srednie_roczne_Q = round(mean(Q, na.rm = TRUE),1)) %>% 
  spread(hyy, srednie_roczne_Q)
#> `summarise()` has grouped output by 'hyy', 'id', 'station', 'X'. You can
#> override using the `.groups` argument.
Examplary data frame of hydrological preprocesssing.
id station X Y 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
149180010 KRZYZANOWICE NA NA 200.5 147.4 87.9 109.2 170.6 226.9 152.9 131.0 160.9 461.1
149180020 CHALUPKI NA NA 174.7 96.7 57.6 91.8 146.9 170.6 110.2 101.6 124.7 314.6
149180030 LAZISKA NA NA NA NA NA NA NA NA NA NA NA 210.3
149180040 GOLKOWICE NA NA 4.5 2.0 1.7 1.7 2.5 3.3 2.1 1.7 2.2 8.6
149180050 ZEBRZYDOWICE NA NA 13.5 7.9 3.8 5.0 10.4 6.5 5.8 2.8 4.5 23.6
149180060 CIESZYN NA NA 57.2 57.7 29.8 26.8 65.4 60.7 54.7 33.0 34.7 135.0

Wynik pokazuje jak zmienia się maksymalna roczna średnia prędkość przepływu wody w ciągu dekady dla wszystkich dostępnych stacji w Polsce. Możemy zapisać to do:

  • .csv przy pomocą funckcji: write.csv(result, file = "result.csv", sep = ";",dec = ".", col.names = T, row.names = F). To polecenie zapisuje nasz wynik do pliku: result.csv, gdzie separatorem kolumn jest ;, część dziesiętna liczby następuje po ., zachowujemy nagłówki kolumn i usuwamy nazwy wierszy, które są po prostu liczbami obserwacji.

  • .xlsx przy pomocą funckcji: write.xlsx(result, file = "result.xlsx", sheetName = "Poland", append = FALSE) To polecenie zapisuje nasz wynik do pliku: result.xlsx o nazwie arkusza Poland. Argument append=TRUE dodaje arkusz do istniejącego pliku .xlsx. By zapisać dane do formatu.xlsx najpierw należy zaisntalować pakiet writexl przy pomocy komendyinstall.packages("writexl"), oraz dodać go do naszego środowiska: library(writexl).


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)))

  1. Więcej informacji na ten temat można znaleźć w zestawie danychhydro_abbrev.↩︎