本ドキュメントの例では、CSV ファイルを JSON ファイルに変換します。

以下は、アイソサーフェスレイヤーウィジェットが必要とするデータフォーマットの例です。 よりよく要件を満たすためにデータを処理する必要があります。
  • Clip GeoJSON data :研究領域の境界データです。 この例の研究領域は中国全土をカバーしています。データは GeoJSON 形式です。

    GeoJSON は、単純な地理的特徴を表すように設計されたオープンスタンダード形式です。 詳細については、「GeoJSON 規格」 をご参照ください。

  • Interpolation Points Data :監視サイトの経度、緯度、および値を含む配列です。
たとえば、2017年1月20日12:00 の大気質指標 (AQI) マップなど、一日のうちの一定期間のアイソサーフェスマップを作成するには、位置データ (経度と緯度) および対応する各モニタリングサイトの AQI を取得する必要があります。 データを処理するには、次の手順を実行します。
  1. CSV ファイルを処理するには、次のノードスクリプトを使用します。
    var csv = require("fast-csv");
    var fs = require('fs');
    var map = {};
    csv
    .fromPath(". /Site list (including the longitudes and latitudes)-new-1497.csv", { headers: true, objectMode: true })
    .on("data", function (data) {
     map[data['code']] = data;
    })
    .on("end", function () {
     fs.writeFile('. /Longitude and latitude mapping in the site list.json', JSON.stringify(map));
     console.log("done");
    });
    ディクショナリが取得されます。 ディクショナリでは、モニタリングサイト番号がキーであり、サイト情報が値です。
    {
     "1001A": {
         "code": "1001A",
         "name": "Wanshouxigong",
         "city": "Beijing",
         "lng": "116.366",
         "lat": "39.8673"
     },
     "1002A": {
         "code": "1002A",
         "name": "Dingling",
         "city": "Beijing",
         "lng": "116.17",
         "lat": "40.2865"
     },
     "1003A": {
         "code": "1003A",
         "name": "Dongsi",
         "city": "Beijing",
         "lng": "116.434",
         "lat": "39.9522"
     },
     ...
    }
  2. 2017年1月20日に 1,497 のモニタリングサイトから取得したプロセスデータです。
    各モニタリングサイトから 24 時間以内に取得した AQI データを処理するには、次のスクリプトを使用します。 データを抽出し、経度と緯度のマッピングリストに従ってサイトに経度と緯度を追加します。
    var fs = require('fs');
    var csv = require("fast-csv");
    var mapdata = require('. /Longitude and latitude mapping in the site list.json');
    var file = '. /Site_20170101-20170202/china_sites_20170120.csv';
    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");
    });
    各日の時間帯をキーとして、配列を値として使用します。 この配列には、対応する時間帯における各モニタリングサイトの AQI 情報と位置が含まれています。 その結果、各日における各時間帯のデータをアイソサーフェスレイヤー ウィジェットで使用できるようになります。
    {
    "0": [{ "name": "Wanshouxigong", "value": 18, "code": "1001A", "city": "Beijing", "lng": 116.366, "lat": 39.8673 }, { "name": "Dingling", "value": 25, "code": "1002A", "city": "Beijing", "lng": 116.17, "lat": 40.2865 }, ...],
    "1": [{ "name": "Wanshouxigong", "value": 28, "code": "1001A", "city": "Beijing", "lng": 116.366, "lat": 39.8673 }, { "name": "Dingling", "value": 65, "code": "1002A", "city": "Beijing", "lng": 116.17, "lat": 40.2865 }, ...],
    "2": [{ "name": "Wanshouxigong", "value": 88, "code": "1001A", "city": "Beijing", "lng": 116.366, "lat": 39.8673 }, { "name": "Dingling", "value": 95, "code": "1002A", "city": "Beijing", "lng": 116.17, "lat": 40.2865 }, ...]
     ...
    }