Earth Engine コードエディタ

code.earthengine.google.com の Earth Engine(EE)コードエディタは、Earth Engine JavaScript API のウェブベースの IDE です。コードエディタの機能は、複雑な地理空間ワークフローを迅速かつ簡単に開発できるように設計されています。コードエディタには、次の要素があります(図 1 を参照)。

  • JavaScript コードエディタ
  • 地理空間データセットを可視化するための地図表示
  • API リファレンス ドキュメント([ドキュメント] タブ)
  • Git ベースのスクリプト マネージャー([スクリプト] タブ)
  • コンソール出力([コンソール] タブ)
  • 実行時間の長いクエリを処理するためのタスク マネージャー([タスク] タブ)
  • インタラクティブなマップのクエリ([インスペクタ] タブ)
  • データ アーカイブまたは保存されたスクリプトの検索
  • ジオメトリ描画ツール

コードエディタのコンポーネント

図 1. code.earthengine.google.com の Earth Engine コードエディタのコンポーネントの図。

コードエディタには、Earth Engine API を活用するためのさまざまな機能が用意されています。[スクリプト] タブで、スクリプトの例を表示したり、独自のスクリプトを保存したりできます。インスペクタ タブを使用してマップに配置されたクエリ オブジェクト。Google Visualization API を使用して、数値の結果を表示してグラフ化します。[リンクを取得] ボタンを使用して、スクリプトの固有の URL を共同編集者や友人と共有します。コード エディタで開発したスクリプトは、処理のために Google に送信されます。生成された地図タイルやメッセージは、[地図] タブや [コンソール] タブに表示するために返送されます。コードエディタを実行するには、ウェブブラウザ(Google Chrome を使用すると最適な結果が得られます)とインターネット接続が必要です。以降のセクションでは、Earth Engine コードエディタの要素について詳しく説明します。

JavaScript エディタ

JavaScript エディタでは、次の操作が可能です。

  • 入力に合わせてコードの形式を設定してハイライト表示する
  • 問題のあるコードに下線を引き、修正案や正しい構文のヒントを表示する
  • 引用符、角かっこ、丸かっこを自動的に閉じる
  • Earth Engine 関数のコード補完ヒントを提供する

コードエディタの上には、スクリプトの実行、スクリプトの保存、出力マップとコンソールのリセット、スクリプトへのリンクの取得を行うボタンがあります。[リンクを取得] ボタンを押すと、ブラウザのアドレスバーに一意のリンクが表示されます。このリンクは、ボタンが押された時点のエディタ内のコードを表します。

API リファレンス([ドキュメント] タブ)

コードエディタの左側にある [Docs] タブには、JavaScript API の完全なドキュメントが含まれています。ドキュメントは、[ドキュメント] タブで検索して閲覧できます。

スクリプト マネージャー([スクリプト] タブ)

[スクリプト] タブは、コードエディタの左側のパネルにある API ドキュメントの横にあります。スクリプト マネージャーは、Google がホストする Git リポジトリに、非公開、共有、サンプルのスクリプトを保存します。リポジトリはアクセスレベルごとに整理され、非公開スクリプトは [オーナー] フォルダ(users/username/default)にある所有リポジトリに保存されます。オーナー フォルダ内のリポジトリには、他のユーザーと共有しない限り、自分だけがアクセスできます。[Writer] フォルダ内のリポジトリは、オーナーによって書き込みアクセス権が付与されたリポジトリです。編集フォルダ内のリポジトリに対して、新しいスクリプトの追加、既存のスクリプトの変更、アクセス権限の変更を行うことができます(オーナーを削除することはできません)。[Reader] フォルダ内のリポジトリは、オーナーによって読み取りアクセス権が付与されたリポジトリです。Examples フォルダは、Google が管理する特別なリポジトリで、コードサンプルが含まれています。[アーカイブ] フォルダには、アクセス権はあるものの、所有者が古いバージョンのスクリプト マネージャーからまだ移行していない以前のリポジトリが含まれています。[スクリプト] タブの上部にあるフィルタバーを使用して、スクリプトを検索します。

スクリプト マネージャー

図 2. スクリプト マネージャ。

ボタンをクリックして、[オーナー] フォルダに新しいリポジトリを作成するか、リポジトリ内にフォルダとファイルを作成します。スクリプトの名前を変更するには アイコンを、スクリプトを削除するには アイコンを使用します。スクリプトを移動して、ドラッグ&ドロップでフォルダに整理できます(図 2)。スクリプトを別のリポジトリにドラッグすると、コピーされます。

