Skip to contents

Introduction to data importing

Welcome to riskyData!

The package riskyData has been developed for the Evidence and Risk colleagues to cleanly and reliably import data from the Environment Agencies API.

Loading the package

The riskyData package is part of a group of tools called flode. To load all these packages, the easiest way is to use;

However, if you only require just the riskyData package you can just use;

Example I - List all sites in API

The loadAPI() function forms the basis of riskyData. Most operations relate in some manner to this. Running the code with no parameters or ID = NULL or ID = "all" will return the station list

This is not just limited to WISKI sites, some water quality data are also present. This functionality will be expanded upon in future versions.

Note this can take some time to load

loadAPI()
#>        wiskiID                     label      riverName observedProperty
#>         <char>                    <char>         <char>           <char>
#>     1: 037048U           Ulting Sarasota  River Chelmer        waterFlow
#>     2:  510810            Beggearn Huish Washford River       waterLevel
#>     3:  510810            Beggearn Huish Washford River        waterFlow
#>     4:   F0803                    Adwick   River Dearne       waterLevel
#>     5:   F0803                    Adwick   River Dearne        waterFlow
#>    ---                                                                  
#> 18244:    <NA> THAMES_KEW BARGE_E_201307         THAMES     conductivity
#> 18245:    <NA> THAMES_KEW BARGE_E_201307         THAMES               ph
#> 18246:    <NA> THAMES_KEW BARGE_E_201307         THAMES      temperature
#> 18247:    <NA> THAMES_KEW BARGE_E_201307         THAMES         salinity
#> 18248:    <NA> THAMES_KEW BARGE_E_201307         THAMES        turbidity
#>        easting northing      lat      long dateOpened dateClosed catchmentArea
#>          <int>    <int>    <num>     <num>     <char>     <char>         <num>
#>     1:  581271   208591 51.74668  0.624437 2008-10-31       <NA>            NA
#>     2:  304007   139460 51.14632 -3.373695 1967-01-01       <NA>          36.3
#>     3:  304007   139460 51.14632 -3.373695 1967-01-01       <NA>          36.3
#>     4:  447677   402022 53.51271 -1.282505 1956-10-29       <NA>         311.0
#>     5:  447677   402022 53.51271 -1.282505 1956-10-29       <NA>         311.0
#>    ---                                                                        
#> 18244:  519325   177740 51.48603 -0.282838 2013-01-16       <NA>            NA
#> 18245:  519325   177740 51.48603 -0.282838 2013-01-16       <NA>            NA
#> 18246:  519325   177740 51.48603 -0.282838 2013-01-16       <NA>            NA
#> 18247:  519325   177740 51.48603 -0.282838 2013-01-16       <NA>            NA
#> 18248:  519325   177740 51.48603 -0.282838 2013-01-16       <NA>            NA
#>        nrfaStationID
#>               <char>
#>     1:          <NA>
#>     2:         51003
#>     3:         51003
#>     4:         27030
#>     5:         27030
#>    ---              
#> 18244:          <NA>
#> 18245:          <NA>
#> 18246:          <NA>
#> 18247:          <NA>
#> 18248:          <NA>

If you wish to constrain these data to NRFA or WISKI sites only add “nrfa” or “wiski” to the ID argument. There’s also an additional API that this function can connect to that contains real time data, for real time data use “flood” and for tidal sites use “tidal”.

Using these in the obsProperty argument you can filter your results to certain types of gauges. With this you are limited to;

Available datapoint options
Parameter observedProperty Unit
Flow waterFlow m3S-1
Stage/Level waterLevel m
Rainfall rainfall mm
Groundwater Level groundwaterLevel mAOD
Ammonium ammonium mg/L
Disolved Oxygen dissolved-oxygen mg/L or %
Conductivity conductivity \(\mu /S\) cm
pH ph
Temperature temperature C
Turbidity turbidity NTU
Nitrate nitrate mg/L (as N)
Chlorophyll chlorophyll \(\mu /L\)
Salinity salinity g/L
Blue Green Algae bga RFU
Fluorescent Dissolved Organic Matter fdom RFU

To load all data you can also use;

# Note code not run
loadAPI(ID = "all") # does the same as loadAPI()

If we wished to load all the flow sites with WISKI data available we can use;

