# rm(list=ls())
library(rerddap)
library(tidyverse)

Example R code on how to download data from ERDDAP Servers by Roy Mendelssohn and Scott Chamberlain.

#IOOS Glider Data
Glider = info("sp064-20161214T1913", url="https://data.ioos.us/gliders/erddap/")
glider_data = tabledap(Glider, fields = c('depth', 'salinity','time'),'time>=2016-12-14', 'time<=2016-12-23', url='https://data.ioos.us/gliders/erddap/')

#Example CalCOFI 
CalCOFI = info('siocalcofiHydroCasts')
#CalCOFI2 = info("siocalcofiHydroCasts", url="https://coastwatch.pfeg.noaa.gov/erddap/") works with both methods 
calcofi.df <- tabledap(CalCOFI, 
                       fields = c('cst_cnt',  'date', 'year', 'month', 'julian_date', 'julian_day', 'rpt_line', 'rpt_sta', 'cruz_num', 'intchl', 'intc14', 'time'),
                       'time>=1984-01-01T00:00:00Z', 'time<=2014-04-17T05:35:00Z')

ERDDAP Dataset ID:

  1. HABs-CalPoly
  2. HABs-MontereyWharf
  3. HABs-NewportPier
  4. HABs-SantaCruzWharf
  5. HABs-SantaMonicaPier
  6. HABs-ScrippsPier
  7. HABs-StearnsWharf

HABMAP Variables:

  1. Akashiwo_sanguinea
  2. Alexandrium_spp
  3. Ammonium
  4. Avg_Chloro
  5. Avg_Phaeo
  6. Ceratium
  7. Chl_Volume_Filtered
  8. Chl1
  9. Chl2
  10. Cochlodinium
  11. DA_Volume_Filtered
  12. dDA
  13. depth
  14. Dinophysis_spp
  15. Gymnodinium_spp
  16. latitude
  17. Lingulodinium_polyedra
  18. Location_Code
  19. longitude
  20. Nitrate
  21. Nitrite
  22. Nitrite_Nitrate
  23. Other_Diatoms
  24. Other_Dinoflagellates
  25. pDA
  26. Phaeo1
  27. Phaeo2
  28. Phosphate
  29. Prorocentrum_spp
  30. Pseudo_nitzschia_delicatissima_group
  31. Pseudo_nitzschia_seriata_group
  32. SampleID
  33. Silicate
  34. tDA
  35. Temp
  36. time
  37. Total_Phytoplankton
  38. Volume_Settled_for_Counting

Pull HABMAP Data from ERDDAP

variables = c("Location_Code", "time", "Akashiwo_sanguinea", "Alexandrium_spp", 
    "Ceratium", "Cochlodinium", "Dinophysis_spp", "Gymnodinium_spp", "Lingulodinium_polyedra", 
    "Prorocentrum_spp", "Pseudo_nitzschia_delicatissima_group", "Pseudo_nitzschia_seriata_group", 
    "pDA", "Ammonium", "Avg_Chloro", "Avg_Phaeo", "Nitrate", "Phosphate", "Silicate", 
    "Temp")

CalPoly = rerddap::info(datasetid = "HABs-CalPoly", url = "http://erddap.sccoos.org/erddap/")
CalPoly_Data = tabledap(CalPoly, fields = variables, "time>=2008-01-01T00:00:00Z", 
    "time<=2050-04-17T05:35:00Z", url = "http://erddap.sccoos.org/erddap/")

Monterey = info("HABs-MontereyWharf", url = "http://erddap.sccoos.org/erddap/")
Monterey_Data = tabledap(Monterey, fields = variables, "time>=2008-08-01T00:00:00Z", 
    "time<=2050-04-17T05:35:00Z", url = "http://erddap.sccoos.org/erddap/")

Newport = info("HABs-NewportPier", url = "http://erddap.sccoos.org/erddap/")
Newport_Data = tabledap(Newport, fields = variables, "time>=2008-01-01T00:00:00Z", 
    "time<=2050-04-17T05:35:00Z", url = "http://erddap.sccoos.org/erddap/")

SantaCruz = info("HABs-SantaCruzWharf", url = "http://erddap.sccoos.org/erddap/")
SantaCruz_Data = tabledap(SantaCruz, fields = variables, "time>=2008-01-01T00:00:00Z", 
    "time<=2050-04-17T05:35:00Z", url = "http://erddap.sccoos.org/erddap/")

SantaMonica = info("HABs-SantaMonicaPier", url = "http://erddap.sccoos.org/erddap/")
SantaMonica_Data = tabledap(SantaMonica, fields = variables, "time>=2008-01-01T00:00:00Z", 
    "time<=2050-04-17T05:35:00Z", url = "http://erddap.sccoos.org/erddap/")

Scripps = info("HABs-ScrippsPier", url = "http://erddap.sccoos.org/erddap/")
Scripps_Data = tabledap(Scripps, fields = variables, "time>=2008-01-01T00:00:00Z", 
    "time<=2050-04-17T05:35:00Z", url = "http://erddap.sccoos.org/erddap/")

Stearns = info("HABs-StearnsWharf", url = "http://erddap.sccoos.org/erddap/")
Stearns_Data = tabledap(Stearns, fields = variables, "time>=2008-01-01T00:00:00Z", 
    "time<=2050-04-17T05:35:00Z", url = "http://erddap.sccoos.org/erddap/")

# Bind all the Data into one datatable

HABMAP_Data = dplyr::bind_rows(list(CalPoly_Data, Monterey_Data, Newport_Data, 
    SantaCruz_Data, SantaMonica_Data, Scripps_Data, Stearns_Data))

Arrange Data in Long Format and Save

HABMAP_Data_Long = HABMAP_Data %>%   
  gather(key = "Observations", value = "Measurement", 'Akashiwo_sanguinea', 'Alexandrium_spp','Ceratium', 'Cochlodinium', 'Dinophysis_spp', 'Gymnodinium_spp', 'Lingulodinium_polyedra', 'Prorocentrum_spp','Pseudo_nitzschia_delicatissima_group','Pseudo_nitzschia_seriata_group','pDA', 'Ammonium','Avg_Chloro','Avg_Phaeo','Nitrate','Phosphate', 'Silicate', 'Temp')
         
#Add a column for units - need this for Shiny app 
HAB_data_long_units = HABMAP_Data_Long %>% 
  mutate(Units = ifelse(grepl("pDA", Observations),'ng/mL',
                        ifelse(grepl('Temp', Observations), "Celsius",
                               ifelse(grepl("'Avg_Chloro'|'Avg_Phaeo'", Observations), "mg/m3",
                                      ifelse(grepl("
                                      'Akashiwo_sanguinea'|
                                      'Alexandrium_spp'|
                                      'Ceratium'|
                                      'Cochlodinium'|
                                      'Dinophysis_spp'|
                                      'Gymnodinium_spp'|
                                      'Lingulodinium_polyedra'|
                                      'Prorocentrum_spp'|
                                      'Pseudo_nitzschia_delicatissima_group'|
                                      'Pseudo_nitzschia_seriata_group'", Observations), "cells/L", "uM")))))

#Save HABMAP long formated data table 
write_rds(HAB_data_long_units, "HABMAP_Data/HAB_data_long_units.rds")