地図タイルのエクスポート

画像、動画、テーブル(ベクトルデータ)などの他の形式にエクスポートする方法については、データのエクスポートをご覧ください。

概要

オンライン地図に画像データ(ラスターデータ)を表示するには、Export.map.toCloudStorage() を使用して地図タイルをエクスポートします。この関数は、地図タイルのピラミッドを Cloud Storage バケットにエクスポートします。このバケットから、地図タイルを公開または非公開で提供できます。画像データが大きすぎて 1 つの画像としてオーバーレイできない場合に便利です。これらのタイルでは Google マップ タイル座標が使用され、Google Maps Platform(Maps API)、Google Earth for web、その他のマッピング プラットフォームでの表示に適しています。エクスポートの一部として提供される HTML ファイルを使用して、タイル群を Google マップまたは Google Earth で簡単にプレビューできます。

エクスポートには、タイルを使用する方法や公開方法に応じて、必要な設定や手順がいくつかあります。一部のマッピング プラットフォームでは、タイルが一般公開されている必要がありますが、一部のプラットフォームでは非公開タイルが使用できます。Google Maps API のいずれかを使用する場合は、Google Maps Platform API キーが必要になる可能性があります。Google Earth などのマッピング プラットフォームにタイルを提供する場合は、タイルの使用方法に応じて、適切なアクセスレベルと JS アクセス(CORS)オプションを設定する必要があります。必要な設定については、下記のプラットフォーム固有のガイドラインをご覧ください。

地図タイルから Cloud Storage へのエクスポート

次の例では、カリフォルニア州の地域の Landsat 画像からタイルをエクスポートします。

コードエディタ(JavaScript)

// --- Example Export Map Tiles - basic ---
// Specify area to clip/export, setup image and preview on map.
var exportRegion = ee.Geometry.BBox(-122.9, 37.1, -121.2, 38.2);
var landsatImage = ee.Image('LANDSAT/LC09/C02/T1_TOA/LC09_044034_20220111')
  .select(['B4', 'B3', 'B2'])
  .visualize({min: 0.02, max: 0.4, gamma: 1.2})
  .clip(exportRegion);
Map.addLayer(landsatImage, {}, 'landsatImage');
Map.centerObject(exportRegion);

// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForEE',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true
});

Python の設定

Python API とインタラクティブな開発で geemap を使用する方法については、 Python 環境のページをご覧ください。

import ee
import geemap.core as geemap

Colab(Python)

# --- Example Export Map Tiles - basic ---
# Specify area to clip/export, setup image and preview on map.
export_region = ee.Geometry.BBox(-122.9, 37.1, -121.2, 38.2)
landsat_image = (
    ee.Image('LANDSAT/LC09/C02/T1_TOA/LC09_044034_20220111')
    .select(['B4', 'B3', 'B2'])
    .visualize(min=0.02, max=0.4, gamma=1.2)
    .clip(export_region)
)
m = geemap.Map()
m.add_layer(landsat_image, {}, 'landsatImage')
m.center_object(export_region)
display(m)

# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForEE',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
)
task.start()

これにより、指定された Cloud Storage バケットに新しいディレクトリが作成されます。デフォルトでは、description パラメータに従って名前が付けられます。ディレクトリ名を変更したり、path パラメータでサブディレクトリを指定したりできます。出力ディレクトリの index.html ファイルと earth.html ファイルを使用して、マップまたは Earth でタイルをプレビューできます。

ACL と CORS オプション

上記の例では、タイルの ACL(アクセス制御リスト)を設定して、直接リクエストで一般公開できるようにしていますが、バケットの JS アクセス(CORS 設定)を設定して、ウェブアプリがアクセスできるようにしていません。つまり、これらのエクスポートされたタイルは、地図と Earth のプレビューで表示できますが、JS アクセスを必要とする他のプラットフォームでは使用できません。出力バケットのオーナーである必要があります。指定した出力バケットの書き込み者(オーナーではない)の場合は、writePublicTilesfalse に設定して、出力バケットのデフォルト オブジェクト ACL を使用します。

