🛰️

Google Earth Engine学習記録:基礎編 - データ型とEEオブジェクト

に公開

[Google Earth Engine Mega Course] 学習記

こんにちは、七花ファームの古閑です。
遠隔農業という課題解決に向けて、いよいよ本格的にGoogle Earth Engine(GEE)の学習を始めました。今回は、Udemyのコース「Google Earth Engine Mega Course」と公式ドキュメントを参考に、GEEでデータを扱う上での基本となる「EEオブジェクト」について、写経したコードと合わせて学習記録をまとめます。
- なぜ「EEオブジェクト」を学ぶのか?
リモートセンシングデータは、日付、数値、リスト、辞書など、様々なデータ型で構成されています。GEEでは、これらのデータを効率的にサーバー側で処理するために、通常のJavaScriptのデータ型ではなく、専用の**「EEオブジェクト」**として扱う必要があります。
「Vanilla JavaScript」の基本的なデータ型とほぼ同じ感覚で使えるため、プログラミング経験があればスムーズに理解できるのが特徴です。


GEEの基本データ型:写経コードと学び

以下は、今回写経したコードと、その実行結果です。

1. 文字列(Strings)

ee.String()を使うことで、JavaScriptの文字列をGEEのオブジェクトとして扱うことができます。コンソールには、サーバー上で処理された文字列が返ってきていることが分かります。

// Earth Engine オブジェクト

// 文字列
// 例:文字列を定義し、それをEarthEngineに送信するためにee.String()コンテナに入れます。
var testString = '最初の文字列の例です。';
var eeStrig = ee.String(testString);
print('これは:', eeStrig);

//サーバー上に存在する文字列を定義します。
var myString = ee.String('これはEarth Engineサーバ上にあります。');
print('サーバ上の文字列:', myString);

// 文字列では絵文字も使えます。
print(ee.String('🧲⚡️👀'));

// 空の文字列も扱えます。
var empty = ee.String('');
print(empty);
print(empty.length());

コンソール結果:
• これは: 最初の文字列の例です。
• サーバ上の文字列: これはEarth Engineサーバ上にあります。
• 🧲⚡️👀
• 0

2. 数値(Numbers)

ee.Number()を使うことで、数値をサーバーサイドのオブジェクトとして扱うことができます。

//数値
//ee,Number()を使ってサーバ上に数値オブジェクトを作成します。
//例:JavaScriptのMath.Eメソッドを使って、サーバ上に定数を作成します。
var myNumber = ee.Number(Math.E);
print('サーバ上の数値:', myNumber);

コンソール結果:
• サーバ上の数値: 2.718281828459045

3. リスト(Lists)

複数の値をまとめるee.List()は、JavaScriptの配列と似ています。ee.List.sequence()を使えば、連番のリストを簡単に作成できます。get()メソッドでインデックスを指定し、リストから値を取り出すことも可能です。

//リスト
//シーケンスを作成します。
var eeList = ee.List([1,2,3,4,5]);
print(eeList);

var sequence = ee.List.sequence(1,5);
print(sequence);

//ee.Listのメソッドを使って、値を取り出します。
var value = sequence.get(3);
print(value);

コンソール結果:
• [1,2,3,4,5]
• [1,2,3,4,5]
• 4

4. 日付(Dates)

ee.Date()は、リモートセンシングデータで最も重要なデータ型の一つです。ee.Date.fromYMD()で年・月・日を指定したり、advance()メソッドで日付を計算したりできます。

//日付
//Earth Engine で日付を定義します。
var date = ee.Date('2015-12-31');
print('日付:', date);

var aDate = ee.Date.fromYMD(2017, 1, 13);
print('日付:', aDate);

var testDate = ee.Date.fromYMD({
  day: 23,
  month: 4,
  year: 2023
});
print('testDSate:', testDate);

var date = ee.Date('2019-01-01');
var futureDate = date.advance(1, 'year');
print(futureDate);

コンソール結果:
• 日付: Date (2015-12-31 00:00:00)
• 日付: Date (2017-01-13 00:00:00)
• testDSate: Date (2023-04-23 00:00:00)
• Date (2020-01-01 00:00:00)

5. ディクショナリ(Dictionary)

ee.Dictionary()は、キーと値のペアでデータを管理するデータ型です。JavaScriptのオブジェクト(連想配列)を変換して使います。

//ディクショナリ
//JavaScript のオブジェクトをEarth Engine のオブジェクトに変換します。
var data = {'city': 'アディスアベバ', 'population': 9000000, 'elevation': 2500};
var eeData = ee.Dictionary(data);
print(eeData.get('city'));

コンソール結果:
• アディスアベバ


感想と今後の展望

今回写経したコードは、JavaScriptの基本的なデータ型を、GEEの「EEオブジェクト」として扱う方法を学ぶものでした。JavaScriptのデータ型とほぼ同じ感覚で使えるため、プログラミング経験者にとっては非常に分かりやすく、学習のハードルが低いと感じました。
ただし、UdemyのコースがvarというECMAScript 2015以前の記法を使っている点に注意が必要です。今後はconstやletを使うように意識しつつ、GEE公式ドキュメントやコースを進めていきたいと思います。
次回は、いよいよ衛星画像を読み込んで、フィルターをかける方法を学びたいと思います。お楽しみに!

Discussion