すべてのスクリプトとリポジトリは、完全な変更履歴を維持します。スクリプトまたはリポジトリの横にある アイコンをクリックして、比較するか、以前のバージョンに戻します。リポジトリを削除するには、 アイコンをクリックします。リポジトリへのアクセスを構成するには、リポジトリ名の横にある アイコンをクリックします。リポジトリを共有する場合、共有相手は設定ダイアログに表示されるリンクをクリックしてリポジトリを承認する必要があります。以前に承認したリポジトリは、スクリプト マネージャーでリポジトリ名の横にある アイコンをクリックすると非表示にできます。

リポジトリには Git を使用してアクセスできるため、コードエディタの外部でスクリプトを管理、編集したり、GitHub などの外部システムと同期したりできます。(Git の詳細については、こちらのチュートリアルをご覧ください)。リポジトリ名の横にある アイコンをクリックして、リポジトリのクローンを作成する手順を確認します。アクセスできるリポジトリを閲覧するには、earthengine.googlesource.com にアクセスします。一部の Git オペレーションでは、earthengine.googlesource.com ページの上部にある [パスワードを生成] リンクにアクセスして、認証情報を作成する必要があります。

スクリプト モジュール

モジュール化された再利用可能なコードを記述し、大規模なコピー&ペーストを行わずにスクリプト間で共有できるようにすることをおすすめします。モジュール式開発を可能にするため、Earth Engine にはスクリプト間でコードを共有する機能が用意されています。たとえば、一連の便利なオペレーションを実行する関数を作成するとします。関数のコードを新しいスクリプトにコピーするのではなく、新しいスクリプトで関数を直接読み込む方が簡単です。関数やオブジェクトを他のスクリプトで使用できるようにするには、exports という特別なオブジェクトに追加します。別のスクリプトでコードを使用するには、require 関数を使用して別のスクリプトからエクスポートを読み込みます。たとえば、Modules という名前のフォルダにある FooModule.js という名前のファイルで、次のモジュールを定義するとします。

コードエディタ(JavaScript)

/**
 * The Foo module is a demonstration of script modules.
 * It contains a foo function that returns a greeting string.
 * It also contains a bar object representing the current date.
 * @module Modules/FooModule
 */

/**
 * Returns a greeting string.
 * @param {ee.String} arg The name to which the greeting should be addressed
 * @return {ee.String} The complete greeting.
 */
exports.foo = function(arg) {
  return 'Hello, ' + arg + '!  And a good day to you!';
};

/**
 * An ee.Date object containing the time at which the object was created.
 */
exports.bar = ee.Date(Date.now());

exports.objectToExport の形式で exports キーワードを使用していることに注意してください。require 関数を使用すると、別のスクリプトでこのモジュールを利用できます。次に例を示します。

コードエディタ(JavaScript)

var Foo = require('users/username/default:Modules/FooModule.js');

print(Foo.doc);

print(Foo.foo('world'));

print('Time now:', Foo.bar);

require 関数は、モジュールの場所の絶対パスを記述する文字列を想定しています。具体的には、require() の引数は 'pathToRepository:pathToModuleScript' の形式です。モジュールを読み込むことができるのは、所有しているか、読み取り権限を持っているリポジトリからのみです。他のユーザーがモジュールを使用できるようにするには、アクセス権を付与する他のユーザーとリポジトリを共有する必要があります。モジュールの使用方法を他のユーザーに理解してもらうために、モジュールを文書化することをおすすめします。@module タグを使用して JSDoc スタイルを使用することをおすすめします。

