Python のインストール - Colab ノートブック

Earth Engine Python API は、Google Colaboratory ノートブックでデプロイできます。Colab ノートブックは、クラウドで実行される Jupyter ノートブックです。Google ドライブと高度に統合されているため、セットアップ、アクセス、共有が簡単です。Google Colab または Jupyter ノートブックに慣れていない場合は、Colab のウェルカムサイトをご確認ください。

以降のセクションでは、Google Colab に Earth Engine をデプロイし、サードパーティの Python パッケージを使用して地図とグラフを可視化する方法について説明します。

Colab ノートブックを開く

ノートブックは、Google ドライブまたは Colaboratory インターフェースから開くことができます。

新しいノートブック

Google ドライブ

Google ドライブを開き、新しいファイルを作成します。

  • [新規] > [その他] > [Colaboratory]
  • フォルダを右クリックし、コンテキスト メニューから [その他 > Colaboratory] を選択します。

Colab インターフェース

Colab サイトにアクセスして、新しいファイルを作成します。

  • [File] > [New] > [New Python 3 notebook]
  • 以前に Colab を使用したことがあれば、上記のリンク先のサイトにアクセスすると、ファイル エクスプローラが表示されます。ウィンドウの下部にあるプルダウン メニューを使用して、新しいファイルを作成できます。

既存のノートブック

既存のノートブック ファイル(.ipynb)は、Google ドライブと Colab インターフェースから開くことができます。

Google ドライブ

Colab ノートブックは、ノートブック ファイルの作成場所に応じて、Google ドライブのさまざまなフォルダに存在する場合があります。Google ドライブで作成されたノートブックは、作成または移動されたフォルダに存在します。Colab インターフェースから作成されたノートブックは、デフォルトで [Colab Notebooks] というフォルダに保存されます。このフォルダは、Colab の使用を開始すると Google ドライブの [マイ ドライブ] フォルダに自動的に追加されます。

Colab ファイルは、黄色の「CO」記号と「.ipynb」ファイル拡張子で識別できます。ファイルを開くには、ファイルをダブルクリックして、表示されたページの上部にあるボタンから [Open with > Colaboratory] を選択するか、ファイルを右クリックして、ファイルのコンテキスト メニューから [Open with > Colaboratory] を選択します。

Colab インターフェース

Colab インターフェースからノートブックを開くと、Google ドライブ、GitHub、ローカル ハードウェアの既存のファイルにアクセスできます。初回使用後に Colab インターフェースにアクセスすると、ファイル エクスプローラのモーダルが表示されます。ファイル エクスプローラの上部にあるタブからソースを選択し、開く .ipynb ファイルに移動します。ファイル エクスプローラには、Colab インターフェースから [ファイル] > [ノートブックを開く] を選択するか、Ctrl+O キーボード ショートカットを使用してアクセスすることもできます。

API をインポートして認証情報を取得する

このセクションでは、Earth Engine Python API をインポートしてアクセスを認証する方法について説明します。このコンテンツは、Colab ノートブックとしても利用できます。

Earth Engine API は Google Colaboratory にデフォルトで含まれているため、インポートと認証のみが必要です。これらの手順は、新しい Colab セッションごとに、または Colab カーネルを再起動した場合、または Colab 仮想マシンが非アクティブ状態のためにリサイクルされた場合に完了する必要があります。

API をインポートする

次のセルを実行して、API をセッションにインポートします。

import ee

認証と初期化

ee.Authenticate 関数を実行して Earth Engine サーバーへのアクセスを認証し、ee.Initialize を実行して初期化します。コードセルを追加し、次の行を入力してプロジェクトを編集し、セルを実行します。

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the library.
ee.Initialize(project='my-project')

Earth Engine アカウントへのアクセスを承認するよう求められます。セルに印刷されている手順に沿って、この手順を完了します。

API をテストする

エベレストの標高を印刷して、API をテストします。API を使用する前に、API を初期化する必要があります。新しいセルで次の Python スクリプトを実行します。