すべてのウェブアプリからタイルへの一般公開を許可する場合は、タスク パラメータに bucketCorsUris: ['*'] を追加します。サードパーティがタイルを使い、クラウド費用が発生するリスクがある場合は、完全な公開 JS アクセスが望ましくない場合があります。これを制限するには、JS アクセスを特定のドメインまたは URL のウェブアプリのみに制限します。JS アクセス(CORS)の設定は、フォルダレベルやオブジェクトレベルではなく、バケット全体に適用されます。

ACL と CORS は、それぞれ writePublicTiles パラメータと bucketCorsUris パラメータを使用して設定できます。また、以下に示すように、エクスポート タスク ダイアログから設定することもできます。

Export.map ダイアログ
Export.map.toCloudStorage() タスク ダイアログ。
  • 表示/ダウンロードのアクセス権。アクセスを許可する場合(Code Editor や Earth Engine アプリからアクセスする場合など)は、タイルを「一般公開」にする必要があります。
  • JS アクセス。地図をエクスポートするバケットは、Code Editor、Earth Engine Apps、または他のウェブアプリがタイルにアクセスできるように、読み取り可能にする必要があります。これらのクロスオリジン リクエスト設定(CORS)は、バケットレベルで構成する必要があります。便利なように、Earth Engine のエクスポート ダイアログでは、エクスポート時にバケットの CORS を構成できます。
  • 注: JS アクセス / CORS の設定は、フォルダレベルまたはオブジェクトレベルではなく、バケットレベルで適用されるため、設定を変更すると、バケット内のすべてのフォルダとオブジェクトの設定が更新されます。バケットの現在の CORS 構成の表示方法など、詳細については、 Cloud Storage CORS のドキュメントをご覧ください。

パラメータ リスト

以下に、地図タイルのエクスポート タスクのすべてのパラメータの一覧を示します。コード内のパラメータ名(引数)と、タスク ダイアログ内の対応するフィールド(該当する場合)を示します。一部のフィールドは相互に排他的です(maxzoom と scale など)。詳しくは、 Export.map のドキュメント をご覧ください。

