MyNixOS website logo
Description

A Wrapper for Querying KISTERS 'WISKI' Databases via the 'KiWIS' API.

A wrapper for querying 'WISKI' databases via the 'KiWIS' 'REST' API. 'WISKI' is an 'SQL' relational database used for the collection and storage of water data developed by KISTERS and 'KiWIS' is a 'REST' service that provides access to 'WISKI' databases via HTTP requests (<https://water.kisters.de/en/technology-trends/kisters-and-open-data/>). Contains a list of default databases (called 'hubs') and also allows users to provide their own 'KiWIS' URL. Supports the entire query process- from metadata to specific time series values. All data is returned as tidy tibbles.

kiwisR

Travis-CI BuildStatus LICENSE CRAN_Status_Badge CRANDownload

Overview

A wrapper for querying KISTERS WISKI databases via the KiWIS API. Users can toggle between various databases by specifying the hub argument. Currently, the default hubs are:

All data is returned as tidy tibbles.

Installation

You can install kiwisR from CRAN:

install.packages('kiwisR')

To install the development version of kiwisR you first need to install devtools.

if(!requireNamespace("devtools")) install.packages("devtools")
devtools::install_github('rywhale/kiwisR')

Then load the package with

library(kiwisR)

Usage

Get Station Information

By default, ki_station_list() returns a tibble containing information for all available stations for the selected hub.

# With swmc as the hub
ki_station_list(hub = 'swmc')
#> # A tibble: 3,903 x 5
#>    station_name        station_no   station_id station_latitude station_longitu~
#>    <chr>               <chr>        <chr>                 <dbl>            <dbl>
#>  1 A SNOW TEMPLATE     SNOW-WLF-XX  952125                 NA               NA  
#>  2 AA SNOW TEMPLATE    SNOW-WLF-TE~ 954599                 NA               NA  
#>  3 ABBOTSFORD A        CLIM-MSC-YXX 133535                 49.0           -122. 
#>  4 ABERDEEN            CLIM-MSC-ABR 121939                 45.5            -98.4
#>  5 ABITIBI CANYON      ZZSNOW-OPG-~ 148200                 49.9            -81.6
#>  6 ABITIBI LAKE        CLIM-MNR-ABL 121135                 48.7            -80.1
#>  7 ABITIBI RIVER AT A~ HYDAT-04ME0~ 136328                 49.9            -81.6
#>  8 ABITIBI RIVER AT I~ HYDAT-04MC0~ 136304                 48.8            -80.7
#>  9 ABITIBI RIVER AT I~ HYDAT-04ME0~ 136324                 49.6            -81.4
#> 10 ABITIBI RIVER AT O~ HYDAT-04ME0~ 136332                 50.2            -81.6
#> # ... with 3,893 more rows

Get Time Series Information

You can use the station_id column returned using ki_station_list() to figure out which time series are available for a given station.

One Station

# Single station_id
available_ts <- ki_timeseries_list(
  hub = 'swmc', 
  station_id = "144659"
  )

available_ts
#> # A tibble: 180 x 6
#>    station_name station_id ts_id ts_name from                to                 
#>    <chr>        <chr>      <chr> <chr>   <dttm>              <dttm>             
#>  1 Jackson Cre~ 144659     9489~ Precip~ 2007-06-01 05:00:00 2019-06-01 05:00:00
#>  2 Jackson Cre~ 144659     1139~ Precip~ 2007-06-19 00:00:00 2019-05-21 12:00:00
#>  3 Jackson Cre~ 144659     9489~ TAir.M~ 2007-06-01 05:00:00 2020-06-01 05:00:00
#>  4 Jackson Cre~ 144659     9490~ LVL.15~ 2005-12-26 05:00:00 2020-07-13 09:30:00
#>  5 Jackson Cre~ 144659     9490~ LVL.Da~ 2005-12-26 05:00:00 2020-07-12 05:00:00
#>  6 Jackson Cre~ 144659     9490~ LVL.Ye~ 2005-01-01 05:00:00 2021-01-01 05:00:00
#>  7 Jackson Cre~ 144659     9490~ Q.DayM~ 2005-12-26 05:00:00 2020-07-12 05:00:00
#>  8 Jackson Cre~ 144659     1166~ Soil C~ 2018-01-01 05:00:00 2021-01-01 05:00:00
#>  9 Jackson Cre~ 144659     1166~ Soil C~ 2018-04-01 05:00:00 2020-06-01 05:00:00
#> 10 Jackson Cre~ 144659     1166~ Soil C~ 2018-01-01 05:00:00 2021-01-01 05:00:00
#> # ... with 170 more rows

Multiple Stations

If you provide a vector to station_id, the returned tibble will have all the available time series from all stations. They can be differentiated using the station_name column.

# Vector of station_ids
my_station_ids <- c("144659", "144342")

available_ts <- ki_timeseries_list(
  hub = 'swmc', 
  station_id = my_station_ids
  )

available_ts
#> # A tibble: 257 x 6
#>    station_name station_id ts_id ts_name from                to                 
#>    <chr>        <chr>      <chr> <chr>   <dttm>              <dttm>             
#>  1 Oshawa Cree~ 144342     1143~ Precip~ 2001-01-01 05:00:00 2020-07-14 05:00:00
#>  2 Oshawa Cree~ 144342     9455~ TWater~ 2011-01-01 05:00:00 2021-01-01 05:00:00
#>  3 Oshawa Cree~ 144342     9456~ LVL.1.O 1986-09-01 06:00:00 2020-07-13 10:15:00
#>  4 Oshawa Cree~ 144342     9456~ LVL.Mo~ 1986-09-01 05:00:00 2020-06-01 05:00:00
#>  5 Oshawa Cree~ 144342     1124~ WWP_Al~ 1900-01-01 05:00:00 1900-01-01 05:00:00
#>  6 Oshawa Cree~ 144342     9456~ Q.Base~ 1986-09-01 09:00:00 2005-04-28 16:30:00
#>  7 Oshawa Cree~ 144342     9456~ Q.RunO~ 1986-09-01 09:00:00 2005-04-28 16:30:00
#>  8 Oshawa Cree~ 144342     9456~ Q.DayM~ 1986-09-01 05:00:00 2020-07-12 05:00:00
#>  9 Jackson Cre~ 144659     9489~ Precip~ 2007-06-01 05:00:00 2019-06-01 05:00:00
#> 10 Jackson Cre~ 144659     1139~ Precip~ 2007-06-19 00:00:00 2019-05-21 12:00:00
#> # ... with 247 more rows

Get Time Series Values

You can now use the ts_id column in the tibble produced by ki_timeseries_list() to query values for chosen time series.

By default this will return values for the past 24 hours. You can specify the dates you’re interested in by setting start_date and end_date. These should be set as date strings with the format ‘YYYY-mm-dd’.

You can pass either a single or multiple ts_id(s).

One Time Series

# Past 24 hours
my_values <- ki_timeseries_values(
  hub = 'swmc', 
  ts_id = '966435042'
  )
#> No start or end date provided, trying to return data for past 24 hours

my_values
#> # A tibble: 441 x 7
#>    Timestamp           Value ts_name ts_id   Units station_name       station_id
#>    <dttm>              <dbl> <chr>   <chr>   <chr> <chr>              <chr>     
#>  1 2020-07-12 00:00:00  24.1 LVL.1.O 966435~ m     Attawapiskat Rive~ 146273    
#>  2 2020-07-12 00:05:00  24.1 LVL.1.O 966435~ m     Attawapiskat Rive~ 146273    
#>  3 2020-07-12 00:10:00  24.1 LVL.1.O 966435~ m     Attawapiskat Rive~ 146273    
#>  4 2020-07-12 00:15:00  24.1 LVL.1.O 966435~ m     Attawapiskat Rive~ 146273    
#>  5 2020-07-12 00:20:00  24.1 LVL.1.O 966435~ m     Attawapiskat Rive~ 146273    
#>  6 2020-07-12 00:25:00  24.1 LVL.1.O 966435~ m     Attawapiskat Rive~ 146273    
#>  7 2020-07-12 00:30:00  24.1 LVL.1.O 966435~ m     Attawapiskat Rive~ 146273    
#>  8 2020-07-12 00:35:00  24.1 LVL.1.O 966435~ m     Attawapiskat Rive~ 146273    
#>  9 2020-07-12 00:40:00  24.1 LVL.1.O 966435~ m     Attawapiskat Rive~ 146273    
#> 10 2020-07-12 00:45:00  24.1 LVL.1.O 966435~ m     Attawapiskat Rive~ 146273    
#> # ... with 431 more rows

Multiple Time Series

# Specified date, multiple time series
my_ts_ids <- c("1125831042","908195042")
my_values <- ki_timeseries_values(
  hub = 'swmc',
  ts_id = my_ts_ids,
  start_date = "2015-08-28",
  end_date = "2018-09-13"
  )

my_values
#> # A tibble: 1,264 x 7
#>    Timestamp           Value ts_name   ts_id   Units station_name     station_id
#>    <dttm>              <dbl> <chr>     <chr>   <chr> <chr>            <chr>     
#>  1 2015-09-06 05:00:00  0.19 Q.DayBas~ 112583~ cumec Chippewa Creek ~ 140764    
#>  2 2015-09-17 05:00:00  0.18 Q.DayBas~ 112583~ cumec Chippewa Creek ~ 140764    
#>  3 2015-09-26 05:00:00  0.19 Q.DayBas~ 112583~ cumec Chippewa Creek ~ 140764    
#>  4 2015-09-27 05:00:00  0.19 Q.DayBas~ 112583~ cumec Chippewa Creek ~ 140764    
#>  5 2015-09-28 05:00:00  0.19 Q.DayBas~ 112583~ cumec Chippewa Creek ~ 140764    
#>  6 2015-10-03 05:00:00  0.21 Q.DayBas~ 112583~ cumec Chippewa Creek ~ 140764    
#>  7 2015-10-08 05:00:00  0.22 Q.DayBas~ 112583~ cumec Chippewa Creek ~ 140764    
#>  8 2015-10-12 05:00:00  0.24 Q.DayBas~ 112583~ cumec Chippewa Creek ~ 140764    
#>  9 2015-10-24 05:00:00  0.41 Q.DayBas~ 112583~ cumec Chippewa Creek ~ 140764    
#> 10 2015-11-11 05:00:00  0.42 Q.DayBas~ 112583~ cumec Chippewa Creek ~ 140764    
#> # ... with 1,254 more rows

Using Other Hubs

You can use this package for a KiWIS hub not included in this list by feeding the location of the API service to the hub argument.

For instance: If your URL looks like

http://kiwis.kisters.de/KiWIS/KiWIS?datasource=0&service=kisters&type=queryServices&request=getrequestinfo

specify the hub argument with

http://kiwis.kisters.de/KiWIS/KiWIS?

If you’d like to have a hub added to the defaults, please Submit an Issue

Contributing

See here if you’d like to contribute.

Metadata

Version

0.2.0

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows