KWB-R / wasserportal

R Package with Functions for Scraping Data of Wasserportal Berlin (https://wasserportal.berlin.de)
https://kwb-r.github.io/wasserportal/
MIT License
0 stars 0 forks source link

read_wasserportal(): adapt function to work for all surface water (maybe also groundwater) stations #21

Open mrustl opened 2 years ago

mrustl commented 2 years ago

i.e. get rid of old approach relying on static station file stations_old but instead make it working for all available ones!

library(wasserportal)

################################################################################
### Old approach for surface water stations
################################################################################

variable_ids <- wasserportal::get_wasserportal_variables()
variable_ids
#>     Wassertemperatur       Leitfaehigkeit              pH_Wert 
#>                  "t"                  "l"                  "p" 
#>     Sauerstoffgehalt Sauerstoffsaettigung          Wasserstand 
#>                  "o"                  "s"                  "w" 
#>           Durchfluss 
#>                  "d"
stations_old <- wasserportal::get_wasserportal_stations()
stations_old
#> $MPS_Berlin_Spandauer_Schifffahrtskanal
#> [1] "601"
#> 
#> $MPS_Caprivibruecke
#> [1] "151"
#> 
#> $MPS_Charlottenburg
#> [1] "153"
#> 
#> $MPS_Landwehrkanal
#> [1] "509"
#> 
#> $MPS_Neukoellner_Schifffahrtskanal
#> [1] "504"
#> 
#> $MPS_Teltowkanal
#> [1] "414"
#> 
#> $MS_Muehlendammschleuse
#> [1] "141"
#> 
#> $MS_Rahnsdorf
#> [1] "111"
#> 
#> $MS_Schmoeckwitz
#> [1] "211"
#> 
#> $MS_Sophienwerder
#> [1] "161"
#> 
#> $MS_Teltow_Werft
#> [1] "421"
length(stations_old)
#> [1] 11

################################################################################
### New Approach
################################################################################
stations <- wasserportal::get_stations()
#> Importing 9 station overviews from Wasserportal Berlin ... ok. (3.76s)

nrow(stations$crosstable)
#> [1] 998

stations_sw <- stations$crosstable %>%
  dplyr::filter(is.na(.data$gws) & is.na(.data$gwq))

nrow(stations_sw)
#> [1] 92

knitr::kable(stations_sw)
Messstellennummer Messstellenname ws df wt lf ph og os gws gwq
5865900 Allee der Kosmonauten x NA NA NA NA NA NA NA NA
5827103 Allendestraße x x NA NA NA NA NA NA NA
5865300 Am Bahndamm x x x NA NA NA NA NA NA
5819900 Am Freibad x NA NA NA NA NA NA NA NA
5864801 Am Kienberg x x NA NA NA NA NA NA NA
5861101 Am Reitweg x NA x NA NA NA NA NA NA
5800107 Am Wolfsschluchtkanal x NA x NA NA NA NA NA NA
5800317 Biesdorfer Baggersee x NA x NA NA NA NA NA NA
5867003 Blankenfelde x NA x NA NA NA NA NA NA
5867401 Bürgerpark x x x NA NA NA NA NA NA
5800301 Dianasee x NA NA NA NA NA NA NA NA
5800302 Dreipfuhl x NA x NA NA NA NA NA NA
5863000 Eisenacher Straße x NA x NA NA NA NA NA NA
5867900 Eisenbahnbrücke x x x NA NA NA NA NA NA
5827101 Fähre Rahnsdorf x x x NA NA NA NA NA NA
5800320 Fennpfuhl x NA x NA NA NA NA NA NA
5800313 Fennsee x NA NA NA NA NA NA NA NA
5860900 Fichtenau x NA NA NA NA NA NA NA NA
5867101 Flaischlenstraße x NA x NA NA NA NA NA NA
5800303 Flughafensee x NA x NA NA NA NA NA NA
5826702 Gosener Landstraße x NA NA NA NA NA NA NA NA
5800305 Groß Glienicker See x NA x NA NA NA NA NA NA
5800304 Grunewaldsee x NA x NA NA NA NA NA NA
5800306 Halensee x NA x NA NA NA NA NA NA
5861000 Hegemeisterweg x NA NA NA NA NA NA NA NA
5867300 Heinersdorf x NA x NA NA NA NA NA NA
5864700 Hellersdorf x NA x NA NA NA NA NA NA
5865000 Honsfelder Brücke x NA x NA NA NA NA NA NA
5865200 Hoppendorfer Straße x NA x NA NA NA NA NA NA
5800308 Hundekehlesee x NA x NA NA NA NA NA NA
5867100 Krontaler Straße x NA x NA NA NA NA NA NA
5869700 Krummendammbrücke x NA x NA NA NA NA NA NA
5867500 Kühnemannstraße x NA x NA NA NA NA NA NA
5870100 Lichterfelde x x x NA NA NA NA NA NA
5800309 Lietzensee x NA x NA NA NA NA NA NA
5819901 Lübars x NA x NA NA NA NA NA NA
5800318 Malchower See x NA x NA NA NA NA NA NA
5826701 Neue Fahlenbergbrücke x x x NA NA NA NA NA NA
5800316 Orankesee x NA x NA NA NA NA NA NA
5867700 Pasewalker Brücke x NA x NA NA NA NA NA NA
5803500 Pfaueninsel x NA x NA NA NA NA NA NA
5800312 Plötzensee x NA x NA NA NA NA NA NA
5867000 Röntgental x NA x NA NA NA NA NA NA
5800106 Schäfersee x NA x NA NA NA NA NA NA
5866700 Schleuse Neukölln OP x NA x NA NA NA NA NA NA
5866800 Schleuse Neukölln UP x NA x NA NA NA NA NA NA
5862811 Schmöckwitz US x x NA NA NA NA NA NA NA
5867600 Schönwalder Str. x NA x NA NA NA NA NA NA
5827700 Sophienwerder x x x NA NA NA NA NA NA
5820000 St.-Joseph-Steg x NA x NA NA NA NA NA NA
5815911 Tegelort x x NA NA NA NA NA NA NA
5803200 Tiefwerder x x x NA NA NA NA NA NA
5867301 Venturigerinne x NA x NA NA NA NA NA NA
5867201 Verteiler OP x NA x NA NA NA NA NA NA
5867202 Verteiler UP x NA x NA NA NA NA NA NA
5800310 Waldsee Zehlendorf x NA x NA NA NA NA NA NA
5800314 Weißer See x NA NA NA NA NA NA NA NA
5861200 Wiesengrund x x x NA NA NA NA NA NA
5867001 Wiltbergstraße x NA NA NA NA NA NA NA NA
5864800 Wuhletal x x x NA NA NA NA NA NA
5866301 Zoo x x NA NA NA NA NA NA NA
5825500 Beeskow, Spreeschleuse UP x NA NA NA NA NA NA NA NA
5828000 Bräsinchen, Hauptabflusspegel x NA NA NA NA NA NA NA NA
5821000 Cottbus, Sandower Brücke x NA NA NA NA NA NA NA NA
5827000 Hohenbinde x NA NA NA NA NA NA NA NA
5804300 Ketzin x NA NA NA NA NA NA NA NA
5824700 Leibsch, Spreewehr UP x NA NA NA NA NA NA NA NA
5823800 Lübben, Zusammenfluss x NA NA NA NA NA NA NA NA
580412 Potsdam x NA NA NA NA NA NA NA NA
5862201 Prierow 2 x NA NA NA NA NA NA NA NA
5802600 Sachsenhausen x NA NA NA NA NA NA NA NA
5819801 Schildow x NA NA NA NA NA NA NA NA
5820900 Spremberg x NA NA NA NA NA NA NA NA
5820901 Talsperre Spremberg, Beckenpegel x NA NA NA NA NA NA NA NA
581591 Borgsdorf NA x NA NA NA NA NA NA NA
580430 Ketzin NA x NA NA NA NA NA NA NA
601 MPS Berlin-Spandauer-Schifffahrtskanal NA NA x x x x x NA NA
151 MPS Caprivibrücke NA NA x x x x x NA NA
153 MPS Charlottenburg NA NA x x x x x NA NA
509 MPS Landwehrkanal NA NA x x x x x NA NA
504 MPS Neuköllner Schifffahrtskanal NA NA x x x x x NA NA
414 MPS Teltowkanal NA NA x x x x x NA NA
141 MS Mühlendammschleuse NA NA x x x x x NA NA
111 MS Rahnsdorf NA NA x x x x x NA NA
211 MS Schmöckwitz NA NA x x x x x NA NA
161 MS Sophienwerder NA NA x x x x x NA NA
421 MS Teltow-Werft NA NA x x x x x NA NA
SP_0150 Beeskow NA NA x x x x x NA NA
TK_0025 Kleinmachnow NA NA x x x x x NA NA
SP_0130 Leibsch NA NA x x x x x NA NA
SP_0050 Neuhausen NA NA x x x x x NA NA
HV_0110 Potsdam NA NA x x x x x NA NA
station_sw <- stations_sw[1,] %>%
  dplyr::select_if(function(x){!all(is.na(x))})

station_sw
#> # A tibble: 1 x 3
#>   Messstellennummer Messstellenname       ws   
#>   <chr>             <chr>                 <chr>
#> 1 5865900           Allee der Kosmonauten x

get_station_variables_new <- function(station) {
  names(station)[!names(station) %in% c("Messstellennummer", "Messstellenname")]
}

get_station_variables_new(station_sw)
#> [1] "ws"

### Function below does not work as found variables differ slightly from old ones
### (see `variable_ids` above) compared to the variables (compare column headers)
### provided by Wasserportal that are now harvested by scraping the available
### tables with the function wasserportal::get_stations()

wasserportal::read_wasserportal(station = station_sw$Messstellennummer,
                                variables = get_station_variables_new(station_sw)
                                )
#> Error in wasserportal::read_wasserportal(station = station_sw$Messstellennummer, : all(variables %in% variable_ids) ist nicht TRUE

Created on 2022-06-01 by the reprex package (v2.0.0)

Session info ``` r sessioninfo::session_info() #> - Session info --------------------------------------------------------------- #> setting value #> version R version 4.1.2 (2021-11-01) #> os Windows 10 x64 #> system x86_64, mingw32 #> ui RTerm #> language (EN) #> collate German_Germany.1252 #> ctype German_Germany.1252 #> tz Europe/Berlin #> date 2022-06-01 #> #> - Packages ------------------------------------------------------------------- #> package * version date lib source #> assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.1.0) #> backports 1.2.1 2020-12-09 [1] CRAN (R 4.1.0) #> cli 3.3.0 2022-04-25 [1] CRAN (R 4.1.3) #> crayon 1.5.1 2022-03-26 [1] CRAN (R 4.1.3) #> data.table 1.14.2 2021-09-27 [1] CRAN (R 4.1.3) #> DBI 1.1.2 2021-12-20 [1] CRAN (R 4.1.3) #> digest 0.6.27 2020-10-24 [1] CRAN (R 4.1.0) #> dplyr 1.0.9 2022-04-28 [1] CRAN (R 4.1.3) #> ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.1.0) #> evaluate 0.14 2019-05-28 [1] CRAN (R 4.1.0) #> fansi 1.0.3 2022-03-24 [1] CRAN (R 4.1.3) #> fastmap 1.1.0 2021-01-25 [1] CRAN (R 4.1.0) #> fs 1.5.0 2020-07-31 [1] CRAN (R 4.1.0) #> generics 0.1.2 2022-01-31 [1] CRAN (R 4.1.3) #> glue 1.6.2 2022-02-24 [1] CRAN (R 4.1.3) #> highr 0.9 2021-04-16 [1] CRAN (R 4.1.0) #> htmltools 0.5.2 2021-08-25 [1] CRAN (R 4.1.2) #> httr 1.4.3 2022-05-04 [1] CRAN (R 4.1.3) #> knitr 1.33 2021-04-24 [1] CRAN (R 4.1.0) #> kwb.datetime 0.5.0 2022-06-01 [1] Github (kwb-r/kwb.datetime@5f2b2c4) #> kwb.utils 0.12.0 2022-06-01 [1] Github (kwb-r/kwb.utils@9a63030) #> lifecycle 1.0.1 2021-09-24 [1] CRAN (R 4.1.1) #> magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.1.3) #> pillar 1.7.0 2022-02-01 [1] CRAN (R 4.1.3) #> pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.1.0) #> purrr 0.3.4 2020-04-17 [1] CRAN (R 4.1.0) #> R6 2.5.1 2021-08-19 [1] CRAN (R 4.1.1) #> reprex 2.0.0 2021-04-02 [1] CRAN (R 4.1.0) #> rlang 1.0.2 2022-03-04 [1] CRAN (R 4.1.3) #> rmarkdown 2.10 2021-08-06 [1] CRAN (R 4.1.0) #> rstudioapi 0.13 2020-11-12 [1] CRAN (R 4.1.0) #> rvest 1.0.2 2021-10-16 [1] CRAN (R 4.1.3) #> sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 4.1.0) #> stringi 1.7.6 2021-11-29 [1] CRAN (R 4.1.2) #> stringr 1.4.0 2019-02-10 [1] CRAN (R 4.1.0) #> styler 1.4.1 2021-03-30 [1] CRAN (R 4.1.0) #> tibble 3.1.7 2022-05-03 [1] CRAN (R 4.1.3) #> tidyr 1.2.0 2022-02-01 [1] CRAN (R 4.1.3) #> tidyselect 1.1.2 2022-02-21 [1] CRAN (R 4.1.3) #> utf8 1.2.2 2021-07-24 [1] CRAN (R 4.1.3) #> vctrs 0.4.1 2022-04-13 [1] CRAN (R 4.1.3) #> wasserportal * 0.1.0 2022-06-01 [1] Github (kwb-r/wasserportal@2d2d65d) #> withr 2.5.0 2022-03-03 [1] CRAN (R 4.1.3) #> xfun 0.23 2021-05-15 [1] CRAN (R 4.1.0) #> xml2 1.3.3 2021-11-30 [1] CRAN (R 4.1.3) #> yaml 2.2.1 2020-02-01 [1] CRAN (R 4.1.0) #> #> [1] C:/Users/mrustl/Documents/R/win-library/4.1 #> [2] C:/Program Files/R/R-4.1.2/library ```