Skip to content

Commit

Permalink
deploy: 8f3719c
Browse files Browse the repository at this point in the history
  • Loading branch information
vmcnally committed Aug 19, 2024
1 parent 8a73925 commit 9e7a546
Show file tree
Hide file tree
Showing 24 changed files with 52 additions and 38 deletions.
1 change: 1 addition & 0 deletions _observablehq/minisearch.4a23b5f5.json

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion _observablehq/minisearch.8ad814e6.json

This file was deleted.

2 changes: 1 addition & 1 deletion _observablehq/search.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@
import {define} from "./_observablehq/client.js";
import {registerFile} from "./_observablehq/stdlib.js";

registerFile("./data/breakpoints.csv", {"name":"./data/breakpoints.csv","mimeType":"text/csv","path":"./_file/data/breakpoints.4c7e0998.csv","lastModified":1724106568810});
registerFile("./data/countries.json", {"name":"./data/countries.json","mimeType":"application/json","path":"./_file/data/countries.bc8a3fb7.json","lastModified":1724106554602});
registerFile("./data/breakpoints.csv", {"name":"./data/breakpoints.csv","mimeType":"text/csv","path":"./_file/data/breakpoints.4c7e0998.csv","lastModified":1724108597807});
registerFile("./data/countries.json", {"name":"./data/countries.json","mimeType":"application/json","path":"./_file/data/countries.bc8a3fb7.json","lastModified":1724108581855});