URL パラメータ ?scriptPath={repo}:{script} を使用すると、リポジトリ内のファイルへの参照を共有できます(例: https://code.earthengine.google.com/?scriptPath=users/username/utils:utils)。URL にアクセスすると、共有リポジトリの権限レベルに応じて、参照されたファイルとそのリポジトリが [スクリプト] タブの Reader ディレクトリまたは Writer ディレクトリに追加されます。

アセット マネージャー([アセット] タブ)

アセット マネージャーは、左側のパネルの [アセット] タブにあります。アセット マネージャー(図 3)を使用して、Earth Engine で独自の画像アセットをアップロードして管理します。詳細については、アセット マネージャーのページをご覧ください。

アセット マネージャー

図 3. アセット マネージャー。

コード エディタのスクリプトは、エンコードされた URL を介して共有できます。以降のセクションでは、スクリプト URL を生成するさまざまな方法、使用可能なオプション、スクリプト URL を管理する方法について説明します。

コードエディタの上部にある [リンクを取得] ボタン(図 4)は、スクリプト URL を生成し、スクリプトの動作オプションを設定するためのインターフェースを提供します。スナップショット URL と保存済みスクリプト URL の違いについては、以下をご覧ください。

こちらの

図 4. [リンクを取得] ボタン。

エディタ内のコードは、コードエディタの上部にある [リンクを取得] ボタンをクリックすると作成されるエンコードされたスナップショット URL を介して共有できます。Earth Engine アカウントを持つユーザーがこの URL にアクセスすると、ブラウザがコードエディタに移動し、コード、インポート、地図レイヤ、地図の位置など、リンクが作成されたときの環境が複製されます。[リンクを取得] ボタンをクリックすると、スクリプトのリンクが自動的にクリップボードにコピーされます。また、共有スクリプトの実行を制御するオプションと、生成されたリンクをコピーして開くボタンを含むダイアログ ボックスが表示されます。制御オプションには、スクリプトの自動実行を防止するオプションや、共有リンクを開いたときにコードペインを非表示にするオプションなどがあります。ドラッグ可能なダイアログ ボックスは、Esc キーを押すか、ページ上の別の場所をクリックすることで閉じることができます。

保存したスクリプトには、常に最新の保存済みバージョンを読み込むリンクを共有するオプションがあります。このリンクにアクセスできるのは、スクリプトを含むリポジトリに現在アクセスできるユーザーのみです。この機能を使用するには、[スクリプト マネージャー] タブから保存したスクリプトを読み込み、[リンクを取得] ボタンの右にあるプルダウン矢印をクリックして、[スクリプト パスをコピー] を選択します。共有可能なスクリプトの URL を示すダイアログ ボックスが表示されます。スクリプトの URL がブラウザのアドレスバーにも設定されていることに注意してください。リポジトリを他のユーザーと共有する方法については、スクリプト マネージャーのセクションをご覧ください。

[リンクを取得] ボタンの右側にあるプルダウン ボタンには、[リンクを管理] オプションがあります。このオプションをクリックすると、以前に生成されたスクリプト リンクを呼び出し、削除、ダウンロードするためのインターフェースが新しいブラウザタブに読み込まれます。スクリプトを選択してダウンロード ボタンを押すと、選択した各スクリプトの .txt ファイル表現を含む zip フォルダ(「code_editor_links.zip」)がシステムにダウンロードされます。

ui.url モジュールを使用すると、get メソッドと set メソッドを介してスクリプト URL のフラグメント識別子をプログラムで操作できます。つまり、コードエディタ スクリプトと Earth Engine アプリは、ページの URL の値を読み取って保存できます。次の 2 つの URL の末尾に注目してください。1 つ目は debug 変数を false に設定し、2 つ目は true に設定します。両方のリンクにアクセスすると、コンソールのデバッグ チェックボックスが 1 つ目ではオフ、2 つ目ではオンになっていることがわかります。これにより、各スクリプトの動作が変化します。

https://code.earthengine.google.com/5695887aad76979388a723a85339fbf2#debug=false;
https://code.earthengine.google.com/5695887aad76979388a723a85339fbf2#debug=true;

この機能を使用すると、特定のユーザーやグループにリンクを送信する際にカスタマイズするマップのズームや中心、その他の動作を設定できます。

検索ツール

スクリプトで使用するデータセットを見つけるには、データ アーカイブの検索ツールを使用します。検索ツールは、コード エディタの上部にあるテキスト ボックスで、「場所とデータセットを検索...」と表示されています。検索バーにデータ プロダクト、センサー、その他のキーワードの名前を入力し、 ボタンをクリックすると、一致する場所、ラスター、テーブル データセットのリストが表示されます。ラスタまたはテーブルの結果をクリックすると、アーカイブ内のそのデータセットの説明が表示されます。データセットをスクリプトに直接インポートするには、データセットの説明にある [インポート] リンクまたは ボタンをクリックします。

インポート

データセットをスクリプトにインポートした結果は、スクリプトの上部にあるインポート セクションに整理されます。このセクションは、何かをインポートするまで非表示になっています。インポートを作成すると、図 5 のような画面が表示されます。インポートを別のスクリプトにコピーしたり、インポートを JavaScript に変換したりするには、[インポート] ヘッダーの横にある アイコンをクリックし、生成されたコードをスクリプトにコピーします。インポートを削除するには、 アイコンを使用します。

コードエディタのインポート セクション

図 5. コードエディタの上部にあるインポート セクション。

地図

API の地図オブジェクトは、コードエディタの地図の表示を指します。たとえば、Map.getBounds() はコードエディタに表示されている地域を返します。このディスプレイのその他のカスタマイズについては、API の Map 関数をご覧ください。

レイヤ マネージャー

地図の右上にあるレイヤ マネージャーを使用して、地図に追加したレイヤの表示を調整します。具体的には、レイヤの表示 / 非表示を切り替えたり、スライダーで透明度を調整したりできます。 アイコンをクリックして、個々のレイヤの可視化パラメータを調整します。表示される可視化ツール(図 6)を使用すると、レイヤ表示パラメータをインタラクティブに構成できます。ツールの右側にあるボタン(デフォルトでは、指定された最小値と最大値の範囲に カスタム ストレッチを実行します)をクリックすると、表示ウィンドウの画像値のパーセンタイルまたは標準偏差に表示が線形にストレッチされます。統計情報は、現在のズームレベルの [地図] ウィンドウのすべてのピクセルから計算されます。スライダーを使用して、ガンマ値や透明度を調整します。[パレット] ラジオボタンをクリックし、色を追加()、色を削除()、または 16 進文字列のカンマ区切りリストを手動で入力()して、カスタム パレットを指定します。[適用] をクリックして、現在のディスプレイに可視化パラメータを適用します。[インポート] をクリックして、可視化パラメータ オブジェクトをスクリプトのインポート セクションの新しい変数として読み込みます。

レイヤの可視化ツール。

図 6. レイヤの可視化ツール。

[インスペクタ] タブ

タスク マネージャーの横にある [Inspector] タブでは、マップに対してインタラクティブにクエリを実行できます。[インスペクタ] タブが有効になっている場合、カーソルは十字線になり、地図をクリックすると、カーソルの下の位置とレイヤの値が表示されます。たとえば、図 7 は、[インスペクタ] タブ内の地図をクリックした結果を示しています。カーソルの位置とズームレベルが、ピクセル値と地図上のオブジェクトのリストとともに表示されます。オブジェクト リストはインタラクティブです。詳細を表示するには、[インスペクタ] タブでオブジェクトを開きます。

[インスペクタ] タブ

図 7. [Inspector] タブには、カーソルの位置とカーソルの下のレイヤの値に関する情報が表示されます。

コンソール タブ

スクリプトからテキスト、オブジェクト、グラフなどの print() を行うと、結果が [コンソール] に表示されます。コンソールはインタラクティブなので、出力されたオブジェクトを展開して詳細を確認できます。

[タスク] タブ

Earth Engine タスクは、標準の API リクエスト タイムアウトよりもはるかに長く実行できるオペレーションです。これらの長時間実行タスクは、Earth Engine と隣接するシステム(Google Cloud Storage、Google ドライブなど)で永続的なアーティファクトを作成する唯一のメカニズムであり、ImportExport の 2 つのカテゴリに分類されます。

インポート タスクを使用すると、さまざまなファイルタイプ(.csv.tif など)から Earth Engine に画像をアップロードしたり、テーブルをアップロードしたりできます。エクスポート タスクは、EE コンピューティング システムから結果を実行して書き込むために使用できます(データのエクスポートに関するガイドをご覧ください)。

エクスポートの場合、コードエディタで Export 関数を呼び出すたびに、[タスク] タブの [未送信のタスク] セクションにエントリが追加されます。エクスポート タスクをサーバーに送信するには、タスクの横にある [実行] ボタンをクリックします。タスクのさまざまなパラメータを指定できる構成ダイアログが表示されます。タスクが作成時に完全に指定されている場合(つまり、Export の呼び出しに必要なパラメータがすべて含まれている場合)、ctrl または を押しながら [実行] をクリックして、ダイアログを表示せずにタスクを送信します。

インポートの場合、タスクがサーバーに送信される前に、ローカルでファイルのアップロードが行われます。アップロード フェーズのインポート タスクは、[未送信のタスク] セクションに進行状況が表示され、ファイルのアップロードが完了すると自動的にサーバーに送信されます。

未送信のタスクは、作成したページにのみ表示され、ページを閉じると失われます。タスクがサーバーに送信されると、UI でその行をクリックすると、タスクのステータスに関する追加情報とオプション(キャンセルをリクエストするオプションなど)が表示されます。

全画面表示(モバイル クライアントを含む)で複数のタスクを表示してキャンセルするには、Cloud Console の [タスク] ページを使用します。

Profiler

プロファイラには、特定のアルゴリズムや計算の他の部分で使用されたリソース(CPU 時間、メモリ)に関する情報が表示されます。これにより、スクリプトの実行が遅い理由や、メモリ上限が原因でスクリプトが失敗する理由を診断できます。プロファイラを使用するには、[実行] ボタンのプルダウンで [プロファイラで実行] オプションをクリックします。ショートカットとして、Alt キー(Mac の場合は Option キー)を押しながら [実行] をクリックするか、Ctrl+Alt+Enter キーを押します。これにより、コードエディタの右側に [Profiler] タブが有効になります。スクリプトの実行中、[Profiler] タブに、スクリプトのリソース使用量の表が表示されます。[実行] ボタン(プロファイリングなし)をクリックすると、[プロファイラ] タブが消え、プロファイラが無効になります。

プロファイラの出力の内訳については、コンピューティングの概要ページをご覧ください。

AI アシスタント([質問] タブ)

コードエディタには、Gemini を搭載した AI アシスタントが組み込まれており、スクリプトの作成、デバッグ、理解をサポートします。アシスタントは、右側のパネルの [質問] タブで利用できます。

アシスタントの設定と使用方法について詳しくは、Earth Engine コードエディタの AI アシスタント ガイドをご覧ください。

ジオメトリ ツール

画面に描画して、ジオメトリをスクリプトにインポートすることもできます。ジオメトリを作成するには、地図表示の左上隅にあるジオメトリ描画ツールを使用します(図 8)。ポイントを描画するには、プレイスマーク アイコン を使用します。線を描画するには、線アイコン を使用します。ポリゴンを描画するには、ポリゴン アイコン を使用します。長方形を描画するには、長方形アイコン を使用します。(長方形は平面ジオメトリであるため、線やポリゴンなどの測地線ジオメトリを含むレイヤに配置することはできません)。

いずれかの描画ツールを使用すると、新しいジオメトリ レイヤが自動的に作成され、そのレイヤのインポートが [Imports] セクションに追加されます。新しいレイヤにジオメトリを追加するには、マップ表示の [Geometry Imports] にカーソルを合わせ、[+new layer] リンクをクリックします。[ジオメトリのインポート] セクションでジオメトリの表示 / 非表示を切り替えることもできます。描画されたジオメトリは、デフォルトでは測地線です。ただし、長方形は平面のみです。Geometry コンストラクタを使用して、それらを平面ジオメトリに変換します。Earth Engine のジオメトリの詳細については、ジオメトリのページをご覧ください。

図 8. ジオメトリ描画ツールは、地図表示の左上にあります。

スクリプトにジオメトリをインポートする方法を構成するには、地図の [Geometry Imports] セクションまたはコード エディタの [Imports] セクションで、レイヤの横にある アイコンをクリックします。ジオメトリ レイヤ設定ツールがダイアログ ボックスに表示されます。このダイアログ ボックスは図 9 のようになります。描画したシェイプは、ジオメトリ、特徴、特徴コレクションとしてインポートできます。ジオメトリのインポート設定では、レイヤの表示色を変更したり、レイヤにプロパティを追加したり(Feature または FeatureCollection としてインポートした場合)、レイヤの名前を変更したりすることもできます。

ジオメトリ構成ツール

図 9. ジオメトリ構成ツール。

最後に、レイヤ内のジオメトリが編集されないようにするには、レイヤの横にある アイコンを押してレイヤをロックします。これにより、レイヤ上のジオメトリの追加、削除、編集ができなくなります。レイヤのロックを解除するには、 アイコンを押します。

どうしたらよいでしょうか?

コード エディタの右上にある ボタンをクリックすると、このデベロッパー ガイド、他のヘルプ フォーラム、コード エディタのガイドツアー、コーディング、コードの実行、地図でのデータの表示に役立つキーボード ショートカットの一覧へのリンクが表示されます。 ボタンをクリックして、バグレポートを送信したり、新機能をリクエストしたり、データセットを提案したり、回答を必要としないフィードバックを送信したりします。