コード内の引数 タスク ダイアログ内のフィールド メモ
画像 なし タイルとしてエクスポートする画像。ImageCollection ではなく Image である必要があります。
説明 Task name タスクの人間が読める形式の名前。デフォルトは「myExportMapTask」です。「path」(出力接頭辞)パラメータが指定されていない場合、これはタイルフォルダ名としても使用されます。
バケット GCS バケット名 書き込み先のバケット。
fileFormat ファイル形式 地図タイル ファイルの形式(「auto」、「png」、「jpg」のいずれか)。デフォルトは「auto」です。つまり、不透明なタイルは「jpg」としてエンコードされ、透明なタイルは「png」としてエンコードされます。
パス 出力接頭辞 出力のパスとして使用される文字列。末尾の「/」は省略可能です。デフォルトはタスクの説明(タスク名)です。
writePublicTiles アクセスレベルを表示/ダウンロードする バケットのデフォルトのオブジェクト ACL を使用する代わりに、公開タイルを書き込かどうか。デフォルトは true で、呼び出し元はバケットの OWNER です。
maxZoom 最大解像度と最大ズーム エクスポートする地図タイルの最大ズームレベル。
WAF によるメリット 最大解像度と最大スケール 「maxZoom」の代わりに、ピクセルあたりのメートル単位の最大画像解像度。スケールは、赤道で最も適切な最大ズームレベルに変換されます。
minZoom 最大解像度と最小ズーム エクスポートする地図タイルの最小ズームレベル(省略可)。デフォルトは 0 です。
地域 なし エクスポートする領域を表す LinearRing、Polygon、または座標。詳細については、ドキュメントをご覧ください。
skipEmptyTiles なし true の場合、空の(完全に透明な)地図タイルへの書き込みをスキップします。デフォルトは false です。
mapsApiKey Maps API キー index.html で Google Maps API を初期化するために使用されます。これにより、地図から「開発目的のみ」のメッセージが削除されます。
bucketCorsUris JS アクセスを追加する(許可するウェブサイトも追加) JavaScript(CORS)を介してエクスポートされたタイルを取得できるドメインのリスト(例: https://code.earthengine.google.com)。

スケールとズーム

上の例では、maxZoom13 に設定されています。ズームレベルは、世界地図を表示するために使用するピクセルのグリッドのサイズに対応しています。(詳しくは、 ピクセル座標リファレンス をご覧ください)。地球の曲率により、特定のズームレベルでのピクセルの解像度は緯度によって異なります。具体的には、1 ピクセルあたりのメートル数は cos(緯度) の係数で減少します。次の表に、Google メルカトル図法の赤道 における、各ズームレベルでの 1 ピクセルあたりのメートル数を示します。

ズーム レベル ピクセルサイズ(赤道) ズーム レベル ピクセルサイズ(赤道)
0 156 km 10 152 m
1 78 km 11 76 m
2 39 km 12 38 m
3 20 km 13 19 m
4 10 km 14 9.6 m
5 4.9 km 15 4.8 m
6 2.4 km 16 2.4 m
7 1.2 km 17 1.2 m
8 611 m 18 0.6 m
9 305 m 19 0.3 m
20 0.15 m

上の表から、例で設定した maxZoom は赤道で 19 メートルに相当し、緯度が高いほど小さくなることがわかります。これは、入力画像のピクセルあたりの解像度 30 秒未満です。その結果、出力 index.html に表示される地図は、ネイティブ解像度のピクセルが地図に表示されるまで拡大できます。地図の表示をネイティブ ピクセル解像度に制限するには、maxZoom をネイティブ解像度以下の値に設定します。



プラットフォーム固有のガイドライン

地図タイルを表示して使用できるプラットフォームは多数あります。以下にいくつかの例を示します。各セクションには、タイルがそのプラットフォームで機能するために必要な設定と、必要なパラメータを含むサンプルコードのコピーが示されています。

Earth Engine で地図タイルを使用する(コードエディタまたは EE アプリ)

Google Earth Engine または EE アプリで再利用する目的でのみ地図タイルをエクスポートする場合は、[アクセスレベル] を [公開アクセス] に設定し、[タスク] ダイアログで [JS アクセスレベル] を [Earth Engine アクセスを追加] または [公開アクセスを追加] に設定します。または、次のパラメータをコードで設定することもできます。

writePublicTiles: true,
bucketCorsUris: ['https://code.earthengine.google.com','https://*.earthengine.app']

タイルをエクスポートすると、Earth Engine でアクセスできるようになります。

コードエディタ(JavaScript)

// --- Export Map Tiles for use in EE ---
// Use image setup code from example at top of the page.
// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForEE',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true,
  bucketCorsUris: ['https://code.earthengine.google.com','https://*.earthengine.app']
});

Python の設定

Python API とインタラクティブな開発で geemap を使用する方法については、 Python 環境のページをご覧ください。

import ee
import geemap.core as geemap

Colab(Python)

# --- Export Map Tiles for use in EE ---
# Use image setup code from example at top of the page.
# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForEE',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
    bucketCorsUris=[
        'https://code.earthengine.google.com',
        'https://*.earthengine.app',
    ],
)
task.start()

Google マップ プレビューの表示

Google マップで地図タイルを確認するには、Google Cloud Storage の出力フォルダに移動し、ブラウザで「index.html」ファイルを開きます。これにより、Google Maps Platform Javascript API を使用して Google マップにタイルが表示されたフルページの地図が開きます(例: index.html)。基本的なエクスポートでは、ベースマップ タイルがグレー表示になり、「For Development Purposes Only」という透かしが付きます。これを回避して標準の Google ベースマップ タイルを表示するには、API キーを生成し、エクスポート設定に含めます。

エクスポート時に API キーを指定すると、このプレビュー ページは一般公開され、他のページに埋め込むことができます。また、閲覧者が登録済みの Earth Engine ユーザーである必要はありません。

コードエディタ(JavaScript)

// --- Export Map Tiles for use with Map Preview ---
// Use image setup code from example at top of the page.
// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForMapPreview',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true,
  mapsApiKey: 'fakeMapsApiKey012345' // replace with a valid API Key
});

Python の設定

Python API とインタラクティブな開発で geemap を使用する方法については、 Python 環境のページをご覧ください。

