Module: Usgs::Site
Instance Method Summary collapse
-
#get_sites(state_cd: nil, county_cd: nil, huc: nil, b_box: nil, site_name: nil, site_type: nil, site_status: "all", parameter_cd: nil) ⇒ Array<Usgs::Models::Site>
Fetch USGS monitoring locations (sites).
Methods included from Utils
#format_date, #format_datetime, #resolve_parameter_codes
Instance Method Details
#get_sites(state_cd: nil, county_cd: nil, huc: nil, b_box: nil, site_name: nil, site_type: nil, site_status: "all", parameter_cd: nil) ⇒ Array<Usgs::Models::Site>
Fetch USGS monitoring locations (sites)
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/usgs/site.rb', line 24 def get_sites(state_cd: nil, county_cd: nil, huc: nil, b_box: nil, site_name: nil, site_type: nil, site_status: "all", parameter_cd: nil) query = { format: "rdb,1.0", stateCd: state_cd, countyCd: county_cd, huc: huc, bBox: b_box, siteName: site_name, siteType: site_type, siteStatus: site_status }.compact if parameter_cd resolved = resolve_parameter_codes(parameter_cd) query[:parameterCd] = resolved if resolved && !resolved.empty? end # Validate for at least one major filter major_keys = %i[stateCd countyCd huc bBox].map(&:to_sym) raise ArgumentError, "You must provide at least one major filter: state_cd, county_cd, huc or b_box" if (query.keys & major_keys).empty? raw = api_get("/site/", query) Parser.parse_sites(raw.body).map { |row| Models::Site.new(row) } end |