# Print the elevation of Mount Everest.
dem = ee.Image('USGS/SRTMGL1_003')
xy = ee.Geometry.Point([86.9250, 27.9881])
elev = dem.sample(xy, 30).first().get('elevation').getInfo()
print('Mount Everest elevation (m):', elev)

地図の可視化

ee.Image オブジェクトはノートブックの出力セルに表示できます。次の 2 つの例は、静的画像とインタラクティブな地図を表示する方法を示しています。

静止画像

IPython.display モジュールには Image 関数が含まれています。この関数は、Earth Engine の getThumbUrl 関数の呼び出しから生成された画像を表す URL の結果を表示できます。次のスクリプトでは、グローバルな地形モデルのサムネイルを表示します。

# Import libraries.
import ee
from IPython.display import Image

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the library.
ee.Initialize(project='my-project')

# Import a DEM and display a thumbnail of it.
dem = ee.Image('USGS/SRTMGL1_003')
Image(url=dem.updateMask(dem.gt(0))
  .getThumbUrl({'min': 0, 'max': 4000, 'dimensions': 512,
                'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']}))

インタラクティブな地図

folium パッケージを使用すると、インタラクティブな Leaflet マップに ee.Image オブジェクトを表示できます。Folium には、Earth Engine のタイル処理のデフォルト メソッドがないため、使用前に定義して folium.Map モジュールに追加する必要があります。

次のスクリプトは、Earth Engine タイルを処理するメソッドを追加し、そのメソッドを使用して Leaflet 地図に標高モデルを表示する例を示しています。

# Import libraries.
import ee
import folium

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the library.
ee.Initialize(project='my-project')

# Define a method for displaying Earth Engine image tiles to folium map.
def add_ee_layer(self, ee_image_object, vis_params, name):
  map_id_dict = ee.Image(ee_image_object).getMapId(vis_params)
  folium.raster_layers.TileLayer(
    tiles = map_id_dict['tile_fetcher'].url_format,
    attr = "Map Data © Google Earth Engine",
    name = name,
    overlay = True,
    control = True
  ).add_to(self)

# Add EE drawing method to folium.
folium.Map.add_ee_layer = add_ee_layer

# Fetch an elevation model.
dem = ee.Image('USGS/SRTMGL1_003')
# Set visualization parameters.
vis_params = {
  'min': 0,
  'max': 4000,
  'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']}

# Create a folium map object.
my_map = folium.Map(location=[20, 0], zoom_start=3)

# Add the elevation model to the map object.
my_map.add_ee_layer(dem.updateMask(dem.gt(0)), vis_params, 'DEM')

# Add a layer control panel to the map.
my_map.add_child(folium.LayerControl())

# Display the map.
display(my_map)

グラフの可視化

一部の Earth Engine 関数は、matplotlib などのデータ ビジュアリゼーション パッケージでプロットできる表形式データを生成します。次の例は、Earth Engine の表形式データを散布図として表示する方法を示しています。詳細については、Colaboratory でのグラフ作成をご覧ください。

# Import libraries.
import ee
import matplotlib.pyplot as plt

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the Earth Engine module.
ee.Initialize(project='my-project')

# Fetch a Landsat TOA image.
img = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_034033_20000913')

# Select Red and NIR bands, scale them, and sample 500 points.
samp_fc = img.select(['B3','B4']).sample(scale=30, numPixels=500)

# Arrange the sample as a list of lists.
samp_dict = samp_fc.reduceColumns(ee.Reducer.toList().repeat(2), ['B3', 'B4'])
samp_list = ee.List(samp_dict.get('list'))

# Save server-side ee.List as a client-side Python list.
samp_data = samp_list.getInfo()

# Display a scatter plot of Red-NIR sample pairs using matplotlib.
plt.scatter(samp_data[0], samp_data[1], alpha=0.2)
plt.xlabel('Red', fontsize=12)
plt.ylabel('NIR', fontsize=12)
plt.show()