loadAPI(ID = "wiski", obsProperty = "waterFlow")
#>         wiskiID              label         riverName observedProperty easting
#>          <char>             <char>            <char>           <char>   <int>
#>    1:   037048U    Ulting Sarasota     River Chelmer        waterFlow  581271
#>    2:    510810     Beggearn Huish    Washford River        waterFlow  304007
#>    3:     F0803             Adwick      River Dearne        waterFlow  447677
#>    4:  SS90F011         Thorverton         River Exe        waterFlow  293602
#>    5:    521410              Iwood   Congresbury Yeo        waterFlow  345173
#>   ---                                                                        
#> 1180: 253211017        Chessbridge      Chess Stream        waterFlow  521667
#> 1181: 351221005      Tilley Bridge Nunningham Stream        waterFlow  566193
#> 1182:      4047     Blyth Oldcotes    Oldcoates Dyke        waterFlow  461470
#> 1183:      2884 Burlington - Worfe       River Worfe        waterFlow  378175
#> 1184:  ST21F003        Yalham Farm      Trib (otter)        waterFlow  321916
#>       northing      lat      long dateOpened dateClosed catchmentArea
#>          <int>    <num>     <num>     <char>     <char>         <num>
#>    1:   208591 51.74668  0.624437 2008-10-31       <NA>            NA
#>    2:   139460 51.14632 -3.373695 1967-01-01       <NA>          36.3
#>    3:   402022 53.51271 -1.282505 1956-10-29       <NA>         311.0
#>    4:   101602 50.80417 -3.511302 1956-04-30       <NA>         600.9
#>    5:   163064 51.36398 -2.788890 1973-03-12       <NA>            NA
#>   ---                                                                
#> 1180:   117269 50.94203 -0.269620 1964-11-27       <NA>            NA
#> 1181:   112875 50.89145  0.361642 1950-03-15       <NA>            NA
#> 1182:   387550 53.38122 -1.077358 1970-09-01       <NA>          85.0
#> 1183:   310915 52.69546 -2.324363 1999-05-26       <NA>            NA
#> 1184:   114949 50.92868 -3.112434 2024-04-13       <NA>            NA
#>       nrfaStationID
#>              <char>
#>    1:          <NA>
#>    2:         51003
#>    3:         27030
#>    4:         45001
#>    5:         52017
#>   ---              
#> 1180:         41028
#> 1181:         41001
#> 1182:         28047
#> 1183:          <NA>
#> 1184:          <NA>

Or if we wished to load the sites that are used within the National River Flow Archive (NRFA);

loadAPI(ID = "nrfa")
#>         wiskiID              label           riverName observedProperty easting
#>          <char>             <char>              <char>           <char>   <int>
#>    1:    510810     Beggearn Huish      Washford River       waterLevel  304007
#>    2:    510810     Beggearn Huish      Washford River        waterFlow  304007
#>    3:     F0803             Adwick        River Dearne       waterLevel  447677
#>    4:     F0803             Adwick        River Dearne        waterFlow  447677
#>    5:      2048       Wellesbourne          River Dene       waterLevel  427271
#>   ---                                                                          
#> 1633: 352622003 Lewes Winterbourne Winterbourne Stream        waterFlow  540329
#> 1634: 253211017        Chessbridge        Chess Stream        waterFlow  521667
#> 1635: 351221005      Tilley Bridge   Nunningham Stream        waterFlow  566193
#> 1636:      4047     Blyth Oldcotes      Oldcoates Dyke        waterFlow  461470
#> 1637:    0890TH       Thorpe Lakes                <NA>         rainfall  502777
#>       northing      lat      long dateOpened dateClosed catchmentArea
#>          <int>    <num>     <num>     <char>     <char>         <num>
#>    1:   139460 51.14632 -3.373695 1967-01-01       <NA>          36.3
#>    2:   139460 51.14632 -3.373695 1967-01-01       <NA>          36.3
#>    3:   402022 53.51271 -1.282505 1956-10-29       <NA>         311.0
#>    4:   402022 53.51271 -1.282505 1956-10-29       <NA>         311.0
#>    5:   255587 52.19784 -1.602416 1976-05-12       <NA>            NA
#>   ---                                                                
#> 1633:   109584 50.86873 -0.007107 1966-10-27       <NA>            NA
#> 1634:   117269 50.94203 -0.269620 1964-11-27       <NA>            NA
#> 1635:   112875 50.89145  0.361642 1950-03-15       <NA>            NA
#> 1636:   387550 53.38122 -1.077358 1970-09-01       <NA>          85.0
#> 1637:   167930 51.40109 -0.523920 2024-04-11       <NA>            NA
#>       nrfaStationID
#>              <char>
#>    1:         51003
#>    2:         51003
#>    3:         27030
#>    4:         27030
#>    5:         54048
#>   ---              
#> 1633:         41037
#> 1634:         41028
#> 1635:         41001
#> 1636:         28047
#> 1637:         39042

To view sites that have realtime data available use;

