遙感探測(Remote sensing),簡稱遙測。透過衛星或任何可以飛到天空的物體搭載觀測儀器,我們可以實現:在遠距離(不用人跑到當地)便可以獲得環境資料的壯舉,應該可以被稱為人類進步史的很大一步! 近期台灣很夯的福衛七號衛星升空,其實很大的目的也是為了進行氣象資料遙測任務,細節我不清楚,但總之可以說是太空產業。
森林學系的一個學科分支便是利用遙測技術進行資源探勘與管理,我們使用的載具雖不限於衛星,但利用衛星影像為基礎的分析卻占很大一部分,原因大概是衛星影像具定期拍攝的性質,美國與歐洲的各衛星影像資料目前又都是開放的狀態,非常便於採用,雖然國內好像較少看到將遙測資料用於生態學的研究,不過這已然為世界趨勢,例如:Lembrechts(2019)這篇探討將微氣候變因套入物種分布模式的Review paper。
過往進行衛星影像分析,在克服軟體或寫程式難關後,還有幾個大問題:
- 電腦的容量,因為大量的衛星影像需要很大的空間儲存。
- 電腦的運算速度,電腦要運算大量的圖資,基本上很吃資源,不夠好的電腦就會跑半天可能還沒辦法得到一張圖。
Google Earth Engine(GEE)便是由Google開發並開放免費使用的雲端衛星資料分析平台,也可以說是雲端GIS系統。為何會這樣說呢?基本上GIS軟體辦得到的事情,GEE都辦得到,也可以上傳與下載資料;由於GEE已經預先載入幾乎全部的開放性衛星data,所以也不需要我們各別分開下載,即使就教學目的來說也十分便利。
////////分隔/////////////////////////
利用上述的特性,前幾週製作side project時,嘗試利用此平台直接輸出了可見光衛星影像縮時影片,作為初步的地景變化分析,完成code後只要修改座標,隨時可以輸出不同地點,不同衛星所取得的影像紀錄,套一句學長的說法:這就是coding的魅力啊~ 這裡分享這次所使用的code與結果。
//這段程式碼參考Trochim Erin在Tessa Hasbrouck, UAF的碩士論文中的碼,在此感謝! //加入時間戳印所需的package var palettes = require('users/gena/packages:colorbrewer').Palettes; var utils = require('users/gena/packages:utils'); var text = require('users/gena/packages:text'); // Define an area to export. //var polygon = ee.Geometry.Rectangle([120.605543, 21.860020, 121.011459, 22.073435]); var sites = new ee.FeatureCollection([ ee.Feature( ee.Geometry.Rectangle([120.605543, 21.860020, 121.011459, 22.073435]), {name: 'StudyArea', fill:2}) ]); var bounds = sites.geometry().bounds() //載入衛星影像collection,並按照所需時間地點篩出目標影像集。 var L7 = ee.ImageCollection("LANDSAT/LE07/C01/T1_SR") .filterDate('1999-01-01', '2019-06-30') //Filter時間 .filterBounds(bounds) .filter(ee.Filter.lt('CLOUD_COVER', 20)) //.map(cloudMaskL457) // Need to make the data 8-bit. ; print(L7); //轉換imagecollection物件為影片 var L7vedio = L7.map(function(image){ var start = ee.Date(image.get('system:time_start')); var label = start.format('YYYY-MM-dd'); return image.visualize({ bands: ['B3','B2','B1'], min: 0, max: 3000, gamma: 1.4,}) .clip(bounds).set({label: label}); }); print(L7vedio); // annotate Map.centerObject(bounds, 10); //先做這行,固定Map scale,以便後續的annotations大小固定。 var annotations = [ { position: 'left', offset: '1%', margin: '1%', property: 'label', scale: Map.getScale() * 2 } ]; print(annotations); L7vedio = L7vedio.map(function(image) { return text.annotateImage(image, {}, bounds, annotations) }); // add a few layers to map var animation = require('users/gena/packages:animation'); animation.animate(L7vedio, {maxFrames: 5}); //多加一個色板來顯示圖層 var visParams = { bands: ['vis-red', 'vis-green', 'vis-blue'] }; Map.addLayer(L7vedio.median(), visParams, 'L7vedio_median'); // Export (change dimensions or scale for higher quality). Export.video.toDrive({ collection: L7vedio, description: 'L7VideoExample', dimensions: 1080, framesPerSecond: 12, region: bounds });
從console中可以看到這次篩出的衛星影像共有99張(features >> 99 elements) 輸出結果如下 |
請問我要怎麼換地點? 試過改經緯度,可是結果還是一樣
回覆刪除你好,抱歉我沒有及時回復。
刪除照理來說,只要修改下面code中的經緯度 (包含左下與右上兩個點),理論上在earth engine中看到載入不同位置的畫面。
var sites = new ee.FeatureCollection([
ee.Feature(
ee.Geometry.Rectangle([120.605543, 21.860020, 121.011459, 22.073435]),
{name: 'StudyArea', fill:2})
]);