Guide to publishing Air Quality data on the World Air Quality Index project

Share: aqicn.org/publishingdata/vn/

Publishing data on the World Air Quality Index project is free for every one. But it is also simple and straightforward: All you need to add data on the World Air Quality Index map is to provide a feed URL with the real-time information about the monitoring stations (name and location), the pollutants being measured and the real-time readings (together with the units, for instance milligrams or ppb).


Qualification Criteria

Note that the data published on the World Air Quality Index map is only official data provided by each country respective Environmental Protection Agency (see the full EPA list). Those official data are monitored using professional BAM and TEOM-like Air Quality monitoring stations.

Those stations are not trivial, and do require constant maintenance and calibration by the EPA professional field-engineering teams. Therefore, except from specific conditions (e.g. if there no coverage in a country or a given region / city), the World Air Quality Index project does not accept any form of data generated from non-professional Air Quality monitors.

If your country or city does not have official monitoring, it is acceptable to report data from more affordable instant air particle counters (eg PMS, SDS,..). While we do recommend to use the semi-professional GAIA air quality monitoring stations for this purpose, we, however, accept data from other stations. Nevertheless, such particle counter-based stations need to report enhanced data feed with additional quality controls (see quality control section).

Feed format

Since almost every country has its own reporting format, the World Air Quality Index project can accept any kinds of formats for the feeds: They can be in CSV, JSON or just plain text or HTML format. You can find at the bottom of this page 3 example for CSV, HTML and JSON.

For reference, check the official feeds for Singapore, Peru or Netherlands and notice that despite they are all different, they can be ingested by our system.

For the instant air particle counters, you can either report the data via our own web server, or via the thingspeak.

Data ingestion

The World Air Quality Index system will take care of regularly checking the data from the feed, and each time an update is available, it will be processed, converted to the US EPA scale AQI values, and publish on the World Air Quality Index website within minutes.

Also, although only PM2.5, PM10, Ozone, NO2, SO2 and CO Air Quality data is published, the system does collect more pollutants for forecasting purpose: Benzen, Toluene, Ethylbenzene, NOx, THC, NMHC, PM1, Formaldehyde, Mercury, Ammonia, Methane, Hydrogen sulfide, Nitrous acid, Phenol, Naphthalene, paraxylene (p-Xylen), metaxylene (m-Xylen), etc..

It is also possible to publish meteorological data: Temperature, Atmospheric Pressure, Humidity, Precipitation, Wind Speed, Wind Direction, Solar Radiation and UVI. If not provided, we will use other relevant meteorologic information sources.

Feed Example (CSV format)

 #ID: ID_BEI_DC
#City: Beijing
#Station: Dongcheng
#Name: 东城东四
#Latitude: 39.929
#Longitude: 116.417
#Timezone: +0800
Date,PM10,PM25,CO,Ozone,Sulphur Dioxide,Nitrogen Dioxide,AmbientTemperature,RelativeHumidity,WindDirection,WindSpeed,Pressure,RainGauge
Unit,ug/m3,ug/m3,ppm,µg/m3,µg/m3,µg/m3,°C,%,°,m/s,hPa,mm
10/29/2016 13:00,16,3,,58,10,3,32,66,200,3,1001,0
10/29/2016 14:00,19,8,,57,9,4,32,64,197,2,1001,0
10/29/2016 15:00,15,9,,52,47,17,30,72,190,2,1001,0
10/29/2016 16:00,31,19,,52,34,17,30,75,191,2,1001,0
10/29/2016 17:00,31,17,,49,49,19,29,75,194,1,1002,0
10/29/2016 18:00,37,18,,45,55,25,29,73,183,1,1003,0
10/29/2016 19:00,24,13,,40,21,19,29,80,65,1,1004,0
10/29/2016 20:00,39,22,,44,4,16,28,85,7,1,1005,0
10/29/2016 21:00,24,16,,43,3,7,28,85,10,1,1005,0

Feed Example (HTML format)

