Updated on July 17, 2023


Background

The US Forest Service AirFire Group processes real-time air quality data from AirNow. This data is used in research projects and on-line tools such as the Fire & Smoke Map.

The airnow_PM2.5_sites.csv “known locations” file is queried and updated during data processing and contains the most complete version of the spatial metadata associated with AirNow monitoring sites.

NOTE: The AirNow “known locations” file is imperfect because it contains duplicated locations. This is needed to support the AQSID “site identifier” that is provided as part of the AirNow “site locations”. It is the combination of locationID and AQSID that is unique.

Spatial Metadata

Spatial metadata in this dataset include core location metadata defined in MazamaLocationUtils::coreMetadataNames, the AQSID site identifier used by the EPA as well as fields prefixed with airnow_ which are specific to this dataset.

Additional fields are generated through reverse geocoding web requests to the following web services:

library(MazamaLocationUtils)

locationTbl <- readr::read_csv(
  "airnow_PM2.5_sites.csv",
  progress = FALSE,
  show_col_types = FALSE
)
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
##   dat <- vroom(...)
##   problems(dat)
dplyr::glimpse(locationTbl)
## Rows: 2,129
## Columns: 32
## $ locationID               <chr> "61aa22b8558f3212", "cec69fd52886ae58", "c8ac…
## $ fullAQSID                <chr> "124CC0010102", "124CC0010301", "124CC0010401…
## $ locationName             <chr> "St. John's", "Cornerbrook", "Mount Pearl", "…
## $ longitude                <dbl> -52.71150, -58.05560, -52.79480, -55.65970, -…
## $ latitude                 <dbl> 47.56038, 48.94940, 47.50513, 48.92696, 48.95…
## $ elevation                <dbl> 9.80, 0.00, 0.00, 0.00, 0.00, 0.90, 0.00, 0.0…
## $ countryCode              <chr> "CA", "CA", "CA", "CA", "CA", "CA", "CA", "CA…
## $ stateCode                <chr> "NL", "NL", "NL", "NL", "NL", "NL", "NL", "NL…
## $ countyName               <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ timezone                 <chr> "America/St_Johns", "America/St_Johns", "Amer…
## $ houseNumber              <chr> NA, NA, NA, NA, NA, NA, NA, NA, "8", "32", NA…
## $ street                   <chr> "George Street", "Trailway", "Mortimer Drive"…
## $ city                     <chr> NA, NA, NA, "Grand Falls-Windsor", NA, "Burin…
## $ zip                      <chr> "A1C 1H7", "A2H 3P5", "A1N 2C4", "A2A 2C9", "…
## $ AQSID                    <chr> "CC0010102", "000010301", "CC0010401", "CC001…
## $ airnow_stationID         <chr> "CC0010102", "CC0010301", "CC0010401", "CC001…
## $ airnow_parameterName     <chr> "PM2.5", "PM2.5", "PM2.5", "PM2.5", "PM2.5", …
## $ airnow_monitorType       <chr> "Permanent", "Permanent", "Permanent", "Perma…
## $ airnow_siteCode          <chr> "0102", "0301", "0401", "0501", "0602", "0901…
## $ airnow_status            <chr> "Active", "Active", "Active", "Active", "Acti…
## $ airnow_agencyID          <chr> "NL1", "NL1", "NL1", "NL1", "NL1", "NL1", "NL…
## $ airnow_agencyName        <chr> "Newfoundland & Labrador DEC", "Newfoundland …
## $ airnow_EPARegion         <chr> "CA", "CA", "CA", "CA", "CA", "CA", "CA", "CA…
## $ airnow_GMTOffsetHours    <dbl> -3.5, -4.0, -3.5, -3.5, -3.5, -3.5, -4.0, -4.…
## $ airnow_CBSA_ID           <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ airnow_CBSA_Name         <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ airnow_stateAQSCode      <chr> "00", "00", "00", "00", "00", "00", "00", "00…
## $ airnow_countyAQSCode     <chr> "001", "001", "001", "001", "001", "001", "00…
## $ airnow_MSAName           <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ address                  <chr> "Dooly's, George Street, St. John's, NL A1C 1…
## $ airnow_countryFIPS       <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ airnow_stateAbbreviation <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…

Current Map

The interactive map below provides a quick preview of the status of the current version of the dataset.

MazamaLocationUtils::table_leaflet(
  locationTbl,
  maptype = "terrain",
  extraVars = c(
    "AQSID", 
    "airnow_agencyName", 
    "elevation",
    "address"
  ),
  jitter = 0,
  radius = 6,
  color = "black",
  weight = 2,
  fillColor = "blue",
  fillOpacity = 0.2  
)