0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Google Earth Engine上で指定した対象領域(ROI: Region Of Interest)をGeoJSONファイルで出力

Posted at

##概要
こんにちは。
 衛星画像を解析する上では、対象領域(以下ROI)の特定が必要な場合が多いです。特に近年高解像化が進む衛星画像はとんでもなくデータ容量を食う(一枚数百MB~数GB)ため、これを毎回全部扱っていてはメモリとSSDがいくらあっても足りません。ですので、特定領域だけ切り抜いて処理した方が計算時間と財布に優しいことが殆どです。
 ROIを指定するのには色々な方法がありますが、Polygonの形で保持するのが一般的かと思います。特にGeopandasのGeoDataFrameはマップに表示したりする上でも非常に使い勝手が良く、よく使われています。
ROIのGeoDataFrameへの取り込みは、Shapefile(.shpの拡張子のモノ)を使うやり方がよく使われています。Shapefileの取り込みや、GeoDataFrameについての説明はここが詳しいです。
行政区画等はShapefileで配布されてることが多いのですが、自分は代替としてGeoJSONファイルによってROIを指定し、それをGeoDataFrameへと取り込む手法を使っています。本記事では、Google earth Engine(以下GEE)を使って描いたROIをGeoJSON形式で出力し、pythonへ取り込んで地図と重ねて表示する方法をご紹介したいと思います。
##前提条件

  1. GEEのアカウントを作成済みであること(アカウントが無い方はこちらからサインアップしてください)
  2. Google Colabで実行 (記事執筆時点でのバージョンはpython 3.6.9)

##コード等(GEE)
 今回の例として、JAXAの種子島宇宙センター・ロケット発射場をROIとして見てみます。GEEのCode Editorを開いたら、自分の注目したい領域についてズームします。
GEEcodeEditor.png
 左上にある小さいマークの中から、図形を描画を選択して、クリックしながらROIを描いていってください。最後に始点となった点をクリックすることで、PolygonとしてROIが描かれます。
DrawAPolygon.png
Polygon.png

 ROIを描き終わったら、以下のコードを打ち込んでください。打ち込んでからコンソール上のrunボタンを押すことで、コードが実行されます。ファイル名を指定したければ、'vectorsToDriveExample'の部分をお好みの名前に編集してください。

GEE.js
var polygon=geometry;
var polyFeature = ee.FeatureCollection(polygon);
Export.table.toDrive({
  collection: polyFeature,
  description:'vectorsToDriveExample',
  fileFormat: 'GeoJSON'
});

 ここからが絶妙に分かりにくいのですが、コードを実行すると右上のtaskボタンがオレンジ色になっています。これを選択して、runを押すことによってGeoJSONファイルがGoogle drive上に書き出されます(正確にはrunを押すと保存先指定等のダイアログが出ると思いますが、保存先がdriveになっていることさえ確認しておけば大丈夫です)。
Task.png
run.png
 driveを確認すると、無事にGeoJSONファイルが出力されていました。
GeoJSON.png

##コード(python)
 作成したGeoJSONファイルをpythonへと取り込み、マップ上で表示してみたいと思います。geopandasをインポートしましょう。インポートできない場合には、pip insall geopandasでインストールしてください。地図を表示するためにfoliumも同時にインポートしています。

import.py
import geopandas as gpd
import folium

 あとはGeoDataFrameへ先ほどのGeoJSONを取り込み、マップへと表示してみましょう!

mapView.py
polygon=gpd.read_file('/content/drive/MyDrive/Colab Notebooks/GeoJson/vectorsToDriveExample.geojson')
m=folium.Map([30.40,130.9576],zoom_start=14) #マップで表示するおおよその緯度・経度とズーム倍率の指定
folium.GeoJson(polygon).add_to(m)
m

map.png

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?