Google Earth Engine谷歌地球引擎繪制遙感數(shù)據(jù)時間曲線并導(dǎo)出數(shù)據(jù)到表格

??本文介紹在谷歌地球引擎GEE中,提取多年遙感影像多個不同波段反射率數(shù)據(jù),在GEE內(nèi)繪制各波段的長時間序列走勢曲線圖,并將各波段的反射率數(shù)據(jù)與其對應(yīng)的成像日期一起導(dǎo)出為.csv文件的方法。

??本文是谷歌地球引擎(Google Earth Engine,GEE)系列教學(xué)文章的第十六篇,更多GEE文章請參考專欄:GEE學(xué)習(xí)與應(yīng)用。

??首先,我們來看一下本文需要實現(xiàn)的需求。我們現(xiàn)在希望獲取某一個點位置上,Landsat 7遙感影像數(shù)據(jù)的可見光近紅外4個波段的反射率數(shù)據(jù),時間跨度是從2013年到2022年。其中,我們在提取出來指定波段、指定空間區(qū)域、指定時間范圍的數(shù)據(jù)后,為了保證數(shù)據(jù)大致無誤,因此希望首先可以在GEE內(nèi)繪制一張包含了上述各波段在這一段時間內(nèi)反射率數(shù)據(jù)的走勢圖,隨后將反射率數(shù)據(jù)導(dǎo)出為.csv文件。

??知道了需求,我們即可開始代碼的撰寫。本文需要用到的代碼如下。

var point = ee.Geometry.Point([-95.363271, 38.640067]);
var startDate = "2013-01-01";
var endDate = "2022-12-31";

var rCollection = ee.ImageCollection("LANDSAT/LE07/C02/T1_L2")
  .select(["SR_B1", "SR_B2", "SR_B3", "SR_B4"])
  .filterBounds(point)
  .filterDate(startDate, endDate);
print(rCollection)
  
var trueCollection = rCollection.map(function(image) {
  var trueImage = image.multiply(0.0000275).subtract(0.2);
  var trueImageP = image.addBands(trueImage, null, true)
  return trueImageP;
});
  
print(ui.Chart.image.series({
  imageCollection: trueCollection,
  region: point,
  reducer: ee.Reducer.mean(),
  scale: 250,
}));

var rTable = ee.FeatureCollection(trueCollection.map(function(image) {
  var date = image.date().format("yyyy-MM-dd");
  var BValue = image.reduceRegion(ee.Reducer.mean(), point, 500).get("SR_B1");
  var GValue = image.reduceRegion(ee.Reducer.mean(), point, 500).get("SR_B2");
  var RValue = image.reduceRegion(ee.Reducer.mean(), point, 500).get("SR_B3");
  var NValue = image.reduceRegion(ee.Reducer.mean(), point, 500).get("SR_B4");
  return ee.Feature(null, {date: date, Blue: BValue, Green: GValue, Red: RValue, NIR: NValue});
}));

Export.table.toDrive({
  collection: rTable,
  description: "data_table_5",
  folder: "GEE_Export",
  fileFormat: "CSV"
});

??上述代碼的具體含義如下。

??首先,我們通過var point = ee.Geometry.Point([-95.363271, 38.640067]);定義一個點位point,也就是我們希望提取數(shù)據(jù)的點。隨后,通過var startDate = "2013-01-01";定義起始日期startDate,表示數(shù)據(jù)獲取的起始日期;var endDate = "2022-12-31";則是定義結(jié)束日期endDate,表示數(shù)據(jù)獲取的結(jié)束日期。緊接著,我這里是選擇通過var rCollection = ee.ImageCollection("LANDSAT/LE07/C02/T1_L2"),獲取LANDSAT 7Level-2表面反射率數(shù)據(jù)集LANDSAT/LE07/C02/T1_L2。

??隨后,基于.select(["SR_B1", "SR_B2", "SR_B3", "SR_B4"])選擇感興趣的波段,我們這里是選擇了BlueGreen、Red3個可見光波段,和NIR這一近紅外波段;這里我們需要用4個波段在遙感影像數(shù)據(jù)產(chǎn)品中的名稱(也就是上述"SR_B1"這種),來獲取對應(yīng)的數(shù)據(jù)。接下來,我們對數(shù)據(jù)集進(jìn)行空間、時間過濾,保留包含指定點位、處于指定時間范圍的數(shù)據(jù)。

??其次,我們在var trueCollection = rCollection.map(function(image) { ... });這里,使用map函數(shù)對rCollection中的每個圖像應(yīng)用函數(shù),并將結(jié)果保存在trueCollection中。這里的函數(shù)就是對原始的遙感影像加以輻射定標(biāo),將每個像素值乘以0.0000275,并減去0.2,得到新的圖像trueImage。隨后,注意需要將原始圖像image和處理后的圖像trueImage連接起來,形成新的圖像trueImageP——這樣使得我們定標(biāo)后的遙感影像數(shù)據(jù)集包含有原始圖像的各項屬性信息(例如開始、結(jié)束時間等),才可以進(jìn)行后續(xù)的繪圖、導(dǎo)出工作。在這里,我選擇通過設(shè)置image.addBands(trueImage, null, true)中第3個參數(shù)為true,直接將輻射定標(biāo)的圖像覆蓋原有的圖像,避免不必要的數(shù)據(jù)冗余。

??接下來,我們ui.Chart.image.series函數(shù)繪制時間序列圖;隨后使用map函數(shù)對trueCollection中的每個圖像應(yīng)用函數(shù),并將結(jié)果保存在rTable中。這個函數(shù)計算了每個圖像的日期和各個波段的具體數(shù)值,并將這些值作為屬性添加到rTable中的每個要素。

??最后,我們即可將rTable導(dǎo)出為.csv文件,保存在Google Drive的指定文件夾中。

??運行上述代碼,首先我們可以在GEE中看到具體的長時間序列曲線走勢圖;如下圖所示。可以看到,走勢圖中的數(shù)據(jù)都已經(jīng)是做過了輻射定標(biāo)之后的了。

??隨后,我們打開導(dǎo)出的.csv文件,可以看到其中具體的數(shù)據(jù)信息如下——包括了我們需要導(dǎo)出的4個波段與日期信息,以及其他2個系統(tǒng)默認(rèn)導(dǎo)出的圖像信息。

??至此,大功告成。

歡迎關(guān)注:瘋狂學(xué)習(xí)GIS

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容