Visuair is a webapp with the goal of augmenting the OpenAQ data over the continental USA using the common IDW interpolation technique. It’s a group project completed during the Fall 2019 semester for CSE 6242x in the Georgia Tech Masters of Science in Analytics with the help of my talented team mates Ben Kester, Dalton Fabian, Jacob Vander Ploeg, and Cameron Griser.
Our implementation touched a number of interesting technologies, including:
- D3.js for visualizations
- AWS S3 for storage and hosting
- AWS Athena for querying the OpenAQ data
- AWS Lambda for computing the interpolations.
The front end is a simple html web page that uses jquery and D3 to plot pre-computed interpolations using the daily mean values of each air quality sensor. The user can explore the data by selecting their desired air quality parameter and date of interpolation. In order to communicate increasing uncertainty in the interpolation, we chose to decrease the colour saturation with increasing distance from the nearest sensor.
The back end uses Athena to directly query the OpenAQ S3 Bucket and create the daily mean values for each sensor location. When executed initially, the interpolations need to be back computed for all existing parameters and measurement dates. To accomplish this a controller -> dispatcher -> interpolator lambda function architecture was created:
The project also runs this pipeline daily on only the most recent week of data. This allows it to continuously update, and to capture any changes in the data for up to a week after the recording was actually captured.
On an initial run the project needs to compute interpolations for more than 9500 parameter and date combinations, and the above architecture allows it to compute them all in less than five minutes with a cost of about $5 not including the lambda free tier credits. Daily updates and ongoing hosting is also very affordable, with current monthly costs remaining below $3.
More information about the project can be found in this narrated poster presentation, prepared as a final deliverable for the course.