一般的な質問
問題が発生しました。サポートが必要です。
このガイドに沿って質問を投稿し、できるだけ多くの情報を提供します(Stack Overflow の良い質問をするためのガイドをご覧ください)。通常、これは次のことを意味します。
コードエディタのスクリプトへのリンクを送信する([Get Link] ボタンをクリックして取得します)
スクリプトの実行に必要なアセットを共有
失敗したバッチタスクの場合は、失敗したタスクの ID を報告します。タスク ID は
4C25GIJBMB52PXTEJTF4JLGLのようになります。これらは、コードエディタの [Task] タブにあります。詳細
Earth Engine のアーキテクチャについて確認できる場所を教えてください。
Gorelick et al. 2017 の論文をご覧ください。
Google 以外が作成した Earth Engine のチュートリアルでおすすめのものはありますか?
EDU ページとトレーニング リソース ページをご覧ください。
おすすめのリモート センシング チュートリアルはありますか?
Ujaval Gandhi 氏による無料の EE コースをご覧ください。このコースには、リモート センシングの概要を説明する動画が含まれています。
Earth Engine のプログラミング
よくあるコーディング エラーにはどのようなものがありますか?
デバッグガイドをご覧ください。
「... is not a function」というエラーが表示されるのはなぜですか?
このエラーは、Earth Engine が呼び出されたメソッドを見つけられない場合に発生します。次のよくある原因を確認してください。
スペルまたは大文字と小文字の区別: メソッドでは大文字と小文字が区別されます。API リファレンスでスペルを確認します。
Error: img.normalizedDiff(...) -> Correct: img.normalizedDifference(...)
型キャストの欠落: .get() などの関数から返される値は、汎用の ee.ComputedObject インスタンスであり、明示的にキャストする必要があります。不明なオブジェクト タイプのキャストをご覧ください。
Error: dict.get('val').add(5) -> Correct: ee.Number(dict.get('val')).add(5)
クライアント メソッドとサーバー メソッドの混在: Earth Engine オブジェクトで標準の JavaScript メソッドまたは Python メソッド(.push() や .append() など)を使用していないことを確認します。クライアント関数とサーバー関数を混在させないをご覧ください。
Error: list.push(4) or list.append(4) -> Correct: list.add(4)
使用できないメソッド: オブジェクトが適切に型指定され、メソッドがドキュメントに存在するか、以前は機能していたが現在は失敗する場合は、バグを報告してください。
ee.Image("image") * 2 のような基本的な計算を使用できないのはなぜですか?
EE では、サーバーサイドとクライアントサイドのオブジェクトやオペレーションを混在させないでください。EE オブジェクトに対するすべてのオペレーションはサーバーサイドで実行されます。クライアントサイドの計算は、意図したとおりに動作しません。詳細については、こちらのページをご覧ください。
for ループまたは if/else ステートメントを使用するにはどうすればよいですか?
Earth Engine のプログラミングは関数型言語を使用して行われるため、ループや条件付き演算は、map や filter などの同等のコンセプトを使用して表現する必要があります。詳しくは、こちらのページをご覧ください。
画像や動画にテキストラベルを表示するにはどうすればよいですか?
テキストラベルの組み込みサポートはありませんが、次のことができます。
- サードパーティの JS パッケージを使用する。例を見る
- サードパーティの Python パッケージ geemap を使用する。
- EE QGIS プラグインを使用して EE 画像を取り込む QGIS を使用する
標準のカラーパレットを使用できますか?
サードパーティの JS パッケージ ee-palettes を使用します。
Earth Engine を使用する独自のウェブサイトを作成するにはどうすればよいですか?
基本的なアプリケーションには Earth Engine Apps を使用します。より複雑なケースでは、EE を利用した App Engine アプリを構築できます。
マップ ID の仕組み
マップ ID(API では mapid と呼ばれます)は、クライアントが地図タイルを取得できるようにするキーです。各 ID は、getMapId エンドポイントに画像式を指定して作成されたハッシュです。結果の ID は、後の段階でタイルを生成するために使用される画像式とユーザー認証情報の両方を指すキーです。
地図タイルをリクエストするには、タイルの位置(x、y、zoom)と mapid(画像と認証情報のキー)を指定する必要があります。同じ ID を再利用して、多数の地図タイルを読み込むことができます。mapid 鍵の再利用に制限はありませんが、数時間後に期限切れになります。保持期間に関する具体的な期間は公開していませんが、作成するコードは ID の有効期限が切れても問題ないようにする必要があります。
これらの ID を作成するには、少量のデータを保存して認証情報を検証する必要があるため、できるだけ長く再利用することをおすすめします。getMapId エンドポイントに特に関連付けられた API 割り当てはありませんが、タイルを取得するレートに近いレートで mapid オブジェクトを作成するワークフローは、おそらく何らかの問題があります。これらは一時的なリソースであるため、Earth Engine には、これらの ID を削除、一覧表示、管理するための API エンドポイントはありません。
ee.Algorithms.If() で true と false の両方のケースが出力されるのはなぜですか?
function a() { print("true"); }
function b() { print("false"); }
// Prints 'true' and 'false'.
ee.Algorithms.If(true, a(), b());
If() アルゴリズムは、Earth Engine の他のすべてのアルゴリズムと同様に、アルゴリズム自体を実行する前にすべての引数を評価する必要があります。このアルゴリズムは trueCase と falseCase の両方の結果を取得し、condition 引数に基づいて 1 つを選択して返しますが、これらの値をアルゴリズムに渡すには、両方のパスを実行する必要があります。
「Request payload size exceeds the limit」というエラーが表示される
Earth Engine に非常に大きなリクエストを送信しようとしています。これは通常、コードでクライアントサイドの「for」ループを多数使用している場合や、多数のジオメトリ オブジェクトから FeatureCollection を作成する場合に発生します。後者の場合は、スクリプトでこのようなジオメトリを作成するのではなく、それらを含む CSV ファイルを生成して、テーブル アセットにアップロードします。
ee.Image.clip() と ee.Filter.bounds() の違いは何ですか?
こちらの GIS Stack Exchange スレッドをご覧ください。ee.Image.clip() 関数は、指定された ee.Geometry または ee.Feature と交差しないピクセルをマスクアウトし、可視化で透明にして、計算から除外します。これは、画像からピクセルを切り取るという概念で捉えることができます。
ee.Filter.bounds() 関数は、ee.Geometry または ee.Feature との画像の交差に基づいて、ee.ImageCollection から ee.Image オブジェクトをフィルタします。これは、分析の範囲を特定のリージョンと交差する画像のみに制限するために使用されます。これにより、式の最適化に役立ちます。
画像のピクセルを、1 ピクセルあたり 1 つのフィーチャーを持つフィーチャー コレクションに変換するにはどうすればよいですか?
ee.Image.sample() 関数を使用します。関数の API リファレンス ページで使用例をご覧ください。
ee.ImageCollection.merge() と ee.ImageCollection.combine() の違いは何ですか?
ee.ImageCollection.merge() 関数は、それぞれの画像に一致するバンド、メタデータ、CRS、スケールがあるかどうかに関係なく、2 つのコレクションのすべての画像を 1 つのコレクションに統合します。これは 2 つのコレクションの結合です。combine() メソッドは、2 つのコレクションから一致する画像のバンドを 1 つのコレクションに結合します。一致する画像は同じ ID(system:index プロパティ)を共有します。これは、画像 ID に基づく 2 つのコレクションの内部結合であり、一致する画像のバンドが結合されます。一致する画像の場合、セカンダリ画像のバンドがプライマリ画像に追加されます(上書きは任意)。一致する画像がない場合は、空のコレクションが返されます。
複数の日付間隔で画像コレクションをフィルタするにはどうすればよいですか?
こちらの GIS Stack Exchange スレッドをご覧ください。複数のコレクションを merge() で結合するか、ee.Filter.or() を使用します。
特定の地点の周囲に境界ボックスを作成するにはどうすればよいですか?
// Buffer the point by a chosen radius and then get the bounding box.
var LNG = -117.298;
var LAT = 45.162;
var point = ee.Geometry.Point([LNG, LAT]);
var buffer = point.buffer(30000); // half of box width as buffer input
var box = buffer.bounds(); // draw a bounding box around the buffered point
Map.centerObject(box);
Map.addLayer(point);
Map.addLayer(box);
// Map the buffer and bounds procedure over a point feature collection.
var pointCol = ee.FeatureCollection([
ee.Feature(ee.Geometry.Point([LNG + 1, LAT])),
ee.Feature(ee.Geometry.Point([LNG - 1, LAT]))
]);
var boxCol = pointCol.map(function(feature) {
var box = feature.buffer(30000).bounds();
return feature.setGeometry(box.geometry());
});
Map.addLayer(boxCol);
Data Catalog
データセット X を追加できますか?
データセット リクエスト ガイドに沿って、データセット リクエストのバグを報告します。
Earth Engine のホームフォルダにデータをアップロードすることもできます。ラスターデータのインポートとテーブルデータのインポートをご覧ください。
既存のデータセットに新しいバージョンがある
データセット リクエスト ガイドに沿ってデータセットのバグを報告し、データセットの更新をリクエストしていることを示します。
既存のデータセットが更新されていないか、アセットが不足している
問題を報告する前に、選択したアセットがデータセット プロバイダのサイトに実際に存在することを確認してください(可能な場合)。詳細については、欠落している画像に関するガイドをご覧ください。
ImageCollection をフィルタしてアセットを探している場合は、フィルタが過度に制限されていないことを確認してください。
特に、次の点に注意してください。
Sentinel-2 SR(レベル 2 データ)は、初期のレベル 1 シーンでは ESA によって生成されませんでした。
Landsat は 2000 年以前は世界中をカバーしていません。
既存のデータセットに誤った値が含まれている
デベロッパー フォーラムに投稿する。アセットの元の解像度にズームインし、どの値が間違っているかを明確にするスクリプトを含めます。代替値が確認された場所を正確に説明します。
データセットについて他に質問できる場所はありますか?
NASA データセットに関する質問については、NASA Earth Data フォーラムをご覧ください。
Copernicus データセットで動作するツールボックスに関する質問については、S1、S2、S3 のフォーラムをご覧ください。
EE カタログのサイズはどのくらいですか?
2023 年 10 月の時点で、カタログには 1, 000 を超えるデータセットが含まれています。ディスク上のサイズは 90 ペタバイトを超えています(可逆圧縮を考慮した後)。
EE のデータはどのくらいの頻度で更新されますか?
通常、進行中のすべてのデータセットは少なくとも毎日更新されます(ただし、すべてのデータセットに毎日新しいデータがあるわけではありません)。一部のデータセットは 1 日に数回更新されます。ただし、カタログに最新のアセットが存在することを保証するポリシーはありません。
EE カタログの内容をプログラムで表示するにはどうすればよいですか?
データセットのリストは、STAC 形式で Google Cloud Storage バケット gs://earthengine-stac にエクスポートされます。エントリ ファイルは catalog.json です。
Google マップのデータや画像を分析に使用できますか?
Google は、分析用のベースマップ データのライセンス供与や販売を行っていません。
アセットが取り込まれた日付を確認するにはどうすればよいですか?
'system:version' アセット プロパティは、取り込みタイムスタンプです。Unix エポックからのマイクロ秒数としてフォーマットされます。次の例では、Landsat 画像の取り込みタイムスタンプを人が読める形式に変換します。
var image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508');
print('Ingest date', ee.Date(image.getNumber('system:version').divide(1000)));
Earth Engine カタログには JSON-LD メタデータがありますか?
はい。JSON-LD メタデータはカタログの HTML ページに埋め込まれています。たとえば、Sentinel-2 ページには次のブロックが含まれています。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Earth Engine Data Catalog",
"item": "https://developers.google.com/earth-engine/datasets"
},{
"@type": "ListItem",
"position": 2,
"name": "Harmonized Sentinel-2 MSI: MultiSpectral Instrument, Level-1C",
"item": "https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_HARMONIZED"
}]
}
</script>
Landsat
simpleComposite アルゴリズムはどのように実装されていますか?
サーバーサイドの実装は、こちらの JavaScript コードと同等です。
Landsat の地表反射率データから雲のないコンポジットを作成するにはどうすればよいですか?
Landsat レベル 2(地表反射率)データには、雲やその他の不要な画像アーティファクトをマスクするために使用できる品質バンドがいくつかあります。これらのバンドを使用して Landsat 8 SR 画像を処理し、中央値の雲のないコンポジットを作成する例については、こちらの GIS Stack Exchange の投稿をご覧ください。同じ手順を使用して、デベロッパー ガイドの教師あり分類の例で使用する雲のないコンポジットを構築します。
センサー間の Landsat 地表面反射率の調和は必要ですか?
Roy et al., 2016 には、Landsat 7-8 TOA と地表反射率の反射率の違いの分析が含まれています。OLS 係数と RMA 係数が公開されているため、読者はあるセンサーのデータの反射率値を別のセンサーのデータに変換できます。この論文の最後の行には、「センサーの違いは非常に小さいものの、Landsat データの用途によっては大きな影響を与える可能性があります」と記載されています。ただし、この分析は収集前のデータに基づいています。
コレクション 1 とコレクション 2 の再処理中に行われた改善は、センサー間の関係に影響を与える可能性がありますが、Google が知る限り、コレクション 1 またはコレクション 2 のデータについて、Roy et al.(2016)と同様の分析は行われていません。正式な分析は行われていませんが、影響力のある Landsat ユーザーの間では、コレクション 2、レベル 2(地表反射率)データに補正は必要ないという一般的なコンセンサスがあるようです。たとえば、Collection 2、Level 2 の調和の必要性に関する質問への回答で、Landsat Science Team の Mike Wulder 氏は、関心のあるアプリケーションの性質(土地被覆マッピングや変化検出など)によっては、Collection 2 の地表反射率プロダクトは非常に適しており、信頼性が高く、センサー間の調整は必要ないと述べています。
MSS 画像で雲と雲の影をマスクするにはどうすればよいですか?
JavaScript コードエディタ用のサードパーティの msslib モジュールには、MSScvm アルゴリズムの実装と、MSS データの探索と準備に役立つその他の関数が含まれています。
データ マネジメント
アップロードしたデータの所有者は誰ですか?
Earth Engine の利用規約に基づき、お客様は Earth Engine にアップロードしたデータを所有します。
データをアップロードできない
コードエディタの右上にある [Tasks] ペインで、アップロード タスクのステータスを確認します。専用のタスクページを表示することもできます。
タスクがない場合は、コードエディタからファイルをアップロードしようとしたものの、ネットワークの問題によりファイルのアップロードが完了せず、タスクが作成されなかった可能性があります。別のブラウザまたは別のパソコンを使用してみます。
失敗したタスクがある場合は、表示されるエラーを調べます。特定のエラー メッセージが表示されない場合は、まず、ラスタ ファイルの場合は gdalinfo、ベクタ ファイルの場合は ogr2ogr を実行して、ファイルが破損していないことを確認します。これらのコマンドは、ソースファイルからすべてのデータを読み取ろうとし、ファイルが破損している場合はエラーを表示します。
gdalinfo 呼び出しの例:
gdalinfo -mm -stats -checksum file.tif
in.shp を out.csv に変換する ogr2ogr 呼び出しの例:
ogr2ogr -lco GEOMETRY=AS_WKT -f CSV out.csv in.shp
ファイルが有効な場合は、失敗したタスク ID をテキスト(スクリーンショットではなく)としてデベロッパー メーリング リストに投稿してください。タスク ID の形式は 4C25GIJBMB52PXTEJTF4JLGL です。可能であれば、ソースファイルを一般公開します。非公開ファイルの場合は、Earth Engine チームに調査を依頼する場合にのみ、earthengine@google.com と共有してください。ソースファイルを共有できない場合は、少なくとも gdalinfo -mm -stats -checksum の出力を提供してください。
Earth Engine が特定の投影法をサポートしていない場合は、gdalwarp などを使用して、アップロードする前にデータを再投影する必要があります。
NetCDF などのサポートされていないラスター形式のファイルをアップロードするにはどうすればよいですか?
Earth Engine にアップロードできるのは GeoTIFF のみです。GDAL 互換の他の形式は、gdal_translate を使用して GeoTIFF に変換できます。例:
gdal_translate -co COMPRESS=DEFLATE file.nc file.tif
一部の NetCDF ファイルまたは HDF ファイルは、gdalinfo で検出できる複数のサブ データセットで構成されています。この場合の gdal_translate コマンドは次のようになります(二重引用符の間のパスに注意してください)。
gdal_translate HDF4_EOS:EOS_GRID:"/tmp/MCD12Q1.A2001001.h00v08.005.2011055224312.hdf":MOD12Q1:Land_Cover_Type_1 file.tif
NetCDF ファイルには、GDAL が認識する投影法が含まれていないことがあります。この場合、gdal_translate コマンドラインで投影法と空間範囲を設定する必要があります。例:
gdal_translate -a_srs EPSG:4326 -a_ullr -180 90 180 -90 file.nc file.tid
アップロードした GeoTIFF に使用できる圧縮アルゴリズムを教えてください。
アップロードする場合、GeoTIFF は DEFLATE、JPEG、JPEG-XL/JXL、LERC、LERC_DEFLATE、LERC_ZSTD、LZMA、LZW、WEBP、ZSTD で圧縮できます。Earth Engine がその場で読み取る COG(ee.Image.loadGeoTIFF() または COG ベースのアセット)は、DEFLATE、JPEG、LZW、PACKBITS、ZSTD、または圧縮なしを使用できます(COG のベスト プラクティスをご覧ください)。ZSTD は、ほとんどのイメージを適切に圧縮しながら、迅速に解凍できるため、全体的に優れた選択肢です。
gdal_translate の使用時に ZSTD 圧縮を適用するには、次のオプションを追加します。データに浮動小数点値がある場合は、PREDICTOR を 3 に変更します。(アップロードせずに COG として登録するファイルについては、COG 登録ガイドをご覧ください)。
gdal_translate in.tif out.tif \
-co BIGTIFF=YES \
-co TILED=YES \
-co BLOCKXSIZE=512 \
-co BLOCKYSIZE=512 \
-co COMPRESS=ZSTD \
-co PREDICTOR=2 \
-co ZSTD_LEVEL=16 \
-co INTERLEAVE=BAND \
-co NUM_THREADS=ALL_CPUS
ラスターの取り込みが数日間実行されていますが、完了しません。
gdalinfo を使用して、ファイルに GDAL オプション INTERLEAVE=PIXEL が設定されているかどうかを確認します。このオプションが指定され、バンド数が多いファイルの場合、そのようなファイルのレイアウトでは読み取りが非常に遅くなるため、取り込みが完了しない可能性があります。
アップロードする前に、このようなファイルをバンド インターリーブ レイアウトに変換してみてください。
gdal_translate -co "INTERLEAVE=BAND" src.tif dst.tif
これは取り込みに適用されます。COG を基盤とするアセットは、両方のインターリーブをサポートしています(シングルバンド ファイルとマルチバンド ファイルをご覧ください)。
アップロードしたラスターがベースマップと一致しません。
データがベースマップからわずかにずれている場合は、投影法に誤った測地系(地球の形状に関する仮定)が使用されている可能性があります。これは、GDAL メタデータで完全にエンコードできない正弦波投影でよく発生します。ターゲットの投影がわかっている場合(MODIS 正弦波投影を使用するファイルの SR-ORG:6974 など)、コマンドライン アップロード中に --crs フラグを設定するか、アップロード マニフェストの crs フィールドを設定します。
データが著しく歪んでいる場合や、完全に間違った場所にある場合は、投影またはアフィン変換が間違っている可能性があります。
ラスタが東半球にしか表示されません。
経度範囲 [0, 360] にまたがるグローバル ラスターをアップロードした可能性があります。ただし、Earth Engine では、ラスターが [-180, 180] の範囲内にある必要があります。取り込み前に、ラスターの左半分と右半分を入れ替えます。 GIS Stack Exchange の提案をご覧ください。
取り込まれた分類画像が斑点状に見えるのはなぜですか?
デフォルトの MEAN
ピラミッド ポリシーを使用した可能性があります。分類画像には MODE ピラミッド ポリシーを使用する必要があります。QA / ビットマスク画像には SAMPLE ピラミッド ポリシーを使用する必要があります。
次のエラーが表示されます。データ値 -128.0 を Short<0, 255> 型のバンド #0 に適用できません。
GDAL は、シングルバイト バンドに符号付き整数が含まれているものとして扱うことができないため、このようなバンドを符号なし整数として読み取ります。これは、負のデータなし値と競合します。
値が実際に符号付き整数の場合は、マニフェスト アップロードを使用し、ファイルを含むタイルセット セクションに data_type: "INT8" を追加します。
値が符号なし整数の場合、ファイルに無効な nodata 値が含まれています。アップロード時に、正しいデータ値(または、存在する場合は発生しない値)でオーバーライドできます。gdal_translate -a_nodata を使用して nodata 値を変更したり、gdal_edit.py -unsetnodata を使用して削除したりすることもできます。
GeoJSON などのサポートされていないベクター形式のファイルをアップロードするにはどうすればよいですか?
ogr2ogr を使用して、OGR 互換性のある形式を CSV または SHP に変換します。例:
or2ogr -f "ESRI Shapefile" file.shp file.kml
CSV アップロードでは、ジオメトリ列に GeoJSON を含めることができます。
Python を使用してデータをアップロードするか、一度に多数のファイルをアップロードしたい。
コマンドライン アップロードを使用します。このようなアップロードでは、まずソースファイルを GCS(Google Cloud Storage)バケットに配置する必要があります。GCS の使用量は、無料枠の上限を超えない限り、費用はかかりません。料金ページをご覧ください。
多数のタイルに分割された大きなラスター モザイクをアップロードしたい。
すべてのファイルの投影法とピクセルサイズが同じ場合は、同じアセットにまとめてアップロードするだけで、自動的にモザイク処理されます。
ファイルの投影法やピクセルサイズが異なる場合、それらを 1 つのラスター アセットにモザイク化することはできません。代わりに、各タイルを別々のアセットとして同じ ImageCollection にアップロードします。これは、ImageCollection.mosaic() を使用してモザイク化できます。
モザイクをアップロードしようとすると、タイルが一致しないというエラーが表示されます。
Earth Engine ラスター モザイクのタイルは、同じ投影法とピクセルサイズにする必要があります。また、タイルはピクセル境界に正確に揃える必要があります。
GCS バケットからファイルをアップロードしようとしていますが、Earth Engine でファイルが見つかりません。
GCS へのアップロードと Earth Engine への接続に、異なる Google アカウントを使用している可能性があります。GCS ファイルが、Earth Engine への接続に使用するアカウントで読み取り可能であることを確認します。ブラウザのマルチログインが原因で混乱が生じる場合は、シークレット ブラウザ ウィンドウで Earth Engine に接続します。
多くのアセットを一度にエクスポートしたい。
各画像を個別にエクスポートする必要があります。
1 つのコマンドで Folder または ImageCollection を移動または削除したい。
earthengine rm -r は、フォルダまたはコレクションとその中のすべてのものを削除しますが、一度に 1 つのアセットを削除するため、大規模なコレクションでは数時間かかることがあります。処理を高速化するには、スクリプトから子を並列で削除してから、親を削除します(大規模なコレクションの操作をご覧ください)。同じアプローチは、フラットなコレクションやフォルダでも機能します。他のフォルダやコレクションを含むフォルダは、空になるまで削除できないため、下から上に空にする必要があります。移動するには、同じように mv を使用します。
EE の外部から Earth Engine データに直接アクセスしたい。
QGIS には Earth Engine プラグインがあります。
GDAL には Earth Engine ドライバがあります。
他のシステムでは、EE REST API を使用できます。
Earth Engine アセットの一部を完全に再取り込みせずに更新したい。
EE にアップロードされたラスターデータまたはベクターデータを更新することはできません。更新できるのは、アセットのメタデータ プロパティのみです。例外は COG を基盤とするアセットです。上書きを有効にして再登録することで、更新された Cloud Storage ファイルを指すことができます。
アカウントにアクセスできなくなっています。アセットはどうすればよいですか?
元のアカウントのポリシーでデータ移転が許可されている場合は、アセットを別のアカウントと共有し、新しいアカウントが所有するアセットをコピーしてください。移動するアセットが多数ある場合は、コマンドライン コピー ユーティリティを使用します。
アカウントが削除されると、そのアカウントが所有するアセットにアクセスできなくなります。
エクスポートしたイメージが間違った場所にある。
正弦曲線や円錐などの一部の投影法では、GeoTIFF ファイルに必要な投影パラメータをすべて保存できないことがあります。その結果、エクスポートされたファイルが、デスクトップ GIS ツールで表示されたとき、または EE に再取り込みされたときに、間違った場所に表示されます。
これを修正するには、GeoTIFF ファイルで適切に機能することがわかっているエクスポート crs パラメータを指定します。たとえば、対象エリアを含む UTM ゾーンの EPSG コードを使用します。
エクスポートされた特徴コレクション アセットに、設定したプロパティが保持されない。
Export.table.* 関数は、出力でテーブルレベルのプロパティを保持しません。多くの出力形式(CSV、GeoJSON など)では、このようなメタデータはサポートされていません。Export.table.toAsset 関数はテーブルレベルのプロパティをサポートできますが、現時点ではサポートしていません。
CSV 形式でドライブにエクスポートされたテーブルは、XLSX 形式に変換されます。
Google ドライブの設定によっては、Earth Engine からエクスポートした CSV テーブルが XLSX ファイルに変換され、データ型の変換など、意図しない影響が生じることがあります。以降のエクスポートの動作を変更する手順は次のとおりです。
- ウェブ上の Google ドライブで、右上の設定アイコンをクリックします。
- [設定] をクリックします。
- [アップロードしたファイルを Google ドキュメント エディタ形式に変換する] までスクロールし、チェックボックスをオフにします。
Cloud Optimized GeoTIFF(COG)
背景情報については、COG の概要と COG 登録ガイドをご覧ください。
COG を利用したアセットを共有しましたが、共同編集者に権限エラーが表示されます。
COG を基盤とするアセットは、Cloud Storage バケット内のファイルへのポインタであるため、共同編集者は Earth Engine アセットとバケットの両方に対する読み取りアクセス権が必要です。バケットに対して、Storage オブジェクト閲覧者ロールと Storage バケット閲覧者ロールを付与します。通常、表示可能なアセットで権限エラーが発生する場合は、この 2 つのロールのいずれかが不足していることを意味します。権限を構成するをご覧ください。
COG アセットを保存するには、どの Cloud Storage バケットのロケーションを使用すればよいですか?
サポートされているのは米国の数か所のロケーションのみで、Earth Engine はそれ以外の場所にあるバケットの登録リクエストと読み取りリクエストを拒否します。サポートされているバケットのロケーションをご覧ください。
Cloud Storage の COG ファイルを置き換えました。アセットの読み込みに失敗したり、古いデータが表示されたりするのはなぜですか?
COG を登録すると、Earth Engine はファイルのオブジェクト生成(バージョン)を固定するため、ファイルを上書きしてもアセットは更新されません。同じ名前でアセットを再登録し、上書きを有効にします。最初に削除する必要はありません。COG でサポートされているアセットの更新、置換、削除をご覧ください。
COG を基盤とするアセットが参照しているファイルのバージョンを確認するにはどうすればよいですか?
アセットのメタデータ(ee.data.getAsset())には、固定された世代がファイルの URI のサフィックスとして表示されます。オブジェクトの世代をご覧ください。
Cloud Storage の COG ファイルを削除して Earth Engine アセットを削除しなかった場合、またはその逆の場合はどうなりますか?
これらは独立しています。Earth Engine アセットを削除しても、Cloud Storage 内のファイルはそのまま残ります。ファイルを削除しても、アセットはそのまま残りますが、通常はピクセルが読み取れなくなります。独立したライフサイクルをご覧ください。
COG を基盤とする大規模な ImageCollection を削除または置換する最も速い方法は何ですか?
Earth Engine API にはバッチ削除や再帰削除はありません。earthengine rm -r は一度に 1 つのアセットを削除します。画像を置き換える場合は、削除するのではなく、上書きを有効にして再登録します。削除する場合は、スクリプトから並列化します。アプローチとスクリプトについては、大規模なコレクションの操作をご覧ください。
COG 登録が [タスク] タブに表示されないのはなぜですか?
COG の登録は、ファイルのメタデータのみをインデックスに登録する同期 API 呼び出しであり、バッチ取り込みジョブではないため、タスクは作成されません。呼び出しが返されるとすぐに、[アセット] タブでアセットを使用できるようになります。登録リクエストを送信するをご覧ください。
複数の COG ファイルを 1 つの Earth Engine アセットに結合できますか?
各ファイルに同じシーンの異なるバンドが含まれている場合のみ、マニフェストで各ファイルを独自のタイルセットとしてリストし、バンドをタイルセットにマッピングします。空間的に隣接するファイルを 1 つの COG ベースのアセットにモザイク化することはできません。各ファイルを ee.ImageCollection の独自の画像として登録し、mosaic() を呼び出します。マニフェストの制限をご覧ください。
COG を基盤とするアセットで使用できる圧縮スキーム、タイルサイズ、ピクセルタイプ
サポートされている圧縮スキーム、タイルサイズ、ピクセルデータ型については、外部 COG を準備するためのベスト プラクティスをご覧ください。Earth Engine が COG として直接読み取ることができない圧縮形式のファイルは、標準アセットとしてアップロードできます。
「TIFF のメタデータを最初の 10,000,000 バイトで読み取ることができませんでした」というエラーが表示されます。
Earth Engine は、ファイルの読み込みまたは登録時にファイルの先頭のみを読み取ります。多くのタイルを含む大きな画像や切り捨てられたファイルは、この制限を超えます。上限と上限を超えないようにする方法については、ファイル ディメンションの選択をご覧ください。
ファイルが変更された場合、ee.Image.loadGeoTIFF() と登録済みアセットの違いは何ですか?
ee.Image.loadGeoTIFF() は、各計算またはマップタイル リクエストで最新のファイル バージョンを読み取るため、置換をピックアップします(レンダリングされたマップタイルはキャッシュに保存されるため、マップ上で不均一になります)。登録済みアセットは、登録された世代を常に固定します。新しいファイルを表示するには再登録する必要がありますが、その代わりにフットプリントとメタデータがインデックスに登録されるため、大規模なコレクションで使用できます。Cloud Storage からの COG の読み取りをご覧ください。
コードエディタ
間違ったアカウントを使用するように求められるため、コードエディタにログインできません。
ログアウトし、[アカウントの選択] ページで Earth Engine の使用に登録されているアカウントを選択します。次に、2 番目の [アカウントを選択して Earth Engine コードエディタに進む] ページで同じアカウントを再度選択します(正確な文言は異なる場合があります)。
世界地図のスクリーンショットを撮りたいのですが、ウェブ メルカトル図法は好きではありません。
コードエディタで使用される地図投影法は、Web Mercator(「EPSG:3857」)です。赤道から離れたオブジェクトのサイズが拡大されるため、高緯度地域は赤道付近の地域に比べて実際よりもはるかに大きく表示されます。コードエディタの地図キャンバスの投影法を変更することはできませんが、ee.Image.changeProj メソッドを使用して、選択した投影法の画像をウェブ メルカトル キャンバスに「ペイント」できます。ロビンソン図法でコードエディタの地図にグローバル DEM を表示する例については、メソッドの API リファレンス ページをご覧ください。この手法は可視化のみを目的として使用してください。コードエディタのインスペクタと描画ツールは、引き続き Web メルカトルで動作します。
スクリプトが保存されない(Script error: Unknown commit)。
スクリプトの保存時に Script error: Unknown commit メッセージが表示された場合は、保存先のレポジトリが同期されていない可能性があります。この状態の原因はさまざまで、特定が困難です。この問題を解決するには、[スクリプト] タブの右上にあるボタンを使用して、スクリプト リストを更新してみてください。それでも問題が解決しない場合は、[スクリプト] タブの [新規] ボタンから新しいリポジトリを作成し、そこにスクリプトを保存してみてください(同期されていないリポジトリから新しいリポジトリにスクリプトを移動する必要がある場合があります)。
コードエディタで 400 エラーが繰り返し表示されるのはなぜですか?
コードエディタで 400 エラーが繰り返し表示される場合は、https://myaccount.google.com/connections に移動し、アプリとサービスのリストで「Earth Engine コードエディタ」を見つけて選択し、[Earth Engine コードエディタとのすべての接続を削除する] を選択して確定します。次に、コードエディタを開いて再認証します。
削除したスクリプトとフォルダを復元するにはどうすればよいですか?
既存のリポジトリ内のスクリプトまたはフォルダを誤って削除した場合でも、完全な commit 履歴は Google のサーバーの Git ログに保存されます。削除されたスクリプトやフォルダを復元するには、標準の Git コマンドライン ツールを使用してリポジトリをローカルにクローンします。
ただし、リポジトリ(users/username/repository)全体を削除すると、リポジトリとその commit 履歴が earthengine.googlesource.com から完全に削除され、元に戻すことも復元することもできません。
Git 認証情報の生成、リポジトリのクローン作成、削除されたファイルまたはフォルダの復元の手順については、スクリプトの復元とリポジトリの移行のガイドをご覧ください。
スクリプト リポジトリのルートの名前を変更するにはどうすればよいですか?
スクリプトのルート ディレクトリ(users/username)は、元の Earth Engine アカウントの登録にバインドされています。require('users/username/repository:...') パスを使用してモジュラー コードをインポートする外部スクリプトや共同編集者プロジェクトが破損するため、バックエンドで直接名前を変更することはできません。
新しい Namespace が必要な場合は、サポートされている回避策として、作業を新しいアカウントに移行します。
- 新しい Google Identity を使用して新しい Earth Engine アカウントを登録します(これにより、クリーンな
users/new_usernameルートが生成されます)。 - リポジトリの移行手順に沿って、古いリポジトリのクローンを作成し、その完全な履歴を新しい空のリポジトリに push します。
重要な考慮事項:
- 公開モジュール: 他のユーザーが依存している公開モジュールがある場合は、ワークフローが中断されないように、古いアカウントとリポジトリを有効にしておくことを強くおすすめします。
- 非公開スクリプト: スクリプトが完全に非公開の場合は、
require()インポート ステートメントを更新して新しいリポジトリパスを参照し、古いリポジトリを安全に削除できます。