Module: Usgs::Site
Instance Method Summary collapse
-
#get_sites(state_cd: nil, county_cd: nil, huc: nil, bBox: 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, bBox: 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 49 50 51 |
# File 'lib/usgs/site.rb', line 24 def get_sites(state_cd: nil, county_cd: nil, huc: nil, bBox: 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: bBox, 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) if (query.keys & major_keys).empty? raise ArgumentError, "You must provide at least one major filter: state_cd, county_cd, huc or bBox" end raw = api_get("/site/", query) Parser.parse_sites(raw.body).map { |row| Models::Site.new(row) } end |