vignettes/articles/pl.Rmd
pl.Rmd
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/).
Pakiet climate składa się z czterech głównych funkcji - dwóch dla danych meteorologicznych, jednej dla danych hydrologicznych i jednej dla sondowania meteo:
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
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.
meteo_monthly()
, meteo_daily()
oraz
meteo_hourly()
z pakietu imgw (poprzedniej
wersji paczki).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.
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)))
Więcej informacji na ten temat można znaleźć w zestawie
danychhydro_abbrev
.↩︎