loadAPI(ID = "flood")
#>       stationReference   wiskiID                      label  parameter
#>                 <char>    <char>                     <char>     <char>
#>    1:           1029TH    1029TH            Bourton Dickler waterLevel
#>    2:           1029TH    1029TH            Bourton Dickler waterLevel
#>    3:            E2043    L31004            Surfleet Sluice waterLevel
#>    4:            52119 520320_FW                 Gaw Bridge waterLevel
#>    5:           E21136    L33865                 Hemingford waterLevel
#>   ---                                                                 
#> 6228:            E2897      <NA>                  IRNHAM GS  waterFlow
#> 6229:            E3004      <NA>          BURTON COGGLES GS  waterFlow
#> 6230:          SU26_14      <NA>           Braydon Hook OBH waterLevel
#> 6231:           E78441      <NA> DITCHAMPTON RESERVOIR DNP3 waterLevel
#> 6232:             4765      <NA>           Foston Reservoir waterLevel
#>       parameterName        riverName                           catchmentName
#>              <char>           <char>                                  <char>
#>    1:   Water Level     River Dikler                               Cotswolds
#>    2:   Water Level     River Dikler                               Cotswolds
#>    3:   Water Level       River Glen                                 Welland
#>    4:   Water Level    River Parrett Parrett, Brue and West Somerset Streams
#>    5:   Water Level River Great Ouse                  Upper and Bedford Ouse
#>   ---                                                                       
#> 6228:          Flow             <NA>                                    <NA>
#> 6229:          Flow             <NA>                                    <NA>
#> 6230:   Water Level             <NA>                                    <NA>
#> 6231:   Water Level             <NA>                                    <NA>
#> 6232:   Water Level             <NA>                                    <NA>
#>       easting northing      lat      long gridReference dateOpened datumOffset
#>         <num>    <num>    <num>     <num>        <char>     <char>       <num>
#>    1:  417990   219610 51.87477 -1.740083          <NA> 1994-01-01          NA
#>    2:  417990   219610 51.87477 -1.740083          <NA> 1994-01-01          NA
#>    3:  528000   329300 52.84599 -0.100848          <NA> 1992-01-01         2.0
#>    4:  344383   119926 50.97604 -2.793549          <NA> 1997-01-01        10.0
#>    5:  529500   271200 52.32362 -0.101287  TL 2950 7120 1996-10-01         6.3
#>   ---                                                                         
#> 6228:  503800   327300 52.83322 -0.460655  TF0380027300       <NA>          NA
#> 6229:  498677   326123 52.82361 -0.537027  SK9867726123       <NA>          NA
#> 6230:      NA       NA       NA        NA        SU2167       <NA>          NA
#> 6231:      NA       NA       NA        NA        SU0832       <NA>          NA
#> 6232:  418977   330252 52.86940 -1.719521  SK1897730252       <NA>          NA

Finally for tidal sites use;

