[Google Earth Engine入門]衛星画像のエクスポート(画像/動画/タイル)
概要
Google Earth Engineで編集・作成した衛星画像をGoogleドライブやクラウドストレージにエクスポートします。
エクスポートした画像や動画は、GISアプリケーションに読み込んだり、外部サイト等で利用することができます。
GeoTIFF画像として出力する
イメージオブジェクトをGoogleドライブにエクスポートします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
//出力する範囲をgeometryとして設定する var geometry = ee.Geometry.Rectangle([139.91809844970703,35.547311987963084, 139.66129302978516,35.746512259918504]); //geometryが確認できる位置まで地図を移動する Map.centerObject(geometry) //バンド値を元に画像をつトルゥーカラーとしてレンダリングするための設定 var trueColor = { bands:['B4', 'B3', 'B2'], min: 0.0, max: 0.4, }; //イメージコレクションの中から対象となるイメージを取得 var imageObject = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA') //LANDSAT 8号の画像を指定 .filterDate('2016-01-01', '2018-12-31') //期間でフィルタリング .filterMetadata('CLOUD_COVER', 'less_than', 2) //なるべく雲の少ない写真を選ぶ .filterBounds(geometry) //gemetryのエリアが含まれる写真を選択 .first() //絞り込んだコレクションの中から最初の1枚を取得 .visualize(trueColor) //レンダリング設定を渡す //地図上に衛星画像をオーバーレイレイする Map.addLayer(imageObject ,null, 'True Color'); //イメージをGoogleドライブに出力する Export.image.toDrive({ image: imageObject, description: 'image', scale: 30, region: geometry }); |
エクスポート処理はタスクとして積まれます。
タスクはTasksタブから「RUN」ボタンを押して実行します。
エクスポート処理はクラウド側で実行されます。
タスクが終了するとGoogleドライブにGeoTIF画像が出力されます。
MPEG-4動画として出力する
イメージコレクションを動画に変換してGoogleドライブにエクスポートします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
//出力する範囲をgeometryとして設定する var geometry = ee.Geometry.Rectangle([139.91809844970703,35.547311987963084, 139.66129302978516,35.746512259918504]); //geometryが確認できる位置まで地図を移動する Map.centerObject(geometry) //バンド値を元に画像をつトルゥーカラーとしてレンダリングするための設定 var trueColor = { bands:['B4', 'B3', 'B2'], min: 0.0, max: 0.4, }; //イメージコレクションの中から対象となるイメージを取得 var imageCollection = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA') //LANDSAT 8号の画像を指定 .filterDate('2017-01-01', '2018-12-31') //期間でフィルタリング .filterMetadata('CLOUD_COVER', 'less_than', 10) //なるべく雲の少ない写真を選ぶ .filterBounds(geometry) //gemetryのエリアが含まれる写真を選択 .map(function(img){ //イメージ毎にレンダリングの設定を行う return img.visualize(trueColor); }); //地図上に衛星画像をオーバーレイレイする Map.addLayer(imageCollection, null, 'True Color'); //ムービーをGoogleドライブに出力する Export.video.toDrive({ collection: imageCollection, description: 'movie', dimensions: 1080, framesPerSecond: 1, region: geometry }); |
Googleドライブにムービーとして出力されます。
地図タイルとして出力する
イメージオブジェクトを地図タイルとしてエクスポートします。
エクスポートした地図タイルは、leafletなど一般的な地図クライアントソフトで表示することができます。
・参考
地図タイルについて – smellman’s Broken Diary
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
//出力する範囲をgeometryとして設定する var geometry = ee.Geometry.Rectangle([139.91809844970703,35.547311987963084, 139.66129302978516,35.746512259918504]); //geometryが確認できる位置まで地図を移動する Map.centerObject(geometry) //バンド値を元に画像をフォールスカラーとしてレンダリングするための設定 var falseColor = { bands:['B5', 'B4', 'B3'], min: 0.0, max: 0.4, }; //イメージコレクションの中から対象となるイメージを取得 var imageObject = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA') //LANDSAT 8号の画像を指定 .filterDate('2016-01-01', '2018-12-31') //期間でフィルタリング .filterMetadata('CLOUD_COVER', 'less_than', 2) //なるべく雲の少ない写真を選ぶ .filterBounds(geometry) //gemetryのエリアが含まれる写真を選択 .first() //絞り込んだコレクションの中から最初の1枚を取得 .visualize(falseColor) //レンダリング設定を渡す //必要な領域の衛星写真のみが適切に出力されるように //イメージをgeometryで切り抜く。 var clipImage = imageObject.clip(geometry) //地図上に衛星画像をオーバーレイレイする Map.addLayer(clipImage ,null, 'false Color'); //タイル画像をGoogleストレージ出力する Export.map.toCloudStorage({ image: clipImage, description: 'mapToCloudExample', //バケット内のフォルダ名として適用される bucket: 'gee-blog-tile-demo', //保存先バケットの指定。事前に作成しておくことが必要 maxZoom: 13, region: geometry }); |
タイルは、Google Cloud Storageにスタティックな画像として出力されます。
タイルと同時にGoogle EarthやGoole Mapsで表示するサンプルコードが出力されます。
・Google Earthにタイルを読み込むサンプル
・Google Mapsで表示するサンプル
サンプルにはAPI keyが設定されていないため、htmlファイルを編集してGoogle Maps API keyを設定する必要があります。
leafletでのタイル表示
Google Cloud Storageにエクスポートされたタイル画像をleafletで表示するサンプルです。
バケットを公開(一般アクセス可能に)することで、GEEで作成した画像をleaflet等に読み込んで表示することができます。
・参考
データの一般公開 | Cloud Storage ドキュメント | Google Cloud
一般公開データへのアクセス | Cloud Storage ドキュメント | Google Cloud
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
<!DOCTYPE html> <html lang="jp"> <head> integrity="sha512-puBpdR0798OZvTTbP4A8Ix/l+A4dHDD0DGqYW6RQ+9jxkRFclaxxQb/SJAWZfWAkuyeQUytO7+7N4QKrDh+drA==" crossorigin=""/> integrity="sha512-nMMmRyTVoLYqjP9hrbed9S+FzjZHW5gY1TWCHA5ckwXZBadntCNs8kEqAWdrb9O7rxbCaA4lKTIWjDXZxflOcA==" crossorigin=""></script> <style> html, body, #map { width:100%; height: 100%; margin: 0px; padding: 0px; } </style> </head> <body> <div id="map"></div> <script> var mymap = L.map('map').setView([35.637790919975934, 139.79671508073807], 12); //mapboxのベースタイルを読み込む L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', { attribution: 'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>', maxZoom: 18, id: 'mapbox.streets', accessToken: 'マップボックスのトークン' }).addTo(mymap); //GEEで作成したカスタムベースマップを読み込む L.tileLayer('https://storage.googleapis.com/{バケット名}/{フォルダ名}/{z}/{x}/{y}', { maxZoom: 13, id: 'mytie' }).addTo(mymap); </script> </body> </html> |
アドベントカレンダー
この記事は、Google Earth / Google Earth Engine Advent Calendar 2018への参加投稿です。