操作衛星影像的方便工具:Google Earth Engine

Andy Lin
Andy Lin
Jul 20, 2017 · 9 min read

在處理衛星影像的時候,傳統作法是從NASA、ESA等衛星遙測資料提供方,下載需要的衛星資料,再載入到QGIS、ArcGis等GIS軟體,之後進行疊圖、頻譜計算等分析,最後將分析結果輸出成文字報告、圖檔等格式。

這個流程有它的缺點:

  1. 沒辦法在同一個軟體,完成資料下載、處理到輸出
  2. 多波段衛星遙測資料容量通常高達數百MB,甚至幾GB的都有,從開始下載到下載完成可以處理資料,往往需要十幾分鐘到半小時的時間
  3. 一口氣處理數份衛星遙測資料時,需要相當高的電腦效能,如果電腦不夠好,可能會等很久,圖才會跑出來
  4. 對衛星遙測資料的來源不夠熟悉的話,可能要找到自己需要的衛星資料,就需要Google個老半天

但在Google推出GIS平台「Google Earth Engine」後,上述問題都不再是問題。Google Earth Engine是Google和卡內基美隆大學、NASA等學術機構合作開發的雲端運算平台,讓一般使用者取用、分析衛星遙測資料。

Google Earth Engine可以做到哪些事呢:

  1. Google雲端資料庫裡面已經有滿滿的衛星資料,只要輸入指令,螢幕上的地圖就會在數秒後出現你需要的衛星資料,你不用再苦等十幾分鐘,下載衛星遙測資料本身
  2. Google的強大搜尋功能,讓你只要在搜尋框輸入關鍵字,就可以查到你想要的衛星遙測資料,而且「一鍵」即可載入
  3. Google雲端運算,讓你的電腦不用再狂轉風扇,所有運算都在遙遠的Google主機處理,繁複的演算法計算,所需的計算時間可能從數分鐘縮短到數秒
  4. (對我來說)最棒的地方,一切指令都是基於Javascript語法,這代表你可以儲存每次分析作業的指令檔,一切都有紀錄,下次要進行類似的分析時,只要修改幾個參數就可以搞定一切
  5. 最重要的是,Google Earth Engine開放一般人免費使用!

說了那麼多,你是不是對Google Earth Engine充滿興趣了呢?先別急,在跳進Google Earth Engine的世界裡之前,需要先確認下面幾項事項,你已經做得到了:

  1. 知道衛星遙測資料是什麼:多光譜資料是怎麼一回事、RGB疊圖要怎麼疊、raster資料和vector資料有什麼不一樣、Landsat是什麼等等。不懂的讀者可以看看歐洲太空總署的教學惡補一下
  2. 略懂Javascript:了解var、object、function之類的Javascript概念,如果不懂的話,可以來玩玩Codecademy的Javasscript免費教學
  3. 有一個想要用衛星影像解決的問題:想知道亞泥花蓮礦場的植被生長情況、台北市的土地使用情況、各縣市過去幾年的經濟發展變化等等。如果毫無頭緒,可以來看看GIS技術的100種使用法

如果你已經準備好學習Google Earth Engine,那就接著看下去吧!


首先,你必須要有一個Google帳號,之後點擊這個網址:https://code.earthengine.google.com/

點進去之後,會請你申請Google Engine的使用資格,不用擔心,只需要填寫幾個基本資料,寄出後等幾分鐘,Google那邊就會寄發確認信件給你了。只要點擊寄來的信件的確認連結,就可以開始使用Google Earth Engine啦!(我自己申請使用資格的過程滿順利的,如果有人在這個階段遇到問題請跟我說)

順利申請使用資格後,你應該會被導向以下網頁,如果沒有,請再點擊一次這個網址:https://code.earthengine.google.com/

這就是你跟Google Earth Engine的第一次接觸:

Google Earth Engine的介面有五大部分:

  1. 左上角的部分(有Scripts、Docs等選項的區塊)是api文件和腳本區,可以讓你查閱所有可以輸入的指令,或套用Google提供的現成腳本
  2. 上面中間的地方(標題New Script的區塊)是撰寫指令的地方,你會在這裡寫Google Earth Engine的code
  3. 右上角的地方(有Inspector、Console等選項的區塊)是主控台,可以查看指令執行的結果,切換地圖觀看/查詢模式,以及管理需時較長的分析任務
  4. 下半部是地圖區,可以檢視指令執行的地圖長什麼樣子,以及使用Google Earth Engine的繪圖小工具,載入點、線、面等vector資料
  5. 還有最上面的地方,可以看到一個Google搜尋欄位,你可以在這個地方輸入關鍵字(land cover、ndvi、landsat等等),就可以找到相關的衛星影像