import ee
import geemap.core as geemap

Colab(Python)

# --- Export Map Tiles for use with Map Preview ---
# Use image setup code from example at top of the page.
# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForMapPreview',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
    mapsApiKey='fakeMapsApiKey012345',  # replace with a valid API Key
)
task.start()

Google Earth のプレビューを表示する

ウェブ上の Google Earth で地図タイルを確認するには、アクセスレベルを [一般公開] に設定してタイルのエクスポートを行います。次に、Google Cloud Storage の出力フォルダに移動し、ブラウザで「earth.html」ファイルを開きます(例: earth.html )。表示された [Google Earth で開く] ボタンをクリックします。Google Earth が開き、3D 地図にタイルが表示されます。また、「JS Access」レベルを [公開アクセス] に設定することもおすすめします。これにより、プレビュー ファイルなしで Google Earth でタイルを使用できるようになります(タイルに必要な JS Access/CORS 設定がない場合は、プロキシ サーバーが使用されます)。

データへのリンクを含む KML ファイルをダウンロードするには、Google Earth のその他アイコンをクリックし、[KML ファイルとしてエクスポート] を選択します。注: この方法で生成された KML ファイルは、Google Earth Pro(パソコン版の Earth)には対応していません。

コードエディタ(JavaScript)

// --- Export Map Tiles for use with Earth Preview ---
// Use image setup code from example at top of the page.
// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForEarthPreview',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true,
  bucketCorsUris: []  // leaving blank is ok for Earth Preview only
  // for direct use in Earth, set to: ['https://earth.google.com']
  // or set to public: ['*'] (risk of misuse)
});

Python の設定

Python API とインタラクティブな開発で geemap を使用する方法については、 Python 環境のページをご覧ください。

import ee
import geemap.core as geemap

Colab(Python)

# --- Export Map Tiles for use with Earth Preview ---
# Use image setup code from example at top of the page.
# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForEarthPreview',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
    bucketCorsUris=[],  # leaving blank is ok for Earth Preview only
    # for direct use in Earth, set to: ['https://earth.google.com']
    # or set to public: ['*'] (risk of misuse)
)
task.start()

Google Maps Platform(Maps API)を使用した公開

Google Maps Platform で一般公開する地図タイルセットを作成するには、API キーを取得または作成し、アクセスレベルが [一般公開] に設定されていることを確認する必要があります。Maps API アプリケーションがタイルにアクセスする方法によっては、サイトに適切な「JS Access Level」を設定する必要もあります。タイルをエクスポートすると、コードエディタの [タスク] タブの出力に、Google Maps API で使用できる適切な変数を含むタイルの URL が表示されます(例: https://storage.googleapis.com/my_bucket/my_test_tiles/{Z}/{X}/{Y} )。

コードエディタ(JavaScript)

// --- Export Map Tiles for use with Maps Platform APIs ---
// Use image setup code from example at top of the page.
// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForMapsPlatform',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true,
  bucketCorsUris: ['*'],  // '*' = All domains = risk of misuse
  // For better protection, specify the domain(s) where the
  // tiles will be used, eg: ['https://mysite.mydomain.com']
  mapsApiKey: 'fakeMapsApiKey012345' // replace with a valid API Key
});

Python の設定

Python API とインタラクティブな開発で geemap を使用する方法については、 Python 環境のページをご覧ください。

import ee
import geemap.core as geemap

Colab(Python)

# --- Export Map Tiles for use with Maps Platform APIs ---
# Use image setup code from example at top of the page.
# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForMapsPlatform',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
    bucketCorsUris=['*'],  # '*' = All domains = risk of misuse
    # For better protection, specify the domain(s) where the
    # tiles will be used, eg: ['https://mysite.mydomain.com']
    mapsApiKey='fakeMapsApiKey012345',  # replace with a valid API Key
)
task.start()

Google Earth(ウェブ用)への公開

