遙感探測(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})
]);