loadAPI(ID = "tidal")
#>     stationReference              label  parameter parameterName riverName
#>               <char>             <char>     <char>        <char>    <char>
#>  1:           E70039          Lowestoft waterLevel   Water Level      Tide
#>  2:           E70024          Lowestoft waterLevel   Water Level      <NA>
#>  3:           E72639 Avonmouth Portbury waterLevel   Water Level      Tide
#>  4:           E72624 Avonmouth Portbury waterLevel   Water Level      <NA>
#>  5:           E71539          Sheerness waterLevel   Water Level      Tide
#>  6:           E71524          Sheerness waterLevel   Water Level      <NA>
#>  7:           E71939        Bournemouth waterLevel   Water Level      Tide
#>  8:           E71924        Bournemouth waterLevel   Water Level      <NA>
#>  9:           E71239             Cromer waterLevel   Water Level      Tide
#> 10:           E71224             Cromer waterLevel   Water Level      <NA>
#> 11:           E72039           Weymouth waterLevel   Water Level      Tide
#> 12:           E72024           Weymouth waterLevel   Water Level      <NA>
#> 13:           E71639              Dover waterLevel   Water Level      Tide
#> 14:           E71624              Dover waterLevel   Water Level      <NA>
#> 15:           E73439            Heysham waterLevel   Water Level      Tide
#> 16:           E73424            Heysham waterLevel   Water Level      <NA>
#> 17:           E72439         Ilfracombe waterLevel   Water Level      Tide
#> 18:           E72424         Ilfracombe waterLevel   Water Level      <NA>
#> 19:           E70939      North Shields waterLevel   Water Level      Tide
#> 20:           E70924      North Shields waterLevel   Water Level      <NA>
#> 21:           E73639         Workington waterLevel   Water Level      Tide
#> 22:           E73624         Workington waterLevel   Water Level      <NA>
#> 23:           E72139           Plymouth waterLevel   Water Level      Tide
#> 24:           E72124           Plymouth waterLevel   Water Level      <NA>
#> 25:           E71739           Newhaven waterLevel   Water Level      Tide
#> 26:           E71724           Newhaven waterLevel   Water Level      <NA>
#> 27:           E71039             Whitby waterLevel   Water Level      Tide
#> 28:           E71024             Whitby waterLevel   Water Level      <NA>
#> 29:           E70139          Liverpool waterLevel   Water Level      <NA>
#> 30:           E70124          Liverpool waterLevel   Water Level      <NA>
#> 31:           E72539      Hinkley Point waterLevel   Water Level      Tide
#> 32:           E72524      Hinkley Point waterLevel   Water Level      <NA>
#> 33:           E71439            Harwich waterLevel   Water Level      Tide
#> 34:           E71424            Harwich waterLevel   Water Level      <NA>
#> 35:           E72239             Newlyn waterLevel   Water Level      Tide
#> 36:           E72224             Newlyn waterLevel   Water Level      <NA>
#> 37:           E71839         Portsmouth waterLevel   Water Level      <NA>
#> 38:           E71824         Portsmouth waterLevel   Water Level      <NA>
#> 39:           E71139          Immingham waterLevel   Water Level      Tide
#> 40:           E71124          Immingham waterLevel   Water Level      <NA>
#> 41:           E72324           St Marys waterLevel   Water Level      <NA>
#> 42:           E72339           St Marys waterLevel   Water Level      <NA>
#> 43:           E73939           Portrush waterLevel   Water Level      <NA>
#> 44:           E73924           Portrush waterLevel   Water Level      <NA>
#> 45:           E70539           Holyhead waterLevel   Water Level      <NA>
#> 46:           E70524           Holyhead waterLevel   Water Level      <NA>
#> 47:           E73139          Fishguard waterLevel   Water Level      <NA>
#> 48:           E73124          Fishguard waterLevel   Water Level      <NA>
#> 49:           E70439           Ullapool waterLevel   Water Level      <NA>
#> 50:           E70424           Ullapool waterLevel   Water Level      <NA>
#> 51:           E70824              Leith waterLevel   Water Level      <NA>
#> 52:           E70839              Leith waterLevel   Water Level      <NA>
#> 53:           E72924            Mumbles waterLevel   Water Level      <NA>
#> 54:           E72939            Mumbles waterLevel   Water Level      <NA>
#> 55:           E72839            Newport waterLevel   Water Level      <NA>
#> 56:           E72825            Newport waterLevel   Water Level      <NA>
#> 57:           E72824            Newport waterLevel   Water Level      <NA>
#> 58:           E70739           Aberdeen waterLevel   Water Level      <NA>
#> 59:           E70724           Aberdeen waterLevel   Water Level      <NA>
#> 60:           E73024      Milford Haven waterLevel   Water Level      <NA>
#> 61:           E73039      Milford Haven waterLevel   Water Level      <NA>
#> 62:           E74039           Millport waterLevel   Water Level      <NA>
#> 63:           E74024           Millport waterLevel   Water Level      <NA>
#> 64:           E73839             Bangor waterLevel   Water Level      <NA>
#> 65:           E73824             Bangor waterLevel   Water Level      <NA>
#> 66:           E70624               Wick waterLevel   Water Level      <NA>
#> 67:           E70639               Wick waterLevel   Water Level      <NA>
#> 68:           E73524          Port Erin waterLevel   Water Level      <NA>
#> 69:           E73539          Port Erin waterLevel   Water Level      <NA>
#> 70:           E70339      Kinlochbervie waterLevel   Water Level      <NA>
#> 71:           E70324      Kinlochbervie waterLevel   Water Level      <NA>
#> 72:           E74224          Tobermory waterLevel   Water Level      <NA>
#> 73:           E74239          Tobermory waterLevel   Water Level      <NA>
#> 74:           E73739        Portpatrick waterLevel   Water Level      <NA>
#> 75:           E73724        Portpatrick waterLevel   Water Level      <NA>
#> 76:           E74324          Stornoway waterLevel   Water Level      <NA>
#> 77:           E74339          Stornoway waterLevel   Water Level      <NA>
#> 78:           E70239             Jersey waterLevel   Water Level      <NA>
#> 79:           E70224             Jersey waterLevel   Water Level      <NA>
#> 80:           E73224           Barmouth waterLevel   Water Level      <NA>
#> 81:           E73239           Barmouth waterLevel   Water Level      <NA>
#> 82:           E74424            Lerwick waterLevel   Water Level      <NA>
#> 83:           E74439            Lerwick waterLevel   Water Level      <NA>
#> 84:           E73324          Llandudno waterLevel   Water Level      <NA>
#> 85:           E73339          Llandudno waterLevel   Water Level      <NA>
#> 86:           E72623 Avonmouth Portbury waterLevel   Water Level      <NA>
#>     stationReference              label  parameter parameterName riverName
#>             catchmentName easting northing      lat      long   gridReference
#>                    <char>   <int>    <int>    <num>     <num>          <char>
#>  1:  England - East Coast  654780   292741 52.47308  1.750085    TM 5478 9274
#>  2:                  <NA>  654781   292745 52.47311  1.750110  TM 54781 92745
#>  3: England - South Coast  349530   178147 51.49999 -2.728468    ST 4953 7815
#>  4:                  <NA>  349530   178148 51.50000 -2.728470  ST 49530 78148
#>  5:  England - East Coast  590740   175419 51.44563  0.743415    TQ 9074 7542
#>  6:                  <NA>  590742   175420 51.44564  0.743440  TQ 90742 75420
#>  7: England - South Coast  408930    90530 50.71433 -1.874873    SZ 0893 9053
#>  8:                  <NA>  408931    90530 50.71433 -1.874860  SZ 08931 90530
#>  9:  England - East Coast  621979   342539 52.93432  1.301623    TG 2198 4254
#> 10:                  <NA>  621980   342544 52.93436  1.301640  TG 21980 42544
#> 11: England - South Coast  368399    78850 50.60850 -2.447945    SY 6840 7885
#> 12:                  <NA>  368399    78850 50.60850 -2.447940  SY 68399 78850
#> 13: England - South Coast  632650   140260 51.11437  1.322641    TR 3265 4026
#> 14:                  <NA>  632652   140262 51.11439  1.322670  TR 32652 40262
#> 15:  England - West Coast  339820   459928 54.03180 -2.920253    SD 3982 5993
#> 16:                  <NA>  339820   459932 54.03183 -2.920250  SD 39820 59932
#> 17: England - South Coast  252549   147891 51.21113 -4.112362    SS 5255 4789
#> 18:                  <NA>  252547   147892 51.21114 -4.112390  SS 52547 47892
#> 19:  England - East Coast  435929   568240 55.00742 -1.439769    NZ 3593 6824
#> 20:                  <NA>  435928   568243 55.00744 -1.439780  NZ 35928 68243
#> 21:  England - West Coast  298980   529529 54.65069 -3.567170    NX 9898 2953
#> 22:                  <NA>  298980   529532 54.65072 -3.567170  NX 98980 29532
#> 23: England - South Coast  244690    54339 50.36840 -4.185217    SX 4469 5434
#> 24:                  <NA>  244688    54338 50.36839 -4.185250  SX 44688 54338
#> 25: England - South Coast  545109   100039 50.78178  0.057004    TQ 4511 0004
#> 26:                  <NA>  545111   100040 50.78178  0.057030  TQ 45111 00040
#> 27:  England - East Coast  489840   511399 54.48997 -0.614597    NZ 8984 1140
#> 28:                  <NA>  489839   511403 54.49000 -0.614610  NZ 89839 11403
#> 29:                  <NA>  332490   395254 53.44969 -3.018000  SJ 32490 95254
#> 30:                  <NA>  332490   395254 53.44969 -3.018000  SJ 32490 95254
#> 31: England - South Coast  321070   146320 51.21061 -3.131326    ST 2107 4632
#> 32:                  <NA>  321093   146364 51.21100 -3.131000  ST 21093 46364
#> 33: England - South Coast  626340   232841 51.94798  1.292108    TM 2634 3284
#> 34:                  <NA>  626342   232843 51.94800  1.292140  TM 26342 32843
#> 35: England - South Coast  146759    28559 50.10301 -5.542779    SW 4676 2856
#> 36:                  <NA>  146743    28559 50.10300 -5.543000  SW 46743 28559
#> 37:                  <NA>  462731   100679 50.80228 -1.111170  SU 62731 00679
#> 38:                  <NA>  462731   100679 50.80228 -1.111170  SU 62731 00679
#> 39:  England - East Coast  519959   416378 53.63018 -0.187420    TA 1996 1638
#> 40:                  <NA>  519959   416382 53.63022 -0.187420  TA 19959 16382
#> 41:                  <NA>   90268    10966 49.91847 -6.316420  SV 90268 10966
#> 42:                  <NA>   90268    10966 49.91847 -6.316420  SV 90268 10966
#> 43:                  <NA>  103846   600180 55.20678 -6.656830  NR 03846 00180
#> 44:                  <NA>  103846   600180 55.20678 -6.656830  NR 03846 00180
#> 45:                  <NA>  225529   382871 53.31394 -4.620440  SH 25529 82871
#> 46:                  <NA>  225529   382871 53.31394 -4.620440  SH 25529 82871
#> 47:                  <NA>  195337   239182 52.01322 -4.983750  SM 95337 39182
#> 48:                  <NA>  195337   239182 52.01322 -4.983750  SM 95337 39182
#> 49:                  <NA>  212929   893910 57.89525 -5.157890  NH 12929 93910
#> 50:                  <NA>  212929   893910 57.89525 -5.157890  NH 12929 93910
#> 51:                  <NA>  326379   678062 55.98983 -3.181690  NT 26379 78062
#> 52:                  <NA>  326379   678062 55.98983 -3.181690  NT 26379 78062
#> 53:                  <NA>  263188   187531 51.57000 -3.975440  SS 63188 87531
#> 54:                  <NA>  263188   187531 51.57000 -3.975440  SS 63188 87531
#> 55:                  <NA>  331629   183920 51.55000 -2.987440  ST 31629 83920
#> 56:                  <NA>  331629   183920 51.55000 -2.987440  ST 31629 83920
#> 57:                  <NA>  331629   183920 51.55000 -2.987440  ST 31629 83920
#> 58:                  <NA>  395417   805913 57.14406 -2.077360  NJ 95417 05913
#> 59:                  <NA>  395417   805913 57.14406 -2.077360  NJ 95417 05913
#> 60:                  <NA>  189261   205371 51.70739 -5.051530  SM 89261 05371
#> 61:                  <NA>  189261   205371 51.70739 -5.051530  SM 89261 05371
#> 62:                  <NA>  217690   654544 55.74981 -4.906330  NS 17690 54544
#> 63:                  <NA>  217690   654544 55.74981 -4.906330  NS 17690 54544
#> 64:                  <NA>  163460   536151 54.66475 -5.669470  NW 63460 36151
#> 65:                  <NA>  163460   536151 54.66475 -5.669470  NW 63460 36151
#> 66:                  <NA>  336679   950811 58.44097 -3.086310  ND 36679 50811
#> 67:                  <NA>  336679   950811 58.44097 -3.086310  ND 36679 50811
#> 68:                  <NA>  219040   469043 54.08539 -4.768060  SC 19040 69043
#> 69:                  <NA>  219040   469043 54.08539 -4.768060  SC 19040 69043
#> 70:                  <NA>  222145   956079 58.45661 -5.050080  NC 22145 56079
#> 71:                  <NA>  222145   956079 58.45661 -5.050080  NC 22145 56079
#> 72:                  <NA>  150790   755309 56.62311 -6.064220  NM 50790 55309
#> 73:                  <NA>  150790   755309 56.62311 -6.064220  NM 50790 55309
#> 74:                  <NA>  199760   554214 54.84256 -5.120030  NW 99760 54214
#> 75:                  <NA>  199760   554214 54.84256 -5.120030  NW 99760 54214
#> 76:                  <NA>  142280   932739 58.20781 -6.388970  NB 42280 32739
#> 77:                  <NA>  142280   932739 58.20781 -6.388970  NB 42280 32739
#> 78:                  <NA>  391593   -79699 49.18333 -2.116670 SY 91593 -79699
#> 79:                  <NA>  391593   -79699 49.18333 -2.116670 SY 91593 -79699
#> 80:                  <NA>  261969   315483 52.71933 -4.045030  SH 61969 15483
#> 81:                  <NA>  261969   315483 52.71933 -4.045030  SH 61969 15483
#> 82:                  <NA>  447829  1141374 60.15403 -1.140310  HU 47829 41374
#> 83:                  <NA>  447829  1141374 60.15403 -1.140310  HU 47829 41374
#> 84:                  <NA>  278549   383195 53.33167 -3.825220  SH 78549 83195
#> 85:                  <NA>  278549   383195 53.33167 -3.825220  SH 78549 83195
#> 86:                  <NA>  349562   178148 51.50000 -2.728000  ST 49562 78148
#>             catchmentName easting northing      lat      long   gridReference
#>     dateOpened
#>         <char>
#>  1: 2012-01-19
#>  2:       <NA>
#>  3: 2012-02-24
#>  4:       <NA>
#>  5: 2012-01-31
#>  6:       <NA>
#>  7: 2011-10-01
#>  8:       <NA>
#>  9: 2012-01-20
#> 10:       <NA>
#> 11: 2011-09-30
#> 12:       <NA>
#> 13: 2012-01-26
#> 14:       <NA>
#> 15: 2011-12-02
#> 16:       <NA>
#> 17: 2011-10-11
#> 18:       <NA>
#> 19: 2012-01-13
#> 20:       <NA>
#> 21: 2011-12-12
#> 22:       <NA>
#> 23: 2011-10-11
#> 24:       <NA>
#> 25: 2012-02-09
#> 26:       <NA>
#> 27: 2012-05-02
#> 28:       <NA>
#> 29:       <NA>
#> 30:       <NA>
#> 31: 2012-05-10
#> 32:       <NA>
#> 33: 2012-02-13
#> 34:       <NA>
#> 35: 1994-07-06
#> 36:       <NA>
#> 37:       <NA>
#> 38:       <NA>
#> 39: 2012-02-03
#> 40:       <NA>
#> 41:       <NA>
#> 42:       <NA>
#> 43:       <NA>
#> 44:       <NA>
#> 45:       <NA>
#> 46:       <NA>
#> 47:       <NA>
#> 48:       <NA>
#> 49:       <NA>
#> 50:       <NA>
#> 51:       <NA>
#> 52:       <NA>
#> 53:       <NA>
#> 54:       <NA>
#> 55:       <NA>
#> 56:       <NA>
#> 57:       <NA>
#> 58:       <NA>
#> 59:       <NA>
#> 60:       <NA>
#> 61:       <NA>
#> 62:       <NA>
#> 63:       <NA>
#> 64:       <NA>
#> 65:       <NA>
#> 66:       <NA>
#> 67:       <NA>
#> 68:       <NA>
#> 69:       <NA>
#> 70:       <NA>
#> 71:       <NA>
#> 72:       <NA>
#> 73:       <NA>
#> 74:       <NA>
#> 75:       <NA>
#> 76:       <NA>
#> 77:       <NA>
#> 78:       <NA>
#> 79:       <NA>
#> 80:       <NA>
#> 81:       <NA>
#> 82:       <NA>
#> 83:       <NA>
#> 84:       <NA>
#> 85:       <NA>
#> 86:       <NA>
#>     dateOpened