This is an example based on an HTML format (direct url: publishingdata/html/):
Station list:
Station IDCity or County NameStation NameLocal name (optional)Latitude/LongitudeTimezone (optional)
ID_BEI_DCBeijingDongcheng东城东四39.929/116.417+0800
ID_BEI_WPBeijingWest Park西城官园39.929/116.339+0800
ID_BEI_OPBeijingOlympic Park朝阳奥体中心39.982/116.397+0800
..................
  • The "Station ID" is the unique identifer for each station, and it can just be a number (eg ID8373), or the concatenation of station city and station name (eg. "Beijing/Dongcheng").
  • By default, the station will be available via the url /city/country-name/city-name/station-name.
  • The "Station Name" must use latin characters, so the optional "Local Name" can be provided to localize the webpage.

Real-time pollutant list:
Station IDPollutantUnitUpdate timeValueAveraging
ID_BEI_DCPM10mg/m32019-12-07T09:00:00+09:0027.81 hour
ID_BEI_DCPM25mg/m32019-12-07T09:00:00+09:0010.81 hour
ID_BEI_DCOzonemg/m32019-12-07T09:00:00+09:0015.21 hour
ID_BEI_DCOzonemg/m32019-12-07T09:00:00+09:0018.28 hours
ID_BEI_DCTemperatureCelcius2019-12-07T09:00:00+09:0022.31 hour
ID_BEI_WPPM10mg/m32019-12-07T09:00:00+09:0027.81 hour
ID_BEI_WPPM25mg/m32019-12-07T09:00:00+09:0010.81 hour
ID_BEI_WPSO2ppb2019-12-07T09:00:00+09:0015.21 hour
ID_BEI_WPHumidiy%2019-12-07T09:00:00+09:00881 hour
...............
  • The "Averaging" column is use to specify the duration of the value. The most common averaging is 1 hour. It is also the prefered one, as our backend system will automatically do the 8 hour averagin computation for the Ozone and Carbon Monoxyde.
  • In the case the readings are provided more freqently than every hour (for instance every 30 minutes or 10 minutes), you can either provide the raw readings for the given period, or just the hourly averaging: Our back-end system will anyway process data even between the hour.

Feed Example (JSON format)

This is an example based on JSON format (direct url: /publishingdata/json/)
..

Quality Control for particule counter sensors

For instant particule counters, such as the Plantower PMS or Nova SDS, which provide instantaneous (in few seconds) particulate matter readings, the data is usually reported every minute. This data is usually computed based on several "averaged" readings from a one or two minute period.

The use of averaging is however not good enough, especially for failing sensors (or sensor close of end-of-life). Therefore, for such sensors, it is required to provide additonal metrics, such as the median, min, max, and standard-deviation. See for example the readings object in the below JSON data feed.
..
You can use the following arduino-compatible code to collect those metrics:
class Accumulator 
{ 
    #define OUTPUT_BUFFER_SIZE 120 
    char buffer[OUTPUT_BUFFER_SIZE]; 
 
    #define MAXACCVALUES 120 
    int vals[MAXACCVALUES]; 
 
    int count = 0; 
 
public: 
    Accumulator() 
    { 
        reset(); 
    } 
 
    void reset() 
    { 
        count = 0; 
        for (int i=0;i< MAXACCVALUES;i++)  
        { 
            vals[i]=0; 
        } 
    } 
 
    bool hasData()  
    { 
        return count!=0; 
    } 
 
    std::string output()  
    { 
        if (!hasData()) return std::string("{}"); 
 
        sprintf(buffer, OUTPUT_BUFFER_SIZE, "{\"min\":%d,\"max\":%d,\"median\":%d,\"average\":%.1f,\"stddev\":%.1f,\"count\":%d}",  
            vmin(), vmax(), median(), average(), stddev(), count); 
 
        return std::string(buffer); 
 
    } 
 
    void add(int val) 
    { 
        if (count==MAXACCVALUES-1) { 
          for (int i = 0; i < MAXACCVALUES - 1; i++) { 
            vals[i] = vals[i + 1]; 
            } 
            count --; 
        } 
        vals[count++]=val; 
    } 
 
    float stddev()  
    { 
        if (!hasData()) return -1; 
        int u  =avg(); 
        int t = 0; 
        for (int i=0;ivals[j]) { 
                    float t = vals[j]; 
                    vals[j]=vals[i]; 
                    vals[i]=t; 
                } 
  
            } 
        } 
        return vals[count/2]; 
    } 
 
    float avg()  
    { 
        if (!hasData()) return -1; 
        float t = 0; 
        for (int i=0;ivals[i]) { 
                t=vals[i]; 
            } 
        } 
        return t; 
    } 
 
    float vmax()  
    { 
        if (!hasData()) return -1; 
        float t = vals[0]; 
        for (int i=0;it) { 
                t=vals[i]; 
            } 
        } 
        return t; 
    } 
};

