本ドキュメントでは、アイソサーフェスレイヤーのデータをタイムラインで変更する方法について説明します。 さまざまな期間にさまざまなモニタリングサイトからデータを取得するには、API またはデータベースが必要です。
API を書くことを推奨します。
- リクエストアドレス: /aqi
- リクエストメソッド:GET
- リクエストパラメータ:
- パラメータ:date
- パラメータタイプ:文字列 (たとえば 2017012722) 形式は YYYYmmDDHH です。
- ダウンロードしたデータをすべて処理します。 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"); }); }); });
結果は以下になります。 - 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'); });
- Node.js の Express フレームワークを使用して Express プロジェクトを初期化し、上記の API 要件に従って API を追加します。注 クロスドメインリクエストを避けるために、 app.js ファイルに cors モジュールを追加できます。
- API を処理した後、npm start API をテストするためのコマンドを実行します。