Example II - Find nearby gauges

Assuming we had a site of interest and wished to see the available nearby gauges. We can search for sites with coordinates within a certain range.

Using the following arguments we can search the api for nearby data; easting, northing, lat, long, and dist.

When we have easting and northing coordinates of 378235 and 276165 respectively and wish to find NRFA gauges within 30km;

loadAPI(easting = 378235 , northing = 276165, dist = 30, ID = "nrfa")
#>    wiskiID        label      riverName observedProperty easting northing
#>     <char>       <char>         <char>           <char>   <int>    <int>
#> 1:    2001      Bewdley   River Severn       waterLevel  378235   276165
#> 2:    2001      Bewdley   River Severn        waterFlow  378235   276165
#> 3:    2034  Oak Cottage   Dowles Brook       waterLevel  377105   276425
#> 4:    2034  Oak Cottage   Dowles Brook        waterFlow  377105   276425
#> 5:    2063    Prestwood    River Stour        waterFlow  386705   286155
#> 6:    2193 Wards Bridge   Hadley Brook        waterFlow  387025   263145
#> 7:    2011 Harford Hill River Salwarpe       waterLevel  386865   261935
#> 8:    2011 Harford Hill River Salwarpe        waterFlow  386865   261935
#>         lat      long dateOpened catchmentArea nrfaStationID
#>       <num>     <num>     <char>         <num>        <char>
#> 1: 52.38307 -2.321186 1921-04-01        4325.0         54001
#> 2: 52.38307 -2.321186 1921-04-01        4325.0         54001
#> 3: 52.38536 -2.337805 1971-08-24          40.8         54034
#> 4: 52.38536 -2.337805 1971-08-24          40.8         54034
#> 5: 52.47315 -2.197148 1972-08-01          89.9         54063
#> 6: 52.26630 -2.191539 1987-12-10          53.0         54096
#> 7: 52.25542 -2.193836 1960-12-19         184.0         54011
#> 8: 52.25542 -2.193836 1960-12-19         184.0         54011