Inquiry Form


Publishing data on the World Air Quality Index project is free. It is also simple and straightforward: All you need tis to provide a webpage containing the information about your monitoring stations and their real-time/hourly readings.
Want to know more? Contact us with the form below


Data Feed - Inquiry form
Enter your name - eg "John Doe"
Enter your email address - eg "john.doe@mail.com"
Enter your country or city - eg Tbilisi, Georgia
Enter your data-feed URL - eg "https://airnow.gov/"
Write few words about your request - eg: "A feed for Tbilisi, Georgia is available at ..", "The feed for Sofia, Bulgaria has been updated", "I need help to setup the feed for Dakar, Senegal", "The location of the station Patumahoe in Auckland is incorrect. It's lat,lon is -37.204,174.864", ..


Bạn muốn trạm giám sát chất lượng không khí của riêng bạn?

Các trạm giám sát chất lượng không khí GAIA đang sử dụng các cảm biến hạt laser công nghệ cao để đo ô nhiễm PM2.5 thời gian thực, đây là một trong những chất gây ô nhiễm không khí có hại nhất.

Rất dễ cài đặt, chúng chỉ cần một điểm truy cập WIFI và nguồn điện USB. Sau khi kết nối, mức độ ô nhiễm không khí được báo cáo ngay lập tức và theo thời gian thực trên bản đồ của chúng tôi

Về phương pháp đo chất lượng không khí và mức độ ô nhiễm:

Về các thang đo chất lượng không khí

- Giá trị chỉ số chất lượng không khí (AQI)Mức độ ảnh hưởng sức khỏe
0 - 50 Tốt Chất lượng không khí được xem là đạt tiêu chuẩn, và ô nhiễm không khí coi như không hoặc gây rất ít nguy hiểm
51 -100 Trung bình Chất lượng không khí ở mức chấp nhận được; tuy nhiên, một số chất gây ô nhiễm có thể ảnh hưởng tới sức khỏe của một số ít những người nhạy cảm với không khí bị ô nhiễm.
101-150 Không tốt cho người nhạy cảm Nhóm người nhạy cảm có thể chịu ảnh hưởng sức khỏe. Số đông không có nguy cơ bị tác động.
151-200 Có hại cho sức khỏe Mỗi người đều có thể sẽ chịu tác động đến sức khỏe; nhóm người nhạy cảm có thể bị ảnh hưởng nghiêm trọng hơn.
201-300 Rất có hại cho sức khỏe Cảnh báo nguy hại sức khỏe nghiêm trọng. Đa số mọi người đều bị ảnh hưởng.
300+ Nguy hiểm Cảnh báo sức khỏe: tất cả mọi người có thể chịu tác động nghiêm trọng đến sức khỏe

Để biết thêm về ô nhiễm và chất lượng không khí , xem wikipedia chất lượng không khí đang đề hoặc hướng dẫn về chất lượng không khí và sức khỏe của bạn .

Để biết những lời khuyên về sức khỏe rất hữu ích của bác sĩ y khoa Richard Saint Cyr ở Bắc Kinh, xem www.myhealthbeijing.com blog.


Thông báo sử dụng: Tất cả dữ liệu chất lượng không khí không được xác thực tại thời điểm công bố. Nhằm đảm bảo chất lượng, những dữ liệu này có thể được cập nhập mà không cần thông báo trước. Nhóm dự án Chỉ số chất lượng không khí toàn cầu đã thực hiện tất cả yêu cầu cần thiết trong việc biên soạn các thông tin này. Nhóm dự án hoặc các bên liên quan sẽ không chịu trách nhiệm về bất kỳ tổn thất, thương tích hoặc thiệt hại nào phát sinh trực tiếp hoặc gián tiếp từ việc cung cấp những dữ liệu này trong bất kỳ trường hợp nào.



Cài đặt


Cài đặt ngôn ngữ:


Temperature unit:
Celcius