SkillAgentSearch skills...

Climate

The R climate package: an interface for downloading in-situ meteorological (and hydrological) dataset

Install / Use

/learn @bczernecki/Climate
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

climate <img src="man/figures/logo.png" align="right" width="150" />

<!-- badges: start -->

R-CMD-check HTML5 check Codecov test
coverage CRAN
status CRAN RStudio mirror
downloads

<!-- badges: end -->

The goal of the climate R package is to automatize downloading of in-situ meteorological and hydrological data from publicly available repositories:

  • OGIMET (ogimet.com) - up-to-date collection of SYNOP dataset
  • University of Wyoming - atmospheric vertical profiling data (http://weather.uwyo.edu/upperair/)
  • National Oceanic & Atmospheric Administration - Earth System Research Laboratories - Global Monitoring Laboratory (NOAA)
  • Polish Institute of Meteorology and Water Management - National Research Institute (IMGW-PIB)
  • National Centers for Environmental Information, National Oceanic & Atmospheric Administration - National Climatic Data Center - Integrated Surface Hourly (ISH) (NOAA)

Installation

The stable release of the climate package from the CRAN repository can be installed with:

install.packages("climate")

It is highly recommended to install the most up-to-date development version of climate from GitHub with:

library(remotes)
install_github("bczernecki/climate")

Overview

Meteorological data

  • meteo_ogimet() - Downloading hourly and daily meteorological data from the SYNOP stations available in the ogimet.com collection. Any meteorological (aka SYNOP) station working under the World Meteorological Organizaton framework after year 2000 should be accessible.

  • meteo_imgw() - Downloading hourly, daily, and monthly meteorological data from the SYNOP/CLIMATE/PRECIP stations available in the danepubliczne.imgw.pl collection. It is a wrapper for meteo_monthly(), meteo_daily(), and meteo_hourly(). If 10-min dataset is needed then consider using meteo_imgw_datastore()

  • meteo_noaa_hourly() - Downloading hourly NCEI/NOAA Integrated Surface Hourly (ISH) meteorological data - Some stations have > 100 years long history of observations

  • meteo_noaa_co2() - Downloading monthly CO2 measurements from Mauna Loa Observatory

  • sounding_wyoming() - Downloading measurements of the vertical profile of atmosphere (aka rawinsonde data)

Hydrological data

  • hydro_imgw() - Downloading hourly, daily, and monthly hydrological data from stations available in the danepubliczne.imgw.pl collection. It is a wrapper for previously developed set of functions such as: hydro_monthly(), and hydro_daily()
  • hydro_imgw_datastore() - Downloading hourly and subhourly hydrological data from the IMGW-PIB hydro telemetry stations.

Auxiliary functions and datasets

  • stations_ogimet() - Downloading information about all stations available in the selected country in the Ogimet repository
  • nearest_stations_ogimet() - Downloading information about nearest stations to the selected point using Ogimet repository
  • nearest_stations_noaa() - Downloading information about nearest stations to the selected point available for the selected country in the NOAA ISH meteorological repository
  • nearest_stations_imgw() - List of nearby meteorological or hydrological IMGW-PIB stations in Poland
  • imgw_meteo_stations - Built-in metadata from the IMGW-PIB repository for meteorological stations, their geographical coordinates, and ID numbers
  • imgw_hydro_stations - Built-in metadata from the IMGW-PIB repository for hydrological stations, their geographical coordinates, and ID numbers
  • stations_meteo_imgw_telemetry - Downloading complete and up-to-date information about coordinates for IMGW-PIB telemetry meteorological stations
  • stations_hydro_imgw_telemetry - Downloading complete and up-to-date information about coordinates for IMGW-PIB telemetry hydrological stations

Example 1

Download hourly dataset from NCEI/NOAA ISH meteorological repository:

library(climate)
noaa <- meteo_noaa_hourly(station = "123300-99999", year = 2018:2019) # station ID: Poznan, Poland
head(noaa)

#   year month day hour   lon    lat alt t2m dpt2m ws  wd    slp visibility
#   2019     1   1    0 16.85 52.417  84 3.3   2.3  5 220 1025.0       6000
#   2019     1   1    1 16.85 52.417  84 3.7   3.0  4 220 1024.2       1500
#   2019     1   1    2 16.85 52.417  84 4.2   3.6  4 220 1022.5       1300
#   2019     1   1    3 16.85 52.417  84 5.2   4.6  5 240 1021.2       1900

Example 2

Finding a nearest meteorological stations in a given country using NCEI/NOAA ISH data source:

library(climate)
# find 100 nearest UK stations to longitude 1W and latitude 53N :

nearest_stations_ogimet(country = "United+Kingdom",
  date = Sys.Date(),
  add_map = TRUE,
  point = c(-1, 53),
  no_of_stations = 100
)

#  wmo_id                   station_names       lon      lat alt distance [km]
#    03354      Nottingham Weather Centre  -1.250005 53.00000 117      28.04973
#    03379                       Cranwell  -0.500010 53.03333  67      56.22175
#    03377                     Waddington  -0.516677 53.16667  68      57.36093
#    03373                       Scampton  -0.550011 53.30001  57      60.67897
#    03462                      Wittering  -0.466676 52.61668  84      73.68934
#    03544                 Church Lawford  -1.333340 52.36667 107      80.29844
# ...

100 nearest stations to given coordinates in UK

Example 3

Downloading daily (or hourly) data from a global (OGIMET) repository knowing its ID (see also nearest_stations_ogimet()):

library(climate)
o = meteo_ogimet(date = c(Sys.Date() - 5, Sys.Date() - 1), 
                 interval = "daily",
                 coords = FALSE, 
                 station = 12330)
head(o)

#>   station_ID       Date TemperatureCAvg TemperatureCMax TemperatureCMin TdAvgC HrAvg WindkmhDir
#> 3      12330 2019-12-21             8.8            13.2             4.9    5.3  79.3        SSE
#> 4      12330 2019-12-20             5.4             8.5            -1.2    4.5  92.4        ESE
#> 5      12330 2019-12-19             3.8            10.3            -3.0    1.9  89.6         SW
#> 6      12330 2019-12-18             6.3             9.0             2.2    4.1  84.8          S
#> 7      12330 2019-12-17             4.9             7.6             0.3    2.9  87.2        SSE
#>   WindkmhInt WindkmhGust PresslevHp Precmm TotClOct lowClOct SunD1h VisKm SnowDepcm PreselevHp
#> 3       11.4        39.6      995.9    1.8      3.6      2.0    6.7  21.4      <NA>         NA
#> 4       15.0          NA     1015.0    0.0      6.4      0.6    1.0   8.0      <NA>         NA
#> 5        7.1          NA     1020.4    0.0      5.2      5.9    2.5  14.1      <NA>         NA
#> 6        9.2          NA     1009.2    0.0      5.7      2.7    1.4  12.2      <NA>         NA
#> 7        7.2          NA     1010.8    0.1      6.2      4.6   <NA>  13.0      <NA>         NA

Example 4

Downloading monthly/daily/hourly meteorological/hydrological data from the Polish (IMGW-PIB) repository:

m = meteo_imgw(interval = "monthly", rank = "synop", year = 2000, coords = TRUE)
head(m)
#>            rank        id        X        Y   station   yy mm tmax_abs
#> 575 SYNOPTYCZNA 353230295 23.16228 53.10726 BIAŁYSTOK 2000  1      5.3
#> 577 SYNOPTYCZNA 353230295 23.16228 53.10726 BIAŁYSTOK 2000  2     10.6
#> 578 SYNOPTYCZNA 353230295 23.16228 53.10726 BIAŁYSTOK 2000  3     14.8
#> 579 SYNOPTYCZNA 353230295 23.16228 53.10726 BIAŁYSTOK 2000  4     27.8
#> 580 SYNOPTYCZNA 353230295 23.16228 53.10726 BIAŁYSTOK 2000  5     29.3
#> 581 SYNOPTYCZNA 353230295 23.16228 53.10726 BIAŁYSTOK 2000  6     32.6
#>     tmax_mean tmin_abs tmin_mean t2m_mean_mon t5cm_min rr_monthly
#> 575       0.4    -16.5      -4.5         -2.1    -23.5       34.2
#> 577       4.1    -10.4      -1.4          1.3    -12.9       25.4
#> 578       6.2     -6.4      -1.0          2.4     -9.4       45.5
#> 579      17.9     -4.6       4.7         11.5     -8.1       31.6
#> 580      21.3     -4.3       5.7         13.8     -8.3        9.4
#> 581      23.1      1.0       9.6         16.6     -1.8       36.4

h = hydro_imgw(interval = "daily", year = 2010:2011)
head(h)
          id station riv_or_lake       date  hyy idhyy dd   H   Q  T mm thick
1  150210180 ANNOPOL   Wisła (2) 2009-11-01 2010     1  1 287 436 NA 11    NA
2  150210180 ANNOPOL   Wisła (2) 2009-11-02 2010     1  2 282 412 NA 11    NA
3  150210180 ANNOPOL   Wisła (2) 2009-11-03 2010     1  3 272 368 NA 11    NA
4  150210180 ANNOPOL   Wisła (2) 2009-11-04 2010     1  4 268 352 NA 11    NA
5  150210180 ANNOPOL   Wisła (2) 2009-11-05 2010     1  5 264 336 NA 11    NA
6  150210180 ANNOPOL   Wisła (2) 2009-11-06 2010     1  6 260 320 NA 11    NA

Example 5

Create Walter & Lieth climatic diagram based on downloaded data

library(climate)
library(dplyr)

df = meteo_imgw(interval = "monthly", rank = "synop", year = 1991:2019, station = "POZNAŃ") 
df2 = select(df, s
View on GitHub
GitHub Stars102
CategoryDevelopment
Updated6h ago
Forks26

Languages

R

Security Score

85/100

Audited on Mar 29, 2026

No findings