Google Earth Engine で気温を扱ってみた

## はじめに
Google Earth Engine (GEE) では、人工衛星などで観測したさまざまな情報を元に解析ができます。標高のデータを使ったり、植生を調べたりすることもできます。

GEEでは気温のデータを扱うこともできるので、今回はGEEでは気温のデータをどのように扱えるか紹介したいと思います。

## Google Earth Engine で気温を扱ってみた
### 使うデータセット
今回は気温のデータを扱うといいましたが、気温に関するデータをどのように探せばいいでしょうか。 Google Earth Engine で使えるデータセットはカタログとして、以下のページに掲載されています。

https://developers.google.com/earth-engine/datasets

そこには大量のデータセットを見ることができるのですが、多すぎて探すことが難しいかもしれません。そこで、タグによる検索機能を使います。データセットにはタグがついているので（全部は見てないので、おそらくついています）、今回は　`temperture` のタグを使って、気温に関するデータセットを決めました。

今回使用するデータセットは、`ERA5-Land Daily Aggregated - ECMWF Climate Reanalysis`　です。このデータセットは、利用可能なデータが 2023/07/11 といった最近のデータを扱えるため選びました。

https://developers.google.com/earth-engine/datasets/catalog/ECMWF_ERA5_LAND_DAILY_AGGR#description

### 気温データを地図に描画してみる
まずは気温データを描画してみます。先ほど紹介したデータセットの `temperature_2m` というバンドを使って描画していきます。これは地表、もしくは水面から 2m 上部の気温がまとまっているバンドです。

```javascript
// 先ほど指定したデータセットを取得する
// 今回は 2022/04/01 から観測されている最初のデータを扱う
var dataset = ee.ImageCollection('ECMWF/ERA5_LAND/DAILY_AGGR')
                .filterDate('2022-04-01', '2022-12-31')
                .select('temperature_2m')
                .first();

// データが絶対温度なので、摂氏 -20 度から 50 度までの範囲で絞る
var options = {
  min: 253,
  max: 323,
  palette: [
    '000080', '0000d9', '4000ff', '8000ff', '0080ff', '00ffff',
    '00ff80', '80ff00', 'daff00', 'ffff00', 'fff500', 'ffda00',
    'ffb000', 'ffa400', 'ff4f00', 'ff2500', 'ff0a00', 'ff00ff',
  ] 
};

// 地図に描画する
Map.addLayer(dataset, options, 'temperture', true);
```

描画した結果は以下の画像です。暖かいところが暖色、寒いところが寒色になっています。パレットの影響もありますが、綺麗に描画することができました。

![スクリーンショット 2023-07-21 21.53.51（3）.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581736/1bd54feb-456b-4dcb-d9f6-f0133f2a3766.png)

### 気温データを使ったチャートを作成してみる
今回は名古屋駅周辺で 2022 年の気温を表示するチャートを作成してみようと思います。

今回は以下のコードを参考に作成しました。

https://code.earthengine.google.com/0a99ee7f141ba9e4ea2269ea3e940e07

```javascript
// 名古屋駅周辺の指定（気温を取得する地域を指定）
var meieki = ee.Feature(    
                ee.Geometry.Rectangle(136.87569750673498,35.16519174439816, 136.88891543276037,35.175049491446224),
                {label: '名古屋駅'}
             );
var Regions = new ee.FeatureCollection([meieki]);

// 2022 年のデータを取得
var dataset = ee.ImageCollection('ECMWF/ERA5_LAND/DAILY_AGGR')
                .filterDate('2022-01-01', '2022-12-31')
                .select('temperature_2m');

//　絶対温度からセルシウス温度に変換して、 Temp というバンドを追加
var temperture = dataset.map(function(image) {
  return image.addBands(image.subtract(273).select([0], ['Temp']));
});

// 気温の時系列変化のグラフを作成
// 気温の平均をとっている
var chart = ui.Chart.image.seriesByRegion({
  imageCollection: temperture,
  regions: Regions,
  reducer: ee.Reducer.mean(),
  band: 'Temp',
  scale: 200,
  xProperty: 'system:time_start',
  seriesProperty: 'label'
});

// チャートの設定を追加
chart.setOptions({
  title: '名古屋駅周辺における 2022 年の気温',
  vAxis: {
    title: '気温(度)'
  },
  lineWidth: 1,
  pointSize: 4,
});
print(chart);
```

実際に描画できたチャートは以下の画像です。

![ee-chart (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581736/49825684-35bf-0259-4291-b3c15c80ce6f.png)

1日ごとのデータが入っているので、詳細に描画することができました。このデータセットは、 1950 年から毎日観測されていて、それが無料で使えると考えるととんでもないです...！

## さいごに
今回は、GEE の気温に関するデータを使って、地図への描画やチャートの作成を行いました。 GEE には気温のデータ以外にも標高のデータなどさまざまなデータを扱うことができ、それらを組み合わせることも可能です。それが無料できるのは、改めてとんでもないことだと思いました...！