本ドキュメントでは、アイソサーフェスレイヤーのデータをタイムラインで変更する方法について説明します。 さまざまな期間にさまざまなモニタリングサイトからデータを取得するには、API またはデータベースが必要です。

API を書くことを推奨します。
  • リクエストアドレス: /aqi
  • リクエストメソッド:GET
  • リクエストパラメータ:
    • パラメータ:date
    • パラメータタイプ:文字列 (たとえば 2017012722) 形式は YYYYmmDDHH です。
  1. ダウンロードしたデータをすべて処理します。 Node.js はディレクトリ内のすべてのデータをバッチ処理する glob モジュールを提供します。
    var fs = require('fs');
    var csv = require("fast-csv");
    var glob = require('glob');
    var mapdata = require('. /Longitude and latitude mapping in the site list.json');
    glob(". /Site_20170101-20170202/*.csv", function (err, files) {
    files.forEach(function (file) {
     var filename = file.replace(/^. *[\\\/]/, '').split('.')[0] .split('_')[2];
     var datas = {};
     csv
       .fromPath(file, { headers: true, objectMode: true })
       .on("data", function (data) {
         if (data.type === 'AQI') {
           datas[data.hour] = [];
           for (var key in data) {
             if (mapdata[key]) {
               datas[data.hour].push({
                 name: mapdata[key].name,
                 value: +data[key],
                 code: mapdata[key].code,
                 city: mapdata[key].city,
                 lng: +mapdata[key].lng,
                 lat: +mapdata[key].lat
               })
             }
           }
         }
       })
       .on("end", function () {
         fs.writeFile('./data/' + filename + '.json', JSON.stringify(datas));
         console.log("done");
       });
    });
    });
    結果は以下になります。
  2. glob モジュールを使ってデータを統合します。 ファイル名 (日付) をキーとして、対応する内容を値として使用します。 次に、 all.json という名前の統合ファイルを取得します。
    //The following method is not suitable to process data in large scale.
    var fs = require('fs');
    var csv = require("fast-csv");
    var glob = require('glob');
    glob("./data/*.json", function (err, files) {
    var datas = {};
    files.forEach(function (file) {
     var filename = file.replace(/^. *[\\\/]/, '').split('.')[0];
     datas[filename] = require(file);
    });
    fs.writeFile('./data/all.json', JSON.stringify(datas));
    console.log('done');
    });
  3. Node.js の Express フレームワークを使用して Express プロジェクトを初期化し、上記の API 要件に従って API を追加します。
    クロスドメインリクエストを避けるために、 app.js ファイルに cors モジュールを追加できます。
  4. API を処理した後、npm start API をテストするためのコマンドを実行します。