基本上,Google Earth Engine的操作原理,和你使用過的GIS軟體很像,都是載入衛星資料,進行基本處理及運算,疊圖,最後輸出結果。只要謹記這個流程,就不會手忙腳亂了。

我們先用最常使用的Landsat 8衛星資料進行示範。

先在Google搜尋框,輸入「Landsat」

點擊「USGS Landsat 8 Collection 1 Tier 1 and Real-Time data Raw Scenes」

點擊「import」

之後撰寫指令的區塊會多兩行指令

恭喜你,在幾秒的時間,已經載入五年多的巨量Landsat資料了!

不過,地圖上看不到任何衛星資料的影子,因為我們還沒有挑選出,要展示哪一個日期、哪一個地區的衛星影像,也還沒跟Google Earth Engine說,我們要用什麼樣的RGB疊圖,呈現衛星資料。

接著,請在撰寫指令的空白處,輸入以下指令(可以直接複製貼上):

輸入完畢後,點擊區塊上方的「Run」

等待幾秒之後,下面的地圖就會出現台灣北部的衛星圖像了。由於我們設定的RGB疊圖是B5-B4-B3,顯示的衛星圖是植被越茂盛的地方越紅,都市、裸露地等沒有植被的地方越偏亮藍的影像(上圖看不出來亮藍,是因為我們還沒有進行影像調整,本文最後會講到)。

完成這張圖之後,大家就運用Google Earth Engine,完成第一次的衛星影像分析了。接下來說明上面請大家輸入的指令的意思:

var filterImage = imageCollection
.filterBounds(ee.Geometry.Point(121.551129, 25.054875))
.filterDate("2016-07-28", "2016-07-30");

第一段指令,是篩選我們一開始載入的Landsat 8影像。

  1. filterBounds:這個指令是依據給定的地理條件篩選衛星影像。我們這裡設定的篩選標準是,選出經緯度[121.551129, 25.05487](我隨便亂選的台北市經緯點)所在的衛星影像
  2. filterDate:這個指令是依據給定的時間條件篩選衛星影像。我們這裡設定的篩選標準是,選出介於2016年7月28日和2016年7月30日的衛星影像,其實就是要2016年7月29日的衛星資料(我事先已經在NASA的資料網站上找到這份衛星資料)

我們把篩選出來的結果,命名為filterImage。

var image = ee.Image(filterImage.first());

不過,我們還需要一個步驟,才能把衛星圖像集,轉變成單一個衛星圖像。我們需要的是,選出filterImage中的第一個衛星圖像(雖然filterImage裡面本來就只有一個衛星資料),再用ee.Image,將衛星資料轉檔成Image格式。

print(image);

print指令可以讓我們在主控台檢視括號裡的東西的內容,在此例是image。

我們可以在主控台看到image的詳細資料,包括類型(type)、id、有哪些波段(bands)、詳細屬性(properties)等等。

Map.centerObject(image, 9);Map.addLayer(image, {bands: ['B5', 'B4', 'B3']});

最後,我們用Map.centerObject指令,把介面下方的地圖中心,移動到image的所在地,再用Map.addLayer指令,把image資料顯示在地圖上。

稍微講一下Map.addLayer指令:

  1. 括號中第一個位置,要放需要繪製的圖檔,在此例是image
  2. 第二個位置,要放設定的繪製條件,在此例我們設定了rgb波段要放哪些資料,依序是B5、B4、B3,也就是第五、第四和第三波段。

這樣就大功告成啦!我們成功繪製了台灣北部的衛星圖像,可以藉此分析植被的茂盛程度。

不過,影像看起來不是很鮮艷,需要增加一些對比。

請點擊撰寫指令區的「reset => Clear script」,將撰寫區清空。

再將以下的指令複製貼上:

複製貼上之後,按「Run」

我們的衛星影像對比明顯多了,因為有運用簡單的公式,誇大化衛星影像顏色的差異。

之後我們會更加詳細地解釋怎麼調整衛星影像的樣子,以及如何用Google Earth Engine,呈現植被指數(NDVI)。想自行鑽研Google Earth Engine的讀者,可以閱讀Google的精美教學,寫得非常詳細。

)

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade