1 2 3<!doctype html> 4<html> 5<head> 6 <link type="image/x-icon" href="/static/favicon.ico" rel="Shortcut Icon"> 7<meta name="referrer" content="strict-origin-when-cross-origin"> 8 9<meta http-equiv="Cache-Control" content="no-store, no-transform"> 10<meta charset="utf-8"/> 11<meta http-equiv="X-UA-Compatible" content="IE=edge"> 12<meta name="viewport" content="width=970, user-scalable=yes"> 13<link rel="stylesheet" href="/css/10.0.7.4-c92a18e7/jquery-ui.css"> 14<link rel="stylesheet" 15 href="https://cdnjs.cloudflare.com/ajax/libs/jquery.perfect-scrollbar/0.6.12/css/perfect-scrollbar.min.css"> 16<meta name="defaultLanguage" content="en"> 17<meta name="availableLanguages" content="en, pt, pl, it, fr, fr-fr, fr-FR, ru, es, de, cn, ja"> 18<link rel="localization" href="/static/local/{locale}.json"> 19
20<script> 21 GAid = "UA-3010397-9"; 22 GTMid = "GTM-5ZM8NQT"; 23 if (location.host === "www.weatherlink.com") { 24 GAid = "UA-3010397-2"; 25 GTMid = "GTM-NLLVC3L"; 26 } 27</script>
27 28 29<!-- Google Tag Manager -->
30<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 31 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 32 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 33 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 34})(window,document,'script','dataLayer', GTMid);</script>
34 35<!-- End Google Tag Manager â> 36 37<!-- Global site tag (gtag.js) - Google Analytics -->
38<script> 39 (function() { 40 var f = document.getElementsByTagName('script')[0], j = document.createElement('script'); 41 j.async = true; 42 j.src = "https://www.googletagmanager.com/gtag/js?id=" + GAid; 43 f.parentNode.insertBefore(j,f); 44 })(); 45</script>
45
46<script> 47 window.dataLayer = window.dataLayer || []; 48 function gtag(){dataLayer.push(arguments);} 49 gtag('js', new Date()); 50 gtag('config', GAid); 51</script>
51 52
53<script type="text/javascript" src="//script.crazyegg.com/pages/scripts/0114/8715.js" async="async" ></script>
53 54 55<link rel="stylesheet" href="/css/10.0.7.4-c92a18e7/map.css"> 56<link rel="stylesheet" href="/css/10.0.7.4-c92a18e7/payment.css"> 57<title>WeatherLink Air Quality & Temperature Map</title> 58 59 60<!-- potential fix for LI Sharing, Bug # 2751 --> 61<meta property="description" content="WeatherLink gives you real-time weather & air quality data from the largest 62network of sensors in the world." /> 63 64<!-- Facebook sharing --> 65<meta property="og:description" content="WeatherLink gives you real-time weather & air quality data from the largest 66network of sensors in the world." /> 67<meta property="og:image" content="https://www.weatherlink.com/static/images/socialMediaShare/facebook.png"/> 68<meta property="og:image:type" content="image/png"/> 69 70<!-- meta tags for twitter sharing --> 71<meta property="twitter:card" content="summary_large_image"/> 72<meta property="twitter:image" content="https://www.weatherlink.com/static/images/socialMediaShare/twitter.png"/> 73<meta property="twitter:title" content="WeatherLink gives you real-time weather & air quality data from the largest 74network of sensors in the world." /> 75</head> 76<body> 77 <!-- Google Tag Manager (noscript) -->
vendor: 73 bytes, lines 77-78
77 78 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
78GTM-NLLVC3L
vendor: 111 bytes, lines 78-80
78" 79 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 80
80<!-- End Google Tag Manager (noscript) --> 81<div class="navbar navbar-default navbar-fixed-top--disabled" role="navigation"> 82 83 <div class="nav-main container-fluid"> 84 <div class="navbar-left" id="demo-nav-left"> 85 <a href="/" class="navbar-brand"> 86 <img src="/static/weatherlink-logo.png"> 87 </a> 88 89 </div> 90 91 <div class="navbar-left"> 92 93 <ul id="bs-example-navbar-collapse-1" class="nav navbar-nav"> 94 95 <li><a href="/bulletin/9722cfc3-a4ef-47b9-befb-72f52592d6ed"><span class="" 96 data-l10n-id="bulletin"></span></a> 97 </li> 98 99 <li><a href="/stripchart/plot/9722cfc3-a4ef-47b9-befb-72f52592d6ed"><span class="" 100 data-l10n-id="chart"></span></a> 101 </li> 102 <li><a href="/browse/9722cfc3-a4ef-47b9-befb-72f52592d6ed"><span class="" 103 data-l10n-id="data"></span></a> 104 </li> 105 <li><a href="/map"><span class="" data-l10n-id="map"></span></a></li> 106 <li><a href="/mobilize"><span class="" data-l10n-id="mobilize"></span></a></li> 107 </ul> 108 </div> 109 110 111 <div class="navbar-right"> 112 <div class="pull-left navbar-search-box"> 113 <input type="search" class="form-control" data-l10n-id="search_input" autocomplete="new-address" name="address" id="address"> 114 </div> 115 <div class="pull-left signup-option"> 116 <a class="btn button navbar-signup" href="/usr/registration"> 117 Sign Up 118 </a> 119 <a class="navbar-login" href="/login">Log in</a> 120 </div> 121 122 </div> 123 </div> 124</div> 125<div id="page-contents"> 126 127<div id="main-body-container" class="container-fluid"> 128 <div id="left-panel" style="position: relative"> 129 <div class="nav-secondary"> 130 <div class="station-options"> 131 </div> 132 </div> 133 <div class="left-panel-options clearfix"> 134 <div class="pull-left"> 135 <div class="flex-items"> 136 <div class="control-bar overlay-option"> 137 <div class="option dropdown"> 138 <a href="javascript:void(0);" data-bs-toggle="dropdown" class="dropdown-toggle disabled"> 139 <span class="option-icon"> 140 <strong data-l10n-id="overlay"></strong> 141 </span> 142 <span class="overlay-value"></span> 143 <i class="wl-icon icon-carretdown"></i> 144 </a> 145 <div class="dropdown-menu overlay-select" role="menu"> 146 <div class="menu-item" data-val="temp" data-l10n-id="temperature"></div> 147 <div class="menu-item" data-val="aqs" data-l10n-id="air_quality"></div> 148 </div> 149 </div> 150 </div> 151 152 <div class="control-bar aqi-index-option"> 153 </div> 154 155 <div class="option dropdown map-option wood-smoke-option"> 156 <div class="wl-checkbox"> 157 <label> 158 <input type="checkbox"> 159 <span class="pseudo-checkbox"></span> 160 <span data-l10n-id="wood_smoke_adjustment"></span> 161 </label> 162 </div> 163 </div> 164 <div class="control-bar option share-option">
165 <span class="share-option-icon"><i class="wl-icon icon-shared"></i></span> 166 </div> 167 168 </div> 169 </div> 170 <div class="option dropdown pull-right devices-dropdown" style="height: 40px"> 171 <a class="dropdown-toggle" data-bs-toggle="dropdown" href="javascript:void(0);"> 172 <span class="option-icon"> 173 <i class="wl-icon icon-deviceicon"></i> 174 </span> 175 Davis Instruments 176 <i class="wl-icon icon-carretdown"></i> 177 </a> 178 <div class="dropdown-menu" role="menu"></div> 179 </div> 180 </div> 181 182 <div id="map-container" class="pull-center"> 183 </div> 184 <div class="map-legend-container"> 185 <div class="map-legend"> 186 <div class="map-legend-gradient"></div> 187 <div class="map-legend-value"></div> 188 </div> 189 <span class="map-arr left"> < </span> 190 <span class="map-arr right"> > </span> 191 </div> 192 <div class="aqs-scale-container" style="display: none"> 193 <div class="aqs-scale"> 194 <div class="aqs-scale-gradient"></div> 195 <div class="aqs-scale-value"></div> 196 </div> 197 </div> 198 <div class="shop-davis-products-img"> 199 <img class="product-img" src="../static/images/map/AirLinkShop.png"> 200 </div> 201 <div class="shop-davis-products"> 202 <a id="shop-davis-products-url" target="_blank" href="https://www.davisinstruments.com/collections/air-quality-1?utm_source=weatherlink-website&utm_medium=map-banner"> 203 <span class="product-label" data-l10n-id="shop_davis_products"></span> 204 </a> 205 </div> 206 <div> 207 <ul id="debug-output"></ul> 208 <div id="remove-on-ready"></div> 209 <div class="aqs-scale-popover"></div> 210 <div id="portal-container"></div> 211 </div> 212 <div id="page-header" class="pull-left" style="padding:15px 0px"> 213 <span class="js-timestamp-output" style="font-size:16px"></span> 214 </div> 215 216 </div> 217 <div id="right-panel"></div> 218</div> 219<div id="modal-config" class="modal fade" data-bs-backdrop="static" data-bs-keyboard="false"> 220 <div class="modal-dialog"> 221 <div class="modal-content"> 222 <div class="modal-header">header</div> 223 <div class="modal-body">body</div> 224 <div class="modal-footer">footer</div> 225 </div> 226 </div> 227</div> 228</div> 229
230<script type="text/javascript"> 231 var wl = wl || {}; 232 wl.data = wl.data || {}; 233 wl.__bootstrap_user_account_settings = {"userId":0,"lastViewedSystemId":0,"lastPublicViewedSystemId":0,"formatDecimalType":"Low","localTimezoneOffset":0,"ianaTimeZone":"GMT","airQualitySchemeId":1,"unitsWaterDepthTypeId":1,"localTimezoneOffsetSeconds":0,"unitsBarTypeId":1,"unitsWindTypeId":1,"formatDateMDY":true,"formatDecimalTypeId":1,"unitsWeightTypeId":1,"unitsSoilDepthTypeId":1,"unitsSoilMoistureTypeId":3,"unitsRainEtTypeId":1,"timespanTypeId":5,"formatTime12hrs":true,"formatDateTypeId":1,"formatTimeTypeId":1,"formatNumberTypeId":1,"unitsFlowTypeId":1,"unitsPressureTypeId":1,"unitsFlowRateTypeId":1,"unitsTempTypeId":1,"unitsElevTypeId":1,"lang":"en"}; 234 wl.data.identifier = "9722cfc3-a4ef-47b9-befb-72f52592d6ed"; 235 wl.data.systemId = 2; 236 wl.data.dLat = 37.637; 237 wl.data.dLng = -122.126; 238 wl.data.userAccountSetting = wl.__bootstrap_user_account_settings; 239 wl.tempUnits = wl.__bootstrap_user_account_settings.unitsTempTypeId; 240 wl.showAQSOverlay = true; 241 wl.mapOverlayToUse = "AIR_QUALITY"; 242 wl.availableSchemes = [{"aqiLabel":"NowCast AQI","aqiLabelShort":null,"inumberOfHighPrecisionFractionalDigits":1,"inumberOfLowPrecisionFractionalDigits":0,"iaqSchemeId":1,"isortOrder":1,"saqLongName":"United States EPA","slongDescriptiveText":"<p>The United States Environmental Protection Agency (EPA) has developed an Air Quality Index (AQI) that is used to report air quality. This AQI is divided into six categories indicating increasing levels of health concern: Good, Moderate, Unhealthy for Sensitive Groups (USG), Unhealthy, Very Unhealthy, and Hazardous.</p>\n<p>The EPA has established National Ambient Air Quality Standards (NAAQS) in order to protect public health. An AQI value of 100 generally corresponds to the level of the NAAQS for the pollutant. The Clean Air Act (USA) (1990) requires the EPA to review its National Ambient Air Quality Standards every five years to reflect evolving health effects information. The Air Quality Index is adjusted periodically to reflect these changes.</p><p>Real-time monitoring data are typically available as 1-hour averages. However, computation of the AQI for some pollutants requires averaging over multiple hours of data. (For example, calculation of the PM 2.5 AQI requires a 24-hour average.) To accurately reflect the current air quality, the multi-hour average used for the AQI computation should be centered on the current time, but as concentrations of future hours are unknown and are difficult to estimate accurately, the EPA uses surrogate concentrations to estimate these multi-hour averages. This surrogate concentration is called the NowCast. Nowcast is a particular type of exponentially weighted moving average that provides more weight to the most recent air quality data when air pollution levels are changing. The Air Quality Index itself is a piecewise linear function of the input pollutant concentration.</p>","saqShortName":"USA"},{"aqiLabel":"3 Hr AQI","aqiLabelShort":null,"inumberOfHighPrecisionFractionalDigits":2,"inumberOfLowPrecisionFractionalDigits":1,"iaqSchemeId":8,"isortOrder":2,"saqLongName":"Canada Health","slongDescriptiveText":"<p>Canada's Air Quality Health Index (AQHI) is a federal program jointly coordinated by Health Canada and Environment Canada. The AQHI provides a 10 point scale to indicate the level of health risk associated with local air quality. Occasionally, when the amount of air pollution is abnormally high, the number may exceed 10. The index describes the level of health risk associated with this number as Low, Moderate, High, or Very High.</p><p>Air quality in Canada has historically been reported by the US EPA AQI in various provinces, but the US AQI was designed around achieving lower pollutant emission rates rather than human health. The Canada AQHI was created to report on the specific health risks posed by air pollution. The AQHI is aimed towards two populations: 1. The âgeneralâ population and 2. The âat-riskâ populations. The latter consists of children, the elderly and people with existing respiratory or cardiovascular conditions, such as those with asthma, and people suffering from diabetes, heart disease or lung disease. The AQHI does not measure the effects of odor, pollen, dust, heat, or humidity.</p><p>The index is based on a 3 hour average PM 2.5 concentration. The formula
242is exponential and is designed so that the most frequently observed concentrations result in a value of 3 to 4 on the scale, and less than 10% of the highest observed concentrations result in a value of 7 or higher on a 10-point scale.</p>","saqShortName":"Canada"},{"aqiLabel":"1 Hr AQI","aqiLabelShort":null,"inumberOfHighPrecisionFractionalDigits":1,"inumberOfLowPrecisionFractionalDigits":0,"iaqSchemeId":2,"isortOrder":3,"saqLongName":"EU EEA Common","slongDescriptiveText":"<p>The European Union (EU)'s European Environment Agency (EEA) developed the Common Air Quality Index (CAQI). The CAQI is a number on a scale from 1 to 100, where a low value means good air quality and a high value means bad air quality. The index is subdivided into five CAQI ranges and verbal descriptions: Very Low, Low, Medium, High, and Very High.</p><p>The CAQI is based upon a large set of pollutant data that can be easily transformed into an index that is easy to communicate to the general public. The main aim of the CAQI was to have an index that would encourage wide comparison across the EU and to attract public attention to urban air pollution and help decrease exposure.</p><p>The index is based on a one hour average PM 2.5 concentration.</p>","saqShortName":"EU Common"},{"aqiLabel":"NowCast AQI","aqiLabelShort":null,"inumberOfHighPrecisionFractionalDigits":1,"inumberOfLowPrecisionFractionalDigits":0,"iaqSchemeId":10,"isortOrder":4,"saqLongName":"EU European","slongDescriptiveText":"<p>In November 2017, the European Union (EU)\\'s European Environment Agency (EEA) announced the European Air Quality Index (EAQI) and encouraged its widespread use. The EAQI does not employ an index scale, but simply assigns the pollutant concentration a \"rating\" with verbal descriptions: Good, Fair, Moderate, Poor, Very Poor, and Extremely Poor.</p><p>The PM 2.5 concentration is typically averaged over a 24 hour period, but Davis Instruments also provides the US EPA NowCast averaged concentration.</p>","saqShortName":"EU European"},{"aqiLabel":"NowCast AQI","aqiLabelShort":null,"inumberOfHighPrecisionFractionalDigits":2,"inumberOfLowPrecisionFractionalDigits":1,"iaqSchemeId":3,"isortOrder":5,"saqLongName":"UK COMEAP Daily","slongDescriptiveText":"<p>The most commonly used air quality index in the UK is the Daily Air Quality Index (AQI) recommended by the Committee on Medical Effects of Air Pollutants (COMEAP). This index has a ten point scale, which is further grouped into four bands: Low, Moderate, High, and Very High.</p><p>COMEAP designed an index based upon the requirements of the general public, in particular, those more at risk (those with lung or heart conditions, the elderly, and children) of adverse health effects from air pollution. The AQI was designed to be used to draw attention to the day-by-day, month-by-month variations in air pollutant concentrations and so contribute to education and awareness of air quality issues amongst the public and policy-makers.</p><p>The PM 2.5 concentration is typically averaged over a 24 hour period, but Davis Instruments also provides the AQI based on the US EPA NowCast averaged concentration. \"Triggers\" or breakpoints were derived to provide information to the public to warn of exposure as it is taking place at Moderate, High or Very High levels. The Air Quality Index itself is a piecewise linear function of the input pollutant concentration.</p>","saqShortName":"United Kingdom"},{"aqiLabel":"NowCast AQI","aqiLabelShort":null,"inumberOfHighPrecisionFractionalDigits":1,"inumberOfLowPrecisionFractionalDigits":0,"iaqSchemeId":7,"isortOrder":6,"saqLongName":"Australia NEPM","slongDescriptiveText":"<p>Across Australia, each of the states and territories, the National Environmental Protection Measure (NEPM) is used to determine the standards and objectives around the air pollution monitoring. The Air Quality Index (AQI) is broken into six categories.</p><p>The AQI is designed to set standards that consist of quantifiable characteristics of the air against which ambient air quality can be assessed. The desired environmental outcome of this Measure is ambient air quality that allows for the adequate protection of human health and well-being.</p><p>The PM 2.5 concentration is typically averaged over a 24 hour period, but Davis Instruments also provides the AQI based on the US EPA NowCast averaged concentration. A consistent approach is taken with air quality indices, using a simple linear scale where 100 represents the concentration standard for each pollutant. The daily concentration standard for PM 2.5 in Australia is 25 ug/m^3. As such, the index is calculated to be exactly four times the concentration.</p>","saqShortName":"Australia"},{"aqiLabel":"NowCast AQI","aqiLabelShort":null,"inumberOfHighPrecisionFractionalDigits":1,"inumberOfLowPrecisionFractionalDigits":0,"iaqSchemeId":4,"isortOrder":7,"saqLongName":"India CPCB National","slongDescriptiveText":"<p>The National Air Quality Index (AQI) was launched in India in 2014. The Central Pollution Control Board along with State Pollution Control Boards (SPCB) have been operating the National Air Monitoring Program (NAMP). There are six AQI categories: Good, Satisfactory, Moderately Polluted, Poor, Very Poor, and Severe.</p><p>An expert group comprising medical professionals, air quality experts, academia, advocacy groups, and SPCB's was constituted and a technical study was awarded to the Indian Institute of Technology (IIT) Kanpur. IIT Kanpur and the Expert Group recommended the AQI sc
242heme that is in use today.</p><p>Based on the measured ambient concentrations, corresponding standards and likely health impact, an index is calculated. The PM 2.5 concentration is typically averaged over a 24 hour period, but Davis Instruments also provides the AQI based on the US EPA NowCast averaged concentration. The Air Quality Index itself is a piecewise linear function of the input pollutant concentration.</p>","saqShortName":"India"},{"aqiLabel":"NowCast AQI","aqiLabelShort":null,"inumberOfHighPrecisionFractionalDigits":1,"inumberOfLowPrecisionFractionalDigits":0,"iaqSchemeId":5,"isortOrder":8,"saqLongName":"China MEP","slongDescriptiveText":"<p>China's Ministry of Ecology and Environment, formerly the Ministry of Environmental Protection (MEP) is responsible for measuring the level of air pollution in China. There are six Air Quality Index (AQI) categories: Excellent, Good, Lightly Polluted, Moderately Polluted, Heavily Polluted, and Severely Polluted.</p><p>The AQI \"score\" is non-linear. Thus an AQI of 300 does not mean twice the pollution of AQI at 150, nor does it mean the air is twice as harmful. While an AQI of 50 from day 1 to 182 and AQI of 100 from day 183 to 365 does provide an annual average of 75, it does not mean the pollution is acceptable even if the benchmark of 100 is deemed safe. Because the benchmark is a 24-hour target, and the annual average must match the annual target, it is entirely possible to have safe air every day of the year but still fail the annual pollution benchmark.</p><p>The AQI value can be calculated either per hour or per 24 hours. Davis Instruments also provides the AQI based on the US EPA NowCast averaged concentration. The IAQI of each pollutant is calculated according to a formula published by the MEP, which is a piecewise linear function of the input pollutant concentration.</p>","saqShortName":"China"},{"aqiLabel":"NowCast AQI","aqiLabelShort":null,"inumberOfHighPrecisionFractionalDigits":1,"inumberOfLowPrecisionFractionalDigits":0,"iaqSchemeId":9,"isortOrder":9,"saqLongName":"Mexico IMECA","slongDescriptiveText":"<p>The Ãndice Metropolitano de la Calidad del Aire or IMECA, in English meaning the Metropolitan Index of Air Quality, is the reference value system for the levels of air pollution in the Mexico City Metropolitan Area, within the Valley of Mexico. To report the quality of the air, the IMECA uses 5 index categories, which in English roughly translate to these category names: Good, Moderate, Poor, Very Poor, and Extremely Poor.</p><p>IMECA was established for the inhabitants of Mexico City and the Greater Mexico City area to know the real-time levels of air pollution in their urban environment. IMECA values establish limits to protect the health of the population.</p><p>The IMECA is published every hour for the population of the Metropolitan Zone of the Valley of Mexico, which covers the entire Federal District and the metropolitan area of the State of Mexico. Davis Instruments also provides the IMECA based on the US EPA NowCast averaged concentration. The index in IMECA is calculated based upon a different linear algorithms for each of the 5 index categories, each of which has a progressively shallower slope from the the Good to Very Poor category. The Poor category is set to the value of the Official Mexican Air Quality Standard concentration value for PM 2.5.</p>","saqShortName":"Mexico"},{"aqiLabel":"1 Hr AQI","aqiLabelShort":null,"inumberOfHighPrecisionFractionalDigits":1,"inumberOfLowPrecisionFractionalDigits":0,"iaqSchemeId":11,"isortOrder":10,"saqLongName":"Japan MOE","slongDescriptiveText":"<p>The Ministry of Environment (MOE) of the Government of Japan uses the an Air-quality Index (AQI) to describe the ambient air quality based on the health risks of air pollution. The MOE does not employ an index scale, but simply assigns the pollutant concentration to a risk level color band. The color bands are divided into six categories.</p><p>The MOE doesn't provide names for each risk level color band. Davis Instruments uses a slight modification of the AIRKOREA naming scheme to provide useful names. The standards employed in South Korea generally follow the same standards set in Japan. There is no public documentation that confirms the averaging period used in the air quality concentration measurements, but it is considered likely that these are based on on a one hour average PM 2.5 concentration given the air quality standard thresholds set by other industrialized countries.</p>","saqShortName":"Japan"},{"aqiLabel":"NowCast AQI","aqiLabelShort":null,"inumberOfHighPrecisionFractionalDigits":1,"inumberOfLowPrecisionFractionalDigits":0,"iaqSchemeId":6,"isortOrder":11,"s
242aqLongName":"AIRKOREA MOE Common","slongDescriptiveText":"<p>The Ministry of Environment (MOE) of South Korea uses the Comprehensive Air-quality Index (CAI) to describe the ambient air quality based on the health risks of air pollution. The index aims to help the public easily understand the air quality and protect people's health. The CAI which is divided into six categories. The higher the CAI value, the greater the level of air pollution.</p><p>The increasing public interest in air pollution and a clean and safe environment has led to raising the need for air quality information across the country. A website, named AIRKOREA, was launched in 2005 to provide air pollution information to the public.</p><p>Davis Instruments provides the AQI based on the US EPA NowCast averaged concentration. The CAI is on a scale from 0 to 500 and is a piecewise linear function of the input pollutant concentration for each main category. Any concentration value above the Good category exceeds the daily concentration standard.</p>","saqShortName":"South Korea"},{"aqiLabel":"1 Hr AQI","aqiLabelShort":null,"inumberOfHighPrecisionFractionalDigits":1,"inumberOfLowPrecisionFractionalDigits":0,"iaqSchemeId":12,"isortOrder":12,"saqLongName":"Singapore PSI","slongDescriptiveText":"<p>The National Environment Agency (NEA) is the leading public organisation responsible for ensuring a clean and sustainable environment for Singapore. It computes an Air Quality Index that it calls the Pollutants Standards Index (PSI), which is a number used to indicate the level of pollutants in air. The PSI is reported as a number on a scale of 0 to 500. The index figures enable the public to determine whether the air pollution levels in a particular location are good, unhealthy, hazardous or worse.</p>","saqShortName":"Singapore"},{"aqiLabel":"1 Hr AQI","aqiLabelShort":null,"inumberOfHighPrecisionFractionalDigits":1,"inumberOfLowPrecisionFractionalDigits":0,"iaqSchemeId":13,"isortOrder":13,"saqLongName":"Colombia MADS","slongDescriptiveText":"<p>The Air Quality Index (ICA) allows comparing the levels of air pollution of the monitoring stations that make up an Air Quality Surveillance System. The Air Quality Index has been adopted based on the technical recommendations contained in the Technical Assistance Document for the Reporting of Daily Air Quality. This ICA is divided into six categories indicating increasing levels of health concern: Good, Moderate, Unhealthy for Sensitive Groups, Unhealthy, Very Unhealthy, and Hazardous.</p>","saqShortName":"Colombia"}]; 243 wl.selectedScheme = {"aqiLabel":"NowCast AQI","aqiLabelShort":null,"inumberOfHighPrecisionFractionalDigits":1,"inumberOfLowPrecisionFractionalDigits":0,"iaqSchemeId":1,"isortOrder":1,"saqLongName":"United States EPA","slongDescriptiveText":"<p>The United States Environmental Protection Agency (EPA) has developed an Air Quality Index (AQI) that is used to report air quality. This AQI is divided into six categories indicating increasing levels of health concern: Good, Moderate, Unhealthy for Sensitive Groups (USG), Unhealthy, Very Unhealthy, and Hazardous.</p>\n<p>The EPA has established National Ambient Air Quality Standards (NAAQS) in order to protect public health. An AQI value of 100 generally corresponds to the level of the NAAQS for the pollutant. The Clean Air Act (USA) (1990) requires the EPA to review its National Ambient Air Quality Standards every five years to reflect evolving health effects information. The Air Quality Index is adjusted periodically to reflect these changes.</p><p>Real-time monitoring data are typically available as 1-hour averages. However, computation of the AQI for some pollutants requires averaging over multiple hours of data. (For example, calculation of the PM 2.5 AQI requires a 24-hour average.) To accurately reflect the current air quality, the multi-hour average used for the AQI computation should be centered on the current time, but as concentrations of future hours are unknown and are difficult to estimate accurately, the EPA uses surrogate concentrations to estimate these multi-hour averages. This surrogate concentration is called the NowCast. Nowcast is a particular type of exponentially weighted moving average that provides more weight to the most recent air quality data when air pollution levels are changing. The Air Quality Index itself is a piecewise linear function of the input pollutant concentration.</p>","saqShortName":"USA"}; 244 wl.applyWoodSmokeFilter = false;
245 wl.focusOnStation = false; 246 wl.googleMapId = "754bd07f2844e377"; 247 248 wl.currentStationUnmapped = false; 249 wl.showUnmappedStation = false; 250 251 wl.__bootstrap_system_info = { 252 userId: 60000, 253 gatewayTypeAbbrev: "MAIA" 254 }; 255 wl.__bootstrap_user_info = { 256 sUsername: "DavisGuest", 257 iUserId: 60017 258 }; 259</script>
259
260<script type="text/javascript" src="https://js.stripe.com/v3/"></script>
260
261<script src="/js/10.0.7.4-c92a18e7/vendor/l20n/polyfills/browser.js"></script>
261
262<script src="/js/10.0.7.4-c92a18e7/vendor/l20n/polyfills/Template.js"></script>
262
263<script src="/js/10.0.7.4-c92a18e7/vendor/l20n/l20n.js"></script>
263 264
265<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" 266 integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" 267 crossorigin="anonymous" referrerpolicy="no-referrer"></script>
267 268
269<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.7.0/lodash.min.js"></script>
269 270
271<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js" 272 integrity="sha512-57oZ/vW8ANMjR/KQ6Be9v/+/h6bq9/l3f0Oc7vn6qMqyhvPd1cvKBRWWpzu0QoneImqr2SkmO4MSqU+RpHom3Q==" 273 crossorigin="anonymous" referrerpolicy="no-referrer"></script>
273 274
275<script src="/js/10.0.7.4-c92a18e7/vendor/jquery/jquery.ui.touch-punch.js"></script>
275
276<script src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js" integrity="sha384-oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3" crossorigin="anonymous"></script>
276
277<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js" integrity="sha384-cuYeSxntonz0PPNlHhBs68uyIAVpIIOZZ5JqeqvYYIcEL727kskC66kF92t6Xl2V" crossorigin="anonymous"></script>
277
278<script src="https://cdnjs.cloudflare.com/ajax/libs/packery/2.1.1/packery.pkgd.min.js"></script>
278
279<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.maskedinput/1.4.1/jquery.maskedinput.min.js"></script>
279
280<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.5/jquery.validate.min.js"></script>
280
281<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.5/additional-methods.js"></script>
281
282<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.2.3/backbone-min.js"></script>
282
283<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.wreqr/1.3.3/backbone.wreqr.min.js"></script>
283
284<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.babysitter/0.1.8/backbone.babysitter.min.js"></script>
284
285<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.marionette/2.4.1/backbone.marionette.min.js"></script>
285
286<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/vendor/marionette/marionette-polyfills.js"></script>
286 287
288<script src="https://cdnjs.cloudflare.com/ajax/libs/highcharts/6.0.6/highcharts.js"></script>
288
289<script src="https://cdnjs.cloudflare.com/ajax/libs/highcharts/6.0.6/highcharts-more.js"></script>
289
290<script src="https://cdnjs.cloudflare.com/ajax/libs/highcharts/6.0.6/js/modules/solid-gauge.js"></script>
290
291<script src="https://cdnjs.cloudflare.com/ajax/libs/highcharts/6.0.6/js/modules/boost.js"></script>
291
292<script src="/js/10.0.7.4-c92a18e7/vendor/highcharts/highchartsDrawLegendSymbol.js"></script>
292 293
294<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js" 295 integrity="sha256-vvT7Ok9u6GbfnBPXnbM6FVDEO8E1kTdgHOFZOAXrktA=" 296 crossorigin="anonymous"></script>
296 297
298<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.34/moment-timezone-with-data.min.js" 299 integrity="sha256-vfoPHEia3DQCyR1jROWW/OKWQTIrEZXdRuiTIN68h4k=" crossorigin="anonymous"></script>
299 300
301<script src="https://cdnjs.cloudflare.com/ajax/libs/accounting.js/0.4.1/accounting.min.js"></script>
301
302<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.perfect-scrollbar/0.6.12/js/perfect-scrollbar.jquery.min.js"></script>
302
303<script src="/js/10.0.7.4-c92a18e7/vendor/davis/logging.js"></script>
303
304<script src="/js/10.0.7.4-c92a18e7/vendor/davis/navbar.js"></script>
304
305<script src="/js/10.0.7.4-c92a18e7/vendor/davis/ajax-handler.js"></script>
305
306<script type="text/javascript" 307 src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBkpKx8mNMFQ4p5N9GnFqH9IbGX7NYM73o&libraries=places,geometry"></script>
307
308<script src="/js/10.0.7.4-c92a18e7/vendor/davis/utils.js"></script>
308
309<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/map/constants.js"></script>
309
310<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/vendor/davis/templates-shared-compiled.js"></script>
310
311<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/vendor/davis/views/migrateDevice.js"></script>
311
312<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/vendor/davis/views/mergeAccounts.js"></script>
312
313<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/vendor/davis/views/comparePlans.js"></script>
313 314
315<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.0/dayjs.min.js" integrity="sha512-KTFpdbCb05CY4l242bLjyaPhoL9vAy4erP1Wkn7Rji0AG6jx6zzGtKkdHc7jUOYOVSmbMbTg728u260CA/Qugg==" 316 crossorigin="anonymous" referrerpolicy="no-referrer"></script>
vendor: 1 bytes, line 316
316
317<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.0/plugin/timezone.min.js" integrity="sha512-5B0kN+0UECcx7IszahbNmyocfPwR5MNpyggUEgq9nb6Sl5apxs8yl5Q2847Gsa3xXZtsFRVUj7TskUyT+TxXqw==" 318 crossorigin="anonymous" referrerpolicy="no-referrer"></script>
vendor: 1 bytes, line 318
318
319<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.0/plugin/utc.min.js" integrity="sha512-TU4ndEYOqql+pMXn14M8RDWsjjD+VPUA2RoWSuuFd+blPJW4oLrL1w1zAGdlrk4jsE2FEBH5CU3+fmogVYEqIQ==" 320 crossorigin="anonymous" referrerpolicy="no-referrer"></script>
vendor: 1 bytes, line 320
320
321<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.0/plugin/advancedFormat.min.js" integrity="sha512-MGC6Za7V8BU0nL3GVjgssHGIZkIMM6A+tcnxqwkdDASdOnyHwmCwyoVfxSYDxiznl4DDYeZP0Jn0p5MW+r4Rnw==" 322 crossorigin="anonymous" referrerpolicy="no-referrer"></script>
vendor: 1 bytes, line 322
322
323<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.0/plugin/localizedFormat.min.js" integrity="sha512-webaelc41/yR5a3vWQMwU1o6nqNPlwiiF9T4UfUJjGb/+jTHvpd7Xbj1d4IkHTxrjOnrl04W2D6ytruI9NNWhw==" 324 crossorigin="anonymous" referrerpolicy="no-referrer"></script>
vendor: 1 bytes, line 324
324
325<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.0/plugin/customParseFormat.min.js" integrity="sha512-nbPJ/ANJ1DCwUWGyfS+PY7RMysy5UnFyOzPTjzcphOuVbUqrukQAZ9kkNvTkPmItJRuuL5IqNufQTHPyxxpmig==" 326 crossorigin="anonymous" referrerpolicy="no-referrer"></script>
vendor: 1 bytes, line 326
326
327<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.1/plugin/duration.min.js" integrity="sha512-QxVJ3lAILV0RSq3wPNV5CFNyyywxd5QfA9jfGfzVViwpL/eWSi5dR1nZMc02c+QE4xz2L1eQvx/fn18RrUq9lw==" 328 crossorigin="anonymous" referrerpolicy="no-referrer"></script>
328 329
330<script type="text/javascript"> 331 dayjs.locale('en'); 332 dayjs.extend(dayjs_plugin_utc); 333 dayjs.extend(dayjs_plugin_timezone); 334 dayjs.extend(dayjs_plugin_advancedFormat); 335 dayjs.extend(dayjs_plugin_localizedFormat); 336 dayjs.extend(dayjs_plugin_customParseFormat); 337 dayjs.extend(dayjs_plugin_duration); 338</script>
338
339<script type="text/javascript"> 340 moment.locale('en'); 341 wl.__bootstrap_is_guest = true; 342</script>
342 343
343<script> 344 wl.__bootstrap_device_subscription_tier = 1; 345 $('.chartAnchor').on('click', function (event) { 346 event.stopPropagation(); 347 window.location.href = '/chart/plot/9722cfc3-a4ef-47b9-befb-72f52592d6ed'; 348 }); 349 $('.reportsAnchor').on('click', function (event) { 350 event.stopPropagation(); 351 window.location.href = '/report/noaa/month/9722cfc3-a4ef-47b9-befb-72f52592d6ed'; 352 }); 353 354 wl.__bootstrap_user_thumb_image = "https://s3.amazonaws.com/usercontent.wl2-live/profile/e1dfc8176d914635aba8b99617128801.th.png?ver=1790191473"; 355 wl.__bootstrap_user_first_name = "Guest"; 356 wl.__bootstrap_user_last_name = " "; 357 wl.__bootstrap_user_username = "DavisGuest"; 358 wl.__bootstrap_user_userId = 60017; 359 wl.__bootstrap_user_subscriptionCancelled = 0; 360 361 wl.__deviceSidebar = []; 362 wl.__featureFlags = {"EMBEDDABLE_PAGE":true,"COMPANY_DEVICE_MGR":true,"MONTHLY_SUMMARY":true,"AIRLINK":true,"CHARGE_SALES_TAX":true,"WL_DATA_IMPORT":true,"FARMBEATS":true,"VC_EM_IMPORT":true,"V2_API_KEY":true,"GENERATE_KEY":true,"MERGE_USER":true,"USER_MESSAGING":true,"STRIP_CHARTS":true,"MIGRATE_DEVICE":false,"COMPANY_USER_MGR":true,"EMBEDDABLE_SUMMARY":true,"CONTRAIL":true}; 363 wl.__showRightPanelForGuest = false; 364 365 wl.__stationLocation = {}; 366 wl.__bootstrap_user_maxHistoryInMonths = 0; 367 wl.__canAccessExtraSensors = 0; 368 wl.__bootstrap_user_subscriptionTermId = 1; 369 wl.__bootstrap_user_subscriptionTypeId = 2; 370 wl.__bootstrap_user_trialSubscription = 1; 371 wl.__bootstrap_user_subscriptionExpiration = "February 01, 2224"; 372 wl.__bootstrap_user_subscriptionNumUpgradesToRenew = "0"; 373 374 wl.__bootstrap_user_subscriptionType = "Pro" 375 wl.__boostrap_user_subscription_daysRemaining = -1; 376 377 wl.__canAccessWebChart = 1; 378 wl.__canAccessWebData = 1; 379 wl.__canAccessPublic = 0; 380 wl.__canAccessDeviceConfig =false; 381 wl.__isDavisDefaultStation = 1; 382 wl.__isPublicStation = true; 383 wl.__isEMVC = true; 384 wl.__isShared = false; 385 wl.__isAqs = false; 386 wl.__isAqsWoodSmokeEnabled = false; 387 wl.__javaScriptKey = "AIzaSyBkpKx8mNMFQ4p5N9GnFqH9IbGX7NYM73o"; 388 wl.__googleMapId = "754bd07f2844e377"; 389 wl.__firebaseConfig = {"apiKey":"AIzaSyCMze3A9yjUnUZyFcbJZgyFTFbTkteqU2U","authDomain":"enviromonitorprod.firebaseapp.com","databaseURL":"https://enviromonitorprod.firebaseio.com","projectId":"enviromonitorprod","storageBucket":"enviromonitorprod.appspot.com","messagingSenderId":"2977731221","appId":"1:2977731221:web:b60a555fb88a48baf2019c"}; 390 </script>
390 391
391<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script>
391 392
392<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/vendor/davis/utils.js"></script>
392 393
393<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/vendor/davis/templates-shared-compiled.js"></script>
393 394
394<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/map/templates-compiled.js"></script>
394 395
395<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/accountSubscription/templates-compiled.js"></script>
395 396
396<script src="/js/10.0.7.4-c92a18e7/vendor/markerClusterer/markerclusterer_davis.js"></script>
396 397
397<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/map/infobox.js"></script>
397 398
398<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/vendor/davis/views/right-panel-view.js"></script>
398 399
399<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/vendor/davis/views/account-list-view.js"></script>
399 400
400<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/vendor/davis/views/user-info-view.js"></script>
400 401
401<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/map/app.js"></script>
401 402
402<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/vendor/davis/modules/shareCalls.js"></script>
402 403
403<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/vendor/davis/modules/myDevicesList.js"></script>
403 404
404<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/vendor/davis/modules/shareOptions.js"></script>
404 405
405<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/map/search-dropdown.js"></script>
405 406
406<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/map/aqiSchemeSelector.js"></script>
406 407
407<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/map/map.js"></script>
407 408
408<script src="/js/10.0.7.4-c92a18e7/vendor/davis/modules/modal.js"></script>
408 409
409<script src="/js/10.0.7.4-c92a18e7/vendor/davis/validation/formValidator.js"></script>
409 410
410<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/vendor/jquery/jquery.combobox.js"></script>
410 411
411<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/device/deviceValidators.js"></script>
411 412
412<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/accountSubscription/addressValidation.js"></script>
412 413
413<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/accountSubscription/makePayment.js"></script>
413 414
414<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/device/modules/addDevice.js"></script>
414 415
415<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/device/modules/addVcFlow.js"></script>
415 416
416<script type="text/javascript" src="/js/10.0.7.4-c92a18e7/vendor/davis/modules/whatsNewCarousel.js"></script>
416 417
417<script> 418 // The user has provided an address in the URL. use that, if possible. 419 wl.mapConstants.oMapOptionsDefault.center = new google.maps.LatLng(37.63662 , -122.12629); 420 wl.mapConstants.oMapOptionsDefault.zoom = 8; 421 var lastViewedPageUrl = "/map"; 422 </script>
422 423<div class="search-dropdown"> 424</div> 425
425<script src="https://www.gstatic.com/firebasejs/8.2.1/firebase-app.js"></script>
425 426
426<script src="https://www.gstatic.com/firebasejs/8.2.1/firebase-database.js"></script>
426 427
427<script> 428 var myUnreadCount = 0; 429 var globalTotal = 0; 430 var userTotal = 0; 431 var userRead = 0; 432 // Initialize Firebase 433 if (wl.__firebaseConfig != null) { 434 firebase.initializeApp(wl.__firebaseConfig); 435 firebase.database().ref("urgentMsg").on('value', function (snapshot) { 436 Navbar && Navbar.setUrgentMessage(snapshot.val()); 437 }, function (error) { 438 console.error(error); 439 }); 440 441 if(!wl.__bootstrap_is_guest){ 442 443 firebase.database().ref("userMessages").on('value', function (snapshot) { 444 Navbar && Navbar.setUrgentMessage(snapshot.val()); 445 }, function (error) { 446 console.error(error); 447 }); 448 449 450 firebase.database().ref("userMessages/globalTotal").on('value', function (snapshot) { 451 var globalTotalValue = snapshot.val(); 452 globalTotal = globalTotalValue; 453 console.log("global total count is " + globalTotal); 454 wl.app.vent.trigger("userUnreadCount", countUserUnread()); 455 }, function (error) { 456 console.error(error); 457 }); 458 459 //user total 460 firebase.database().ref("userMessages/userTotal").on('value', function (snapshot) { 461 //reset this user's total message count as the count might be 0 in which case 462 // we won't find user's key in the userTotalValueMap 463 userTotal = 0; 464 var userTotalValuesMap = snapshot.val(); 465 if (userTotalValuesMap && userTotalValuesMap[wl.__bootstrap_user_userId]) { 466 userTotal = userTotalValuesMap[wl.__bootstrap_user_userId]; 467 } 468 console.log("user total count is " + userTotal); 469 wl.app.vent.trigger("userUnreadCount", countUserUnread()); 470 }, function (error) { 471 console.error(error); 472 }); 473 474 //user Read 475 firebase.database().ref("userMessages/userRead").on('value', function (snapshot) { 476 //reset this user's read message count as the count might be 0 in which case 477 // we won't find user's key in the userReadValueMap 478 userRead = 0; 479 var userReadValuesMap = snapshot.val(); 480 if (userReadValuesMap && userReadValuesMap[wl.__bootstrap_user_userId]) { 481 userRead = userReadValuesMap[wl.__bootstrap_user_userId]; 482 } 483 console.log("user read count is " + userRead); 484 wl.app.vent.trigger("userUnreadCount", countUserUnread()); 485 }, function (error) { 486 console.error(error); 487 }); 488 489 }//!isGuest() 490 491 function countUserUnread() { 492 return globalTotal + userTotal - userRead; 493 } 494 } 495 </script>
495 496</body> 497<!-- centralized hook for REST Unauthorized access to protected resources -->
498<script> 499 //remove existing error handlers if any and control the error case for all pages that use this 500 // as base ftl 501 $(document).off('ajaxError'); 502 $(document).ajaxComplete(function(event,xhr,settings){ 503 if(xhr.status == 401){ 504 //some views may override the redirect i.e. mobile payment flow 505 window.location.href = "/"; 506 } 507 }); 508</script>
508 509</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.