问题描述
我对 Google Earth Engine 比较陌生,目前正在尝试计算 Landsat 图像集合的大气顶部反射率,但我似乎没有取得任何进展。 到目前为止,我已经尝试在计算 EVI 的文档中应用一个示例,并且它起作用了,但是由于 TOA 反射需要元数据,它无法使用相同的方法......我已经尝试了所有我能想到的方法,从使用与示例相同的方法到尝试 image.expression() 甚至尝试在单个图像上检查它是否有效,但似乎没有任何效果。 非常感谢,这是我的代码:
var PT = ee.FeatureCollection("USDOS/LSIB_SIMPLE/2017").filter(ee.Filter.eq("country_na","Portugal"));
var collection = ee.ImageCollection("LANDSAT/LC08/C01/T1_TOA").filterDate("2018-01-01","2018-01-31").filterBounds(PT);
var imageCollection = collection.map(function(img){
return img.toUint16();
});
var raw = ee.Image("LANDSAT/LC08/C01/T1_TOA/LC08_202033_20180111");
////Example function from documentation (works fine)
var evi2 = function(image){
return image.addBands(image.expression(
'2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))',{
'NIR': image.select('B5'),'RED': image.select('B4'),'BLUE': image.select('B2')
}))};
var evi_Landsat=collection.map(evi2);
print("EVI for LANDSAT",evi_Landsat);
////My function to compute Top of the Atmosphere reflectance (doesn't work)
var TOA = function(image) {
return image.addBands(image.expression(
"RadM * B10 + RadA",{
"RadM":image.get("RADIANCE_MULT_BAND_10"),"B10":image.select("B10"),"RadA":image.get("RADIANCE_ADD_BAND_10")}));
};
//var TOA_Landsat = collection.map(TOA);
//print("TOA for LANDSAT",TOA_Landsat);
///Same funcion,tried to apply to single image
//var raw_2=raw.addBands(raw.expression(
// "RadM * B10 + RadA",{
// "RadM":raw.get("RADIANCE_MULT_BAND_10"),// "B10":raw.select("B10"),// "RadA":raw.get("RADIANCE_ADD_BAND_10")}));
//print("Take 1: TOA on raw image",raw_2);
//And with different Syntax
//var raw_3=raw.addBands((RadM).multiply(Band10).add(RadA));
//print("Take 2: TOA on raw image",raw_3);
//And just to check if the values were correct
var RadM=raw.get("RADIANCE_MULT_BAND_10");
var RadA=raw.get("RADIANCE_ADD_BAND_10");
var Band10=raw.select("B10");
print("Initials",RadM,RadA,Band10);
////Vizualization parameters
var vizTrueLANDSAT={
bands:["B4","B3","B2"],min: 0,max: 0.5,gamma: [0.95,1.1,1]
};
Map.addLayer(collection,vizTrueLANDSAT,"Raw images",false);
Map.addLayer(evi_Landsat);
//Map.addLayer(TOA_Landsat);
Map.centerObject(PT,6);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)