はじめに
この記事では、公開されている外部データ(Shapefile形式)をGoogle Earth Engine (GEE) に取り込み、地図上で特定の国だけをハイライト表示するまでの一連の手順について、初心者向けに解説します。
今回は外部データとして、信頼性の高いデータソースである世界銀行(World Bank)の公式行政境界データを使いました。
なぜ外部データをGEEにインポートするのか?
Google Earth Engine (GEE) のデータカタログには、LandsatやSentinelといった衛星画像から気象、地形データまで、膨大なデータセットが標準で用意されています。
しかし、実際の分析プロジェクトでは、以下のように外部データのインポートが必要となる場合があります。
-
独自の調査エリアや境界線を使いたい:
特定のプロジェクトサイトの境界、未公開の行政区画、独自に定義した研究エリアなど、標準データセットには含まれない領域を扱いたい場合。 -
GEEカタログにない特定のデータセットを利用したい:
世界銀行の公式行政境界データのように、特定の分析に不可欠でありながら、GEEの標準カタログには含まれていないデータを利用したい場合。 -
機密性の高い非公開データを取り扱いたい:
企業や研究機関が保有する、一般には公開されていない独自の地理空間データを分析基盤として利用したい場合。
上記のような場面で、外部データをGEEにインポートすることで、分析の自由度と精度が飛躍的に向上し、より目的に特化した高度な地理空間分析を実現できます。
この記事のゴール
本記事を通じて、以下の手順を理解・習得できます。
- 世界銀行の公式サイトから行政境界データ(Shapefile)をダウンロードする。
- ダウンロードしたShapefileをGEEにアップロードする。
- GEEのCode Editor上で、アップロードしたデータを読み込み、全世界の国境を地図に表示する。
- 特定の国(今回はスーダン)を属性情報でフィルタリングし、地図上でハイライト表示する。
使用データ:
- データソース:World Bank Official Boundaries
- 使用ファイル:World Bank Official Boundaries - Admin 0.zip
「Admin 0」は国境レベルの行政境界を意味します。このZipファイル内に、国境のポリゴンデータがShapefile形式で格納されています。
手順
手順1:地理データのダウンロード
まず、分析の元となる国境データを世界銀行のサイトからダウンロードします。
- 世界銀行のデータカタログにアクセスします。
- ページ内の「World Bank Official Boundaries (Shapefiles)」というリンクをクリックします。
3.遷移先のページで、再度「World Bank Official Boundaries (Shapefiles)」をクリックします。
4.ファイルリストの中から「World Bank Official Boundaries - Admin 0.zip」をクリックしてダウンロードします。
5.ダウンロードが完了したら、Zipファイルを解凍します。解凍後のフォルダには、.shp
,.shx
,.dbf
,.prj
といった拡張子のファイルが含まれていることを確認してください。これらはShapefileを構成する重要なファイル群です。
手順2:Google Earth Engineへのインポート
次に、ダウンロードしたShapefileをGEEにアップロードします。
- Google Earth Engine Code Editorを開きます。
- 画面左のパネルから [Assets] タブを選択し、[+ NEW] > [Shape files] をクリックします。
- 「Upload Shape file asset」ウィンドウが開いたら、[SELECT] ボタンをクリックします。ファイル選択ダイアログで、先ほど解凍したフォルダ内にある
.shp
,.shx
,.dbf
,.prj
を含む関連ファイルをすべて選択します。(Ctrl
やShift
キーを押しながら選択すると複数選択できます) - ファイルがすべてリストに追加されたことを確認し、[UPLOAD] をクリックします。
- アップロードが開始されると、画面右側の [Tasks] タブに進捗状況が表示されます。タスクが青色から灰色に変わったら、アップロード完了です。
- [Assets] タブを更新すると、アップロードしたShapefileが新しいアセットとして追加されているのが確認できます。
これで、外部データをGEE上で扱う準備が整いました。
手順3:GEE上での可視化とフィルタリング
ここからは、Code EditorでJavaScriptを記述し、アップロードしたデータを地図上に表示していきます。
スクリプト全体像
まずは完成したコードの全体像です。これをCode Editorに貼り付け、後述する修正を加えればすぐに実行できます。
// script.js — Google Earth Engineで世界銀行のShapefileをインポート・可視化
// 1. アップロードしたShapefileをFeatureCollectionとしてロード
var roi = ee.FeatureCollection('YOUR_ASSET_PATH_HERE');
// 2. 属性フィールドを確認するために、10個のフィーチャをプレビュー表示
print(roi.limit(10));
// 3. 全ての国を地図上に表示
Map.addLayer(roi, {}, 'World Countries');
// 4. 属性フィールドで特定の国(例: スーダン)をフィルタリング
// 今回、国名をフィルタリングするフィールド名は "NAM_0"
var Sudan = roi.filter(ee.Filter.eq('NAM_0', 'Sudan'));
// 5. 選択した国を赤色で地図上に表示
Map.addLayer(Sudan.style({
color: 'red', // 境界線を赤色に
fillColor: '#FF000080', // 塗りつぶしの色は半透明の赤色
width: 1 // 境界線の太さ
}), {}, 'Sudan');
// 6. 地図の中心に選択した国を表示
Map.centerObject(Sudan, 5); // ズームレベルを5に設定
コードのステップ別解説
スクリプトの各処理ブロックが、それぞれどのような意味を持つのかを解説します。
1. アセットの読み込み
var roi = ee.FeatureCollection('YOUR_ASSET_PATH_HERE');
GEEにアップロードしたShapefileを、スクリプト内で操作できるオブジェクトとして読み込みます。roi(関心領域)という変数に、指定したアセットパスのデータを格納します。
スクリプト抜粋 | 意味・目的 |
---|---|
roi |
"Region of Interest"(関心領域)の略。地理空間分析でよく使われる変数名。 |
ee.FeatureCollection |
ベクターデータを扱うためのGEEの基本オブジェクトです。 |
'YOUR_ASSET_PATH_HERE' |
GEEのアセットとして今回アップロードしたShapefileのアセットパスを入力する箇所。 |
YOUR_ASSET_PATH_HERE
の部分は、以下の手順でご自身のアセットパスに書き換えてください。
※アセットパスの確認方法は下記参照。
アセットパスの確認方法:
2. 属性情報の確認
print(roi.limit(10));
フィルタリングに使用する正しい属性名(フィールド名)を特定するための、デバッグ(動作確認)のステップです。ただし、今回はすでにフィールド名(NAM_0
)がわかっているので、この箇所は省略してもOKです。
Shapefileには、各データ(この場合は国ポリゴン)の附属情報(国名、コードなど)が「属性」として格納されています。print()でroiデータの一部をコンソールに出力することで、どのような属性名でデータが格納されているかを確認できます。
スクリプト抜粋 | 意味・目的 |
---|---|
print(roi.limit(10)) |
roi に含まれるデータの最初の10件を、画面右のConsoleタブに出力します。これにより、国名がどのフィールド(例: NAM_0 、country_na など)に格納されているかを確認できます。 |
3. 全ての国境を地図に表示
Map.addLayer(roi, {}, 'World Countries');
roi
として読み込んだデータ全体が、意図通りに読み込めているかを視覚的に確認します。
スクリプト抜粋 | 意味・目的 |
---|---|
Map.addLayer(roi, ...) |
roi のデータを地図レイヤーとして追加します。第1引数:地図上に表示したい領域(今回は変数 roi )第2引数:表示スタイルの指定。(今回は指定なしのため {} のまま。{color: 'gray', width: 1} で灰色の線表示)第3引数:設定したいレイヤー名(今回は World Countries )。 |
4. 特定の国でフィルタリング
var Sudan = roi.filter(ee.Filter.eq('NAM_0', 'Sudan'));
全データの中から、目的の国(今回はスーダン)のデータだけを抽出します。
スクリプト抜粋 | 意味・目的 |
---|---|
roi.filter(ee.Filter.eq('NAM_0', 'Sudan')) |
filter() メソッドを使い、「NAM_0 という属性の値がSudan と等しい」という条件でroi からデータを絞り込みます。 |
5. フィルタリングした国をハイライト表示
Map.addLayer(Sudan.style({
color: 'red', // 境界線を赤色に
fillColor: '#FF000080', // 塗りつぶしの色は半透明の赤色
width: 1 // 境界線の太さ
}), {}, 'Sudan');
抽出した国を視覚的に目立たせます。
スクリプト抜粋 | 意味・目的 |
---|---|
Sudan.style({ ... }) |
境界線の色や太さ、塗りつぶしの色などを定義。 |
Map.addLayer(Sudan.style({ ... })) |
抽出したSudanのデータに、定義したスタイルを適用して地図レイヤーとして追加します。 |
6. 地図の中心とズームレベルを調整
Map.centerObject(Sudan, 5);
分析対象が地図の中央に表示されるように視点を自動調整し、ズームレベルを設定しています。
スクリプト抜粋 | 意味・目的 |
---|---|
Map.centerObject(Sudan, 5) |
Sudan のオブジェクトが画面の中心に来るように地図を移動させます。第2引数の5 はズームレベルを表します。 |
上記のスクリプトを実行すると、GEEの地図上に以下のように表示されます。
まとめ
本記事では、外部データ(Shapefile形式)をGoogle Earth Engineにインポートし、特定のフィーチャをフィルタリングして可視化するまでの一連のワークフローを解説しました。
このプロセスを応用すれば、以下のようなことが可能になります。
- 任意のShapefile(行政界、河川、植生分布など)をGEEにアップロードする
- 属性情報に基づいて必要なデータを抽出する
- 自由にスタイリングして、目的や用途に合った地図を作成する
参考文献
- Udemy Course: Google Earth Engine Mega Course
- World Bank Data Catalog: World Bank Official Administrative Boundaries