Google Earth で一般公開する地図タイルセットを作成するには、アクセスレベルを [一般公開] に設定し、JS アクセスレベルを [https://earth.google.com](または [一般公開])に設定する必要があります。エクスポート後、エクスポート ディレクトリにある earth.html ファイルを使用して、Google Earth でプレビューできます(上記を参照)。

コードエディタ(JavaScript)

// --- Export Map Tiles for use with Google Earth web ---
// Use image setup code from example at top of the page.
// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForEarthWeb',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true,
  bucketCorsUris: ['https://earth.google.com']
  // ['*'] will also work, but risks misuse
});

Python の設定

Python API とインタラクティブな開発で geemap を使用する方法については、 Python 環境のページをご覧ください。

import ee
import geemap.core as geemap

Colab(Python)

# --- Export Map Tiles for use with Google Earth web ---
# Use image setup code from example at top of the page.
# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForEarthWeb',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
    bucketCorsUris=['https://earth.google.com'],
    # ['*'] will also work, but risks misuse
)
task.start()

タイルをエクスポートしたら、Google Earth ウェブのプロジェクトに追加できます。コードエディタの [タスク] タブ(下記を参照)の出力には、Google Earth で使用するための適切な変数を含むタイル URL が表示されます(例: https://storage.googleapis.com/my_bucket/my_test_tiles/$[level]/$[x]/$[y] )。

タイル エクスポート タスクから URL を出力する
タイル エクスポート タスクから URL を出力します。

これを Google Earth ウェブで使用するには、タイル オーバーレイ機能を作成し、この URL を [オーバーレイ URL] として追加します。データセットがグローバルではなく、存在しないタイルに対してタイル リクエスト エラーが発生しないようにするには、[オーバーレイ オプション] セクションを開き、エクスポートされたタイルの範囲に合わせて 4 つのタイル範囲パラメータを調整します。

Earth ウェブに表示される地図タイル
Earth ウェブに表示された地図タイル。

他のマッピング プラットフォームへの公開

他のプラットフォームやアプリケーションで使用するためにタイルをエクスポートする場合、必要な設定はタイルにアクセスする方法によって異なります。タイルをできるだけ広く公開するには、アクセスレベルを [公開アクセス] に設定し、JS アクセスレベルを [公開アクセス] に設定します。



Google Maps Platform API キーの生成

地図タイルを Google Maps Platform で使用する場合や、デベロッパー制限付きベースマップなしでマップ上でプレビューする場合は、 Google Maps Platform API キー を取得または生成し、エクスポート設定に含めるか、後でサイトに追加する必要があります。Google Earth で使用する場合は必要ありません。

Earth Engine から地図タイルをエクスポートすると、Google Maps Platform JavaScript API を使用してタイルをプレビューできるように、出力ディレクトリにサンプル HTML ページが生成されます。必要に応じて、エクスポート時に Google Maps Platform API キーを指定できます。このキーは、サンプル ビューアの API 呼び出しに使用されます。

Google Maps Platform API キーを生成するには、次の 4 つの手順を行います。

  • 下の [Google Maps Platform API キーを作成する] ボタンをクリックします。
  • API キーの Cloud プロジェクトを選択し、[次へ] をクリックします。
  • をクリックして新しいキーをコピーし、コードエディタの [Export map] ダイアログに貼り付けます。
  • (推奨)新しいキーの下にある [API Console] リンクをクリックして、リファラーの制限を設定します。詳しくは、参照元とアプリケーションの制限をご覧ください。

Map Platform API キーを作成する

プロジェクト名を入力 キーの準備完了

API キーにリファラーの制限を追加する

API キーを追加するときに、リファラーの制限を設定すると、指定したアプリのみがキーを使用できるようになります。参照元の制限は、いつでも Cloud コンソールの [認証情報] ページにアクセスして設定または編集できます。手順は次のとおりです。

  • 画面上部のプルダウンで、正しいプロジェクト名が選択されていることを確認します。
  • 上記で生成した Maps Platform API キーをクリックして、キーの詳細を表示します。
  • [HTTP リファラー(ウェブサイト)] を選択し、Export.map.toCloudStorage で指定した Cloud Storage バケットを次のテンプレートを使用して指定します。 https://storage.googleapis.com/{bucket}/*
  • [保存] をクリックします。[保存しています...] というインジケーターが表示されます。
リファラーを追加する