Google Earth Engine(GEE)で機械学習の使用や前処理としてインデックス指標を作るときがあると思います。
しかし、毎回同じ処理を書くことになると、多大な時間がかかってしまいます。
そこで、今回はよく使う処理をモジュール化(ライブラリ化)する方法を紹介します。
モジュール化してしまえば、毎回コードを書かなくて、済むと同時に複数のファイルに書き込んだ処理をまとめて変更もできるようになります
手順
モジュール用のフォルダとファイルを作成
GEEの左のツールバーのNewからフォルダを新たに作成します
フォルダ名は任意のもので問題ないです
今回はmoduleとしました

次に、ファイルを作成します
ファイルの作成ではフォルダを指定できませんが、スラッシュ(/)で区切ってあげれば、フォルダ直下に作成してくれます

問題なくできていればこのようなディレクトリ構造になっているはずです

記載方法
モジュールとして使う場合は他のファイルで使用したい関数をexportsすることで簡単にできます
例えば以下の関数の場合を考えます
var init = function(){
print("Hello World!");
};
この関数を下記のように「exports.関数名」に代入すると他ファイルでも使えるようになります
exports.init = init;
「exports.関数名」の関数名は本来の関数名(init)じゃなくても動作するので、適当な名前をつけましょう
次にmoduleディレクトリの同階層のファイルから、この関数を呼び出してみます
呼び出す際はrequire関数を使い、引数にレポジトリ名とファイル名を「:」で繋ぎ合わせた形を指定します。
今回使用しているレポジトリは「users/halogen322/blog」でモジュール用として作成したファイルが「module/sample」なので、「’users/halogen322/blog:module/sample’」となっています。利用環境によって、この辺りを変更してみてください
var utils = require('users/halogen322/blog:module/sample');
もしも、下記のような「Cannot find required script」エラーが表示されたら、パスが間違っています。このような場合には今一度、確認してみてください

そして、sampleファイル内の関数を使いたい時は、requireで受け取った返り値に対して、ピリオド(.)の後ろに関数名を指定します
今回はinit関数をexportしたので、utils.init()になります
utils.init();
問題なければ、コンソールに、「Hello World」が表示されるはずです

今回はシンプルな利用方法を紹介しました
このモジュールを応用すれば、いつも書くコードをよりシンプルにできます
例えば、よく使うMap.addLayer関数を毎回書くのが面倒臭い場合は下記のように短縮したコードにもできます
var view = function(params){
Map.addLayer(params);
};
exports.view = view;
是非、活用してみてください!
ソースコード
module/sample
var init = function(){
print("Hello World!");
};
exports.init = init;
var view = function(params){
Map.addLayer(params);
};
exports.view = view;
repo/do
var utils = require('users/halogen322/blog:module/sample');
utils.init();
コメント