Alternatively, find all groundwater data within 10km of lat-long coordinates; 52.58302, -0.40656

loadAPI(lat = 52.58302, long = -0.40656, dist = 100, obsProperty = "groundwaterLevel")
#>      wiskiID                            label  riverName observedProperty
#>       <char>                           <char>     <char>           <char>
#>   1:  U32610                Wansford Combined River Nene        waterFlow
#>   2:   8_913                   Sutton Wetland       <NA> groundwaterLevel
#>   3:   3_032         Sutton Top Field Spinney       <NA> groundwaterLevel
#>   4:   3_034                Sutton Heath Road       <NA> groundwaterLevel
#>   5:   3_004                          Barnack       <NA> groundwaterLevel
#>  ---                                                                     
#> 123:    <NA> WITHAM_COLSTERWORTH US _E_201905     WITHAM     conductivity
#> 124:    <NA> WITHAM_COLSTERWORTH US _E_201905     WITHAM               ph
#> 125:    <NA> WITHAM_COLSTERWORTH US _E_201905     WITHAM      temperature
#> 126:    <NA> WITHAM_COLSTERWORTH US _E_201905     WITHAM        turbidity
#> 127:  151890                         Hallaton       <NA>         rainfall
#>      easting northing      lat      long dateOpened catchmentArea nrfaStationID
#>        <int>    <int>    <num>     <num>     <char>         <num>        <char>
#>   1:  508060   299550 52.58302 -0.406558 1996-01-16            NA         32010
#>   2:  508845   300065 52.58749 -0.394808 1998-03-25            NA          <NA>
#>   3:  509075   300045 52.58727 -0.391421 1998-03-25            NA          <NA>
#>   4:  509035   300235 52.58898 -0.391949 1998-03-25            NA          <NA>
#>   5:  507345   305125 52.63326 -0.415299 1971-04-23            NA          <NA>
#>  ---                                                                           
#> 123:  492800   323800 52.80377 -0.624875 2019-05-21            NA          <NA>
#> 124:  492800   323800 52.80377 -0.624875 2019-05-21            NA          <NA>
#> 125:  492800   323800 52.80377 -0.624875 2019-05-21            NA          <NA>
#> 126:  492800   323800 52.80377 -0.624875 2019-05-21            NA          <NA>
#> 127:  479540   295960 52.55567 -0.828234 1981-09-29            NA          <NA>

