迭代陆地卫星图像集合以在谷歌地球引擎中显示为图层

问题描述 投票:0回答:1

我正在 Google Earth Engine (GEE) 中使用 Landsat 8/9,需要一些帮助。我有一个陆地卫星图像列表,想要对每个图像进行 dNBR 计算,然后将每个图像显示为图层。我使用可变日期获取此列表,因此我相信最好有一个函数可以迭代列表,应用计算,然后使用指定名称显示场景。我对 GEE 还很陌生,所以我想寻求帮助。我将非常感谢一些指导。谢谢!

我编写了使用特定数字显示图像的代码,例如: var img1 = ee.Image(listofImages.get(0)); 但这很大程度上依赖于我编辑代码来获取每一层。

这些图像没有应用 NBR 计算,但我相信:

.normalizedDifference(['B5', 'B7'])

应该在一个函数内工作,该函数可以迭代整个列表,并通过使用以下方法将场景减去预发场景以获得 dNBR:

var dNBR= preNBR.subtract(postNBR)

javascript iteration landsat libgee
1个回答
0
投票

这里是如何定义函数来计算给定 Landsat 图像的 NBR 的代码

// Function to calculate NBR
var calculateNBR = function(image) {
  var nbr = image.normalizedDifference(['B5', 'B7']).rename('NBR');
  return nbr;
};

// List of Landsat images (replace this with your list)
var listOfImages = [ee.Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318'),
                    ee.Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20150120')];

// Select pre-fire and post-fire images
var preFireImage = ee.Image(listOfImages[0]);
var postFireImage = ee.Image(listOfImages[1]);

// Calculate NBR for pre-fire and post-fire images
var preNBR = calculateNBR(preFireImage);
var postNBR = calculateNBR(postFireImage);

// Calculate dNBR
var dNBR = postNBR.subtract(preNBR).rename('dNBR');

// Display the results
Map.centerObject(postFireImage, 10);
Map.addLayer(preNBR, {min:-1, max:1, palette:['FF0000', '00FF00']}, 'Pre-fire NBR');
Map.addLayer(postNBR, {min:-1, max:1, palette:['FF0000', '00FF00']}, 'Post-fire NBR');
Map.addLayer(dNBR, {min:-1, max:1, palette:['FF0000', '00FF00']}, 'dNBR');

确保将 listOfImages 替换为您的实际 Landsat 图像列表。此代码将计算每个图像的 NBR,然后从发射后 NBR 中减去发射前 NBR 以获得 dNBR,最后在地图上显示所有三个图层。

© www.soinside.com 2019 - 2024. All rights reserved.