define({id: "ace88a2b", inputs: ["FileAttachment"], outputs: ["breakpoints","countriesMap"], body: async (FileAttachment) => {
const breakpoints = await FileAttachment("./data/breakpoints.csv").csv({typed: true});
Expand Down
13 changes: 9 additions & 4 deletions indices/canada.html
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ <h2 id="color-scale" tabindex="-1"><a class="observablehq-header-anchor" href="#
<p>The AQHI uses a color scale consisting of 11 colors for 4 risk categories:</p>
<div class="observablehq observablehq--block"><!--:3528a5fb:--></div>
<div class="observablehq observablehq--block"><observablehq-loading></observablehq-loading><!--:1dbdcd13:--></div>
<p>Note: Adapted from “About the Air Quality Health Index” (April 2021), <a href="https://www.canada.ca/en/environment-climate-change/services/air-quality-health-index/about.html" target="_blank" rel="noopener noreferrer">https://www.canada.ca/en/environment-climate-change/services/air-quality-health-index/about.html</a> <sup class="footnote-ref"><a href="#fn1" id="fnref1:1">[1:1]</a></sup>. Accessed August 13, 2024.</p>
<p><em>Note</em>: Adapted from “About the Air Quality Health Index” (April 2021), <a href="https://www.canada.ca/en/environment-climate-change/services/air-quality-health-index/about.html" target="_blank" rel="noopener noreferrer">https://www.canada.ca/en/environment-climate-change/services/air-quality-health-index/about.html</a> <sup class="footnote-ref"><a href="#fn1" id="fnref1:1">[1:1]</a></sup>. Accessed 13 August 2024.</p>
<h2 id="methods" tabindex="-1"><a class="observablehq-header-anchor" href="#methods">Methods</a></h2>
<p>Canada’s AQHI uses 3-hour averaging periods of PM2.5, O3, and NO2. A 3-hour averaging period was chosen as it provides more stability than a 1-hour averaging period <sup class="footnote-ref"><a href="#fn1" id="fnref1:2">[1:2]</a></sup>. It is not specified if this 3-hour average is rolling. Data from at least 2 hours out of the 3-hour period is required for the AQHI calculation; if this requirement is not met, the 3-hour average is set to ‘missing’ <sup class="footnote-ref"><a href="#fn1" id="fnref1:3">[1:3]</a></sup>. If more than 6 rolling 3-hour averages are missing, the daily 3-hour maximum is set to missing <sup class="footnote-ref"><a href="#fn1" id="fnref1:4">[1:4]</a></sup>. This procedure is described in a report outlining a recommendation for an improved AQHI <sup class="footnote-ref"><a href="#fn1" id="fnref1:5">[1:5]</a></sup> and is confirmed by the Alberta government website to be the same procedure for calculating the national AQHI <sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>.
The 3-hour averaging periods are plugged into the AQHI formula, a simple linear combination <sup class="footnote-ref"><a href="#fn1" id="fnref1:6">[1:6]</a></sup>:</p>
Expand All @@ -137,9 +137,14 @@ <h2 id="methods" tabindex="-1"><a class="observablehq-header-anchor" href="#meth
<p>The AQHI accounts for the cumulative effect of pollutant mixing, instead of basing the air quality on the greatest pollutant concentration. The AQHI is assumed to be an hourly value, as the observed AQHI in the British Columbia interactive map reports the ‘last hour’ value <sup class="footnote-ref"><a href="#fn4" id="fnref4">[4]</a></sup>.</p>
<p>Canada additionally has an Info-Smog program that provides air quality forecasting. Numerical models established by the Environment and Climate Change Canada are used to predict PM2.5 and O3 concentrations for the next several hours <sup class="footnote-ref"><a href="#fn5" id="fnref5">[5]</a></sup>. A calculation method based on the AQHI formula is used to forecast the AQHI, however it only accounts for predicted concentrations of PM2.5 and O3. The air quality forecast is reported in three categories: good, fair, and poor. Two forecasts are issued daily: at 5 a.m. EST the forecast for today, tonight, and tomorrow is issued, and at 4 p.m. EST, the forecast for tonight and tomorrow is issued <sup class="footnote-ref"><a href="#fn5" id="fnref5:1">[5:1]</a></sup>. Note that another government website states that the first AQHI forecast is issued at 6 a.m. and second at 5 p.m. local time <sup class="footnote-ref"><a href="#fn6" id="fnref6">[6]</a></sup>, however it is unclear which time is correct. Forecast amendments can be issued at any time if necessary to provide the most relevant information.</p>
<h2 id="references" tabindex="-1"><a class="observablehq-header-anchor" href="#references">References</a></h2>
<p>Other references:
<a href="https://weather.gc.ca/airquality/pages/index_e.html" target="_blank" rel="noopener noreferrer">https://weather.gc.ca/airquality/pages/index_e.html</a></p>
<p><a href="https://www.canada.ca/en/environment-climate-change/services/air-quality-health-index/about.html" target="_blank" rel="noopener noreferrer">https://www.canada.ca/en/environment-climate-change/services/air-quality-health-index/about.html</a></p>
<p>"About the Air Quality Health Index." Government of Canada, 28 Apr. 2021, <a href="https://www.canada.ca/en/environment-climate-change/services/air-quality-health-index/about.html" target="_blank" rel="noopener noreferrer">www.canada.ca/en/environment-climate-change/services/air-quality-health-index/about.html</a>.</p>
<p>"Air Quality Health Index – Calculation." Government of Alberta, <a href="https://www.alberta.ca/air-quality-health-index-calculation" target="_blank" rel="noopener noreferrer">www.alberta.ca/air-quality-health-index-calculation</a>.</p>
<p>Chen, H., Copes, R. "Review of Air Quality Index and Air Quality Health Index." Public Health Ontario, 30 Jan. 2013, <a href="https://www.publichealthontario.ca/-/media/documents/A/2013/air-quality-health-index.pdf" target="_blank" rel="noopener noreferrer">www.publichealthontario.ca/-/media/documents/A/2013/air-quality-health-index.pdf</a>.</p>
<p>"Guide to Air Quality Health Index forecasts." Government of Canada, 28 April 2021, <a href="https://www.canada.ca/en/environment-climate-change/services/weather-health/publications/guide-air-quality-index-forecasts.html" target="_blank" rel="noopener noreferrer">www.canada.ca/en/environment-climate-change/services/weather-health/publications/guide-air-quality-index-forecasts.html</a>.</p>
<p>"How Info-Smog works." Government of Canada, 15 March 2024, <a href="https://www.canada.ca/en/environment-climate-change/services/info-smog/how-it-works.html" target="_blank" rel="noopener noreferrer">www.canada.ca/en/environment-climate-change/services/info-smog/how-it-works.html</a>.</p>
<p>"Latest air quality data map - Air Quality Health Index." Government of British Columbia, <a href="https://www.env.gov.bc.ca/epd/bcairquality/readings/find-stations-map.html" target="_blank" rel="noopener noreferrer">www.env.gov.bc.ca/epd/bcairquality/readings/find-stations-map.html</a>.</p>
<p>"Local Air Quality Health Index." Government of Canada, 19 Aug. 2024, <a href="https://weather.gc.ca/airquality/pages/index_e.html" target="_blank" rel="noopener noreferrer">weather.gc.ca/airquality/pages/index_e.html</a>.</p>
<p>Stieb, David M. et al. "A New Multipollutant, No-Threshold Air Quality Health IndexBased on Short-Term Associations Observed in Daily Time-Series Analyses." Journal of the Air &amp; Waste Management Association, Mar. 2008, <a href="https://www.tandfonline.com/doi/epdf/10.3155/1047-3289.58.3.435?needAccess=true" target="_blank" rel="noopener noreferrer">www.tandfonline.com/doi/epdf/10.3155/1047-3289.58.3.435?needAccess=true</a>.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
Expand Down
2 changes: 1 addition & 1 deletion indices/china.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import {define} from "../_observablehq/client.js";
import {registerFile} from "../_observablehq/stdlib.js";

registerFile("../data/china/breakpoints.csv", {"name":"../data/china/breakpoints.csv","mimeType":"text/csv","path":"../_file/data/china/breakpoints.8786d209.csv","lastModified":1724106554602});
registerFile("../data/china/breakpoints.csv", {"name":"../data/china/breakpoints.csv","mimeType":"text/csv","path":"../_file/data/china/breakpoints.8786d209.csv","lastModified":1724108581855});

define({id: "244d237b", outputs: ["breakpointsTable","parseBreakpointsCsv","tableReshape","colorScaleReshape","colorScale"], body: async () => {
const [{breakpointsTable}, {parseBreakpointsCsv, tableReshape, colorScaleReshape}, {colorScale}] = await Promise.all([import("../_import/components/table.49226d0f.js"), import("../_import/utils/utils.27dc2659.js"), import("../_import/components/color-scale.012d9cb9.js")]);
Expand Down
2 changes: 1 addition & 1 deletion indices/finland.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import {define} from "../_observablehq/client.js";
import {registerFile} from "../_observablehq/stdlib.js";

registerFile("../data/finland/breakpoints.csv", {"name":"../data/finland/breakpoints.csv","mimeType":"text/csv","path":"../_file/data/finland/breakpoints.79410ea7.csv","lastModified":1724106554602});
registerFile("../data/finland/breakpoints.csv", {"name":"../data/finland/breakpoints.csv","mimeType":"text/csv","path":"../_file/data/finland/breakpoints.79410ea7.csv","lastModified":1724108581855});

define({id: "b2d40abb", inputs: ["FileAttachment"], outputs: ["breakpointsTable","parseBreakpointsCsv","tableReshape","colorScaleReshape","colorScale","breakpoints","data"], body: async (FileAttachment) => {
const [{breakpointsTable}, {parseBreakpointsCsv, tableReshape, colorScaleReshape}, {colorScale}] = await Promise.all([import("../_import/components/table.49226d0f.js"), import("../_import/utils/utils.27dc2659.js"), import("../_import/components/color-scale.012d9cb9.js")]);
Expand Down
10 changes: 5 additions & 5 deletions indices/hong-kong.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@
import {define} from "../_observablehq/client.js";
import {registerFile} from "../_observablehq/stdlib.js";

registerFile("../imgs/hk_icon_high.svg", {"name":"../imgs/hk_icon_high.svg","mimeType":"image/svg+xml","path":"../_file/imgs/hk_icon_high.8c7fab17.svg","lastModified":1724106554602});
registerFile("../imgs/hk_icon_low.svg", {"name":"../imgs/hk_icon_low.svg","mimeType":"image/svg+xml","path":"../_file/imgs/hk_icon_low.9d09bf10.svg","lastModified":1724106554602});
registerFile("../imgs/hk_icon_moderate.svg", {"name":"../imgs/hk_icon_moderate.svg","mimeType":"image/svg+xml","path":"../_file/imgs/hk_icon_moderate.ffd7f107.svg","lastModified":1724106554602});
registerFile("../imgs/hk_icon_serious.svg", {"name":"../imgs/hk_icon_serious.svg","mimeType":"image/svg+xml","path":"../_file/imgs/hk_icon_serious.18ac9534.svg","lastModified":1724106554602});
registerFile("../imgs/hk_icon_very_high.svg", {"name":"../imgs/hk_icon_very_high.svg","mimeType":"image/svg+xml","path":"../_file/imgs/hk_icon_very_high.76d59c39.svg","lastModified":1724106554602});
registerFile("../imgs/hk_icon_high.svg", {"name":"../imgs/hk_icon_high.svg","mimeType":"image/svg+xml","path":"../_file/imgs/hk_icon_high.8c7fab17.svg","lastModified":1724108581855});
registerFile("../imgs/hk_icon_low.svg", {"name":"../imgs/hk_icon_low.svg","mimeType":"image/svg+xml","path":"../_file/imgs/hk_icon_low.9d09bf10.svg","lastModified":1724108581855});
registerFile("../imgs/hk_icon_moderate.svg", {"name":"../imgs/hk_icon_moderate.svg","mimeType":"image/svg+xml","path":"../_file/imgs/hk_icon_moderate.ffd7f107.svg","lastModified":1724108581855});
registerFile("../imgs/hk_icon_serious.svg", {"name":"../imgs/hk_icon_serious.svg","mimeType":"image/svg+xml","path":"../_file/imgs/hk_icon_serious.18ac9534.svg","lastModified":1724108581859});
registerFile("../imgs/hk_icon_very_high.svg", {"name":"../imgs/hk_icon_very_high.svg","mimeType":"image/svg+xml","path":"../_file/imgs/hk_icon_very_high.76d59c39.svg","lastModified":1724108581859});

define({id: "3528a5fb", outputs: ["colorScale"], body: async () => {
const {colorScale} = await import("../_import/components/color-scale.012d9cb9.js");
Expand Down
2 changes: 1 addition & 1 deletion indices/india.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import {define} from "../_observablehq/client.js";
import {registerFile} from "../_observablehq/stdlib.js";

registerFile("../data/india/breakpoints.csv", {"name":"../data/india/breakpoints.csv","mimeType":"text/csv","path":"../_file/data/india/breakpoints.23fd3361.csv","lastModified":1724106554602});
registerFile("../data/india/breakpoints.csv", {"name":"../data/india/breakpoints.csv","mimeType":"text/csv","path":"../_file/data/india/breakpoints.23fd3361.csv","lastModified":1724108581855});

define({id: "244d237b", outputs: ["breakpointsTable","parseBreakpointsCsv","tableReshape","colorScaleReshape","colorScale"], body: async () => {
const [{breakpointsTable}, {parseBreakpointsCsv, tableReshape, colorScaleReshape}, {colorScale}] = await Promise.all([import("../_import/components/table.49226d0f.js"), import("../_import/utils/utils.27dc2659.js"), import("../_import/components/color-scale.012d9cb9.js")]);
Expand Down
2 changes: 1 addition & 1 deletion indices/indonesia.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import {define} from "../_observablehq/client.js";
import {registerFile} from "../_observablehq/stdlib.js";

registerFile("../data/indonesia/breakpoints.csv", {"name":"../data/indonesia/breakpoints.csv","mimeType":"text/csv","path":"../_file/data/indonesia/breakpoints.ad94f79f.csv","lastModified":1724106554602});
registerFile("../data/indonesia/breakpoints.csv", {"name":"../data/indonesia/breakpoints.csv","mimeType":"text/csv","path":"../_file/data/indonesia/breakpoints.ad94f79f.csv","lastModified":1724108581855});

define({id: "063a0535", outputs: ["breakpointsTable","parseBreakpointsCsv","tableReshape","colorScaleReshape"], body: async () => {
const [{breakpointsTable}, {parseBreakpointsCsv, tableReshape, colorScaleReshape}] = await Promise.all([import("../_import/components/table.49226d0f.js"), import("../_import/utils/utils.27dc2659.js")]);
Expand Down
2 changes: 1 addition & 1 deletion indices/kuwait.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import {define} from "../_observablehq/client.js";
import {registerFile} from "../_observablehq/stdlib.js";

registerFile("../data/kuwait/breakpoints.csv", {"name":"../data/kuwait/breakpoints.csv","mimeType":"text/csv","path":"../_file/data/kuwait/breakpoints.61b29dd8.csv","lastModified":1724106554602});
registerFile("../data/kuwait/breakpoints.csv", {"name":"../data/kuwait/breakpoints.csv","mimeType":"text/csv","path":"../_file/data/kuwait/breakpoints.61b29dd8.csv","lastModified":1724108581855});

define({id: "332657d7", inputs: ["FileAttachment"], outputs: ["breakpointsTable","parseBreakpointsCsv","tableReshape","colorScaleReshape","colorScale","breakpoints","data"], body: async (FileAttachment) => {
const [{breakpointsTable}, {parseBreakpointsCsv, tableReshape, colorScaleReshape}, {colorScale}] = await Promise.all([import("../_import/components/table.49226d0f.js"), import("../_import/utils/utils.27dc2659.js"), import("../_import/components/color-scale.012d9cb9.js")]);
Expand Down
2 changes: 1 addition & 1 deletion indices/macao.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import {define} from "../_observablehq/client.js";
import {registerFile} from "../_observablehq/stdlib.js";

registerFile("../data/macao/breakpoints.csv", {"name":"../data/macao/breakpoints.csv","mimeType":"text/csv","path":"../_file/data/macao/breakpoints.4ef7bc91.csv","lastModified":1724106554602});
registerFile("../data/macao/breakpoints.csv", {"name":"../data/macao/breakpoints.csv","mimeType":"text/csv","path":"../_file/data/macao/breakpoints.4ef7bc91.csv","lastModified":1724108581855});

define({id: "063a0535", outputs: ["breakpointsTable","parseBreakpointsCsv","tableReshape","colorScaleReshape"], body: async () => {
const [{breakpointsTable}, {parseBreakpointsCsv, tableReshape, colorScaleReshape}] = await Promise.all([import("../_import/components/table.49226d0f.js"), import("../_import/utils/utils.27dc2659.js")]);
Expand Down
Loading

0 comments on commit 9e7a546

Please sign in to comment.