Note the function will not allow you to mix easting-northing with lat-long.

loadAPI(easting=247613, lat = 50.5, long = -4.15, dist = 10, ID = "nrfa")
#> Warning in loadAPI(easting = 247613, lat = 50.5, long = -4.15, dist = 10, : Conflicting coordinate systems, please use  lat-long OR
#>                      easting-northing

Once you have identified a dataset of interest, such as Bewdley, we can inform the API to return all the available datasets assigned to the WISKI ID;

Example III - Known WISKI ID

Say we wish to see what data are available for a given site, in this case Bewdley (WISKI 2001)

We can now use the WISKI ID in the ID argument in loadAPI()

loadAPI(ID = '2001') #! It's good practice to input the ID as a character string
#>    measure period          type
#>     <char>  <int>        <char>
#> 1:    flow  86400          mean
#> 2:   level  86400           max
#> 3:   level    900 instantaneous
#> 4:    flow    900 instantaneous
#> 5:    flow  86400           max
#> 6:   level  86400           min
#> 7:    flow  86400           min

As you can see there are 3 level and 4 flow series available. Of these there are are 2 time steps or periods available. Daily data are 86400 seconds and 15 minute are 900 seconds. The 15 minute data are of type “instantaneous” - these data are used in our flood models. For both flow and stage there are daily minimum and maximum values, for flow there is also a daily mean available.

We wish to now drill into the instantaneous data a bit more.

Example IV - using the datapoints argument

The datapoints argument gives us a lot of control as to what we wish to pull from the API.

Available datapoint options
datapoints info
earliest Returns the first available timestep
latest Returns the last available timestep
day Provides a full days worth of data, uses the from argument to specify the date
range Exports all data between to dates, uses from and to arguments
standard Default extraction of up to 200,000 rows
all Increases the data pull to cover everything available

To find the first time step of the instantaneous series we need to include more arguments; measure, period, type, and datapoints .

All data are exported in the HydroImport class, with this gauge metadata is pulled simultaneously with the observed data. More details on these classes can be seen in VIGNETTE XXXX

loadAPI(ID = '2001', 
        measure = 'flow',
        period = 900,
        type = 'instantaneous',
        datapoints = 'earliest')
#> 
#> ── Class: HydroImport ──────────────────────────────────────────────────────────
#> 
#> ── Metadata: ──
#> 
#> Data Type: Raw Import
#> Station name: Bewdley
#> WISKI ID: 2001
#> Parameter Type: Flow
#> Modifications: NA
#> Start: 2008-10-01 09:00:00
#> End: 2008-10-01 09:00:00
#> Time Step: NA
#> Observations: 1
#> Easting: 378235
#> Northing: 276165
#> Longitude: -2.321186
#> Latitude: 52.383072
#> 
#> ── Observed data: ──
#> 
#>               dateTime value quality  qcode
#>                 <POSc> <num>  <char> <char>
#> 1: 2008-10-01 09:00:00  25.3    Good   <NA>
#> For more details use the $methods() function, the format should be as
#> `Object_name`$methods()

For the latest we can change the text of the datapoints argument to ‘latest’

loadAPI(ID = '2001', 
        measure = 'flow',
        period = 900,
        type = 'instantaneous',
        datapoints = 'latest')
#> 
#> ── Class: HydroImport ──────────────────────────────────────────────────────────
#> 
#> ── Metadata: ──
#> 
#> Data Type: Raw Import
#> Station name: Bewdley
#> WISKI ID: 2001
#> Parameter Type: Flow
#> Modifications: NA
#> Start: 2022-10-01 08:45:00
#> End: 2022-10-01 08:45:00
#> Time Step: NA
#> Observations: 1
#> Easting: 378235
#> Northing: 276165
#> Longitude: -2.321186
#> Latitude: 52.383072
#> 
#> ── Observed data: ──
#> 
#>               dateTime value quality  qcode
#>                 <POSc> <num>  <char> <char>
#> 1: 2022-10-01 08:45:00  11.6    Good   <NA>
#> For more details use the $methods() function, the format should be as
#> `Object_name`$methods()

Now say we wished to look at a specific day ‘2022-06-11’. To do this we will change the datapoints argument and add the from one. We will also plot the data for this;

dt <- loadAPI(ID = '2001', 
              measure = 'flow',
              period = 900,
              type = 'instantaneous',
              datapoints = 'day',
              from = '2022-06-11')

dt$hydroYearDay()$plot(wrap = FALSE)
#>  Calculating hydrological year and day Calculating hydrological year and day [14ms]

If we wished to extend this we can use the ‘range’ option in datapoints. For this we a beginning and end date, these are expressed with from and to arguments

dt <- loadAPI(ID = '2001', 
              measure = 'flow',
              period = 900,
              type = 'instantaneous',
              datapoints = 'range',
              from = '2019-10-01 00:00',
              to = '2020-03-30 00:00')

dt$hydroYearDay()$plot(wrap = FALSE)
#>  Calculating hydrological year and day Calculating hydrological year and day [207ms]

To pull all the data we can use the “all” option.

Note this can take a long time as there is a lot of data!

loadAPI(ID = '2001', 
        measure = 'level',
        period = 900,
        type = 'instantaneous',
        datapoints = 'all')
#> 
#> ── Class: HydroImport ──────────────────────────────────────────────────────────
#> 
#> ── Metadata: ──
#> 
#> Data Type: Raw Import
#> Station name: Bewdley
#> WISKI ID: 2001
#> Parameter Type: Flow
#> Modifications: NA
#> Start: 2008-10-01 09:00:00
#> End: 2022-10-01 08:45:00
#> Time Step: 900
#> Observations: 490848
#> Easting: 378235
#> Northing: 276165
#> Longitude: -2.321186
#> Latitude: 52.383072
#> 
#> ── Observed data: ──
#> 
#>                    dateTime value quality  qcode
#>                      <POSc> <num>  <char> <char>
#>      1: 2008-10-01 09:00:00  25.3    Good   <NA>
#>      2: 2008-10-01 09:15:00  25.5    Good   <NA>
#>      3: 2008-10-01 09:30:00  25.6    Good   <NA>
#>      4: 2008-10-01 09:45:00  25.6    Good   <NA>
#>      5: 2008-10-01 10:00:00  25.7    Good   <NA>
#>     ---                                         
#> 490844: 2022-10-01 07:45:00  12.0    Good   <NA>
#> 490845: 2022-10-01 08:00:00  11.8    Good   <NA>
#> 490846: 2022-10-01 08:15:00  11.6    Good   <NA>
#> 490847: 2022-10-01 08:30:00  11.6    Good   <NA>
#> 490848: 2022-10-01 08:45:00  11.6    Good   <NA>
#> For more details use the $methods() function, the format should be as
#> `Object_name`$methods()