我想合并陆地卫星4,5,7和8图像。我需要调整陆地卫星8波段,以便它们与其他陆地卫星影像波段相匹配。这是我的代码的基本结构:
// L4 collection
var L4 = ee.ImageCollection("LANDSAT/LT04/C01/T1")
.filter(ee.Filter.eq('WRS_PATH', 225))
.filter(ee.Filter.eq('WRS_ROW', 59))
.select(['B3', 'B2', 'B1']);
// L5 collection
var L5 = ee.ImageCollection("LANDSAT/LT05/C01/T2")
.filter(ee.Filter.eq('WRS_PATH', 225))
.filter(ee.Filter.eq('WRS_ROW', 59))
.select(['B3', 'B2', 'B1']);
// l7 collection
var L7 = ee.ImageCollection("LANDSAT/LE07/C01/T1")
.filter(ee.Filter.eq('WRS_PATH', 225))
.filter(ee.Filter.eq('WRS_ROW', 58))
.select(['B3', 'B2', 'B1']);
// l8 collection
var L8 = ee.ImageCollection('LANDSAT/LC08/C01/T1')
.filter(ee.Filter.eq('WRS_PATH', 225))
.filter(ee.Filter.eq('WRS_ROW', 58))
.select(['B4', 'B3', 'B2', ],['B3', 'B2','B1']);
// Merge all
var collection = ee.ImageCollection(L4.merge(L5.merge(L7.merge(L8))));
// Map
Map.addLayer(collection, {bands:['B3', 'B2', 'B1'], min: 0, max: 3000}, 'collection_merge')
我已经尝试了几种方法来改变陆地卫星8的波段。
return image.rename(['B0', 'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'B10', 'B11']);
})
.select(['B3', 'B2', 'B1']);
function renameBandsL8(image) {
var bands = ['B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'pixel_qa'];
var new_bands = ['B', 'G', 'R', 'NIR', 'SWIR1', 'SWIR2', 'pixel_qa'];
return image.select(bands).rename(new_bands);
}
最新的
.select(['B4', 'B3', 'B2', 'B1'],['B5', 'B4', 'B3','B2'])
似乎什么都不起作用,我不知道为什么。
发布于 2020-05-21 17:07:02
您应该将所有波段转换为相同的格式。陆地卫星4,5,7是无符号的int8格式,而你的陆地卫星-8是无符号的int16格式。有不同的方法来处理这一点,一种方法是将您的陆地卫星-8转换为未签名的int8格式。请注意,我刚刚修改了L8集合部分。
// L4 collection
var L4 = ee.ImageCollection("LANDSAT/LT04/C01/T1")
.filter(ee.Filter.eq('WRS_PATH', 225))
.filter(ee.Filter.eq('WRS_ROW', 59))
.select(['B3', 'B2', 'B1']);
// L5 collection
var L5 = ee.ImageCollection("LANDSAT/LT05/C01/T2")
.filter(ee.Filter.eq('WRS_PATH', 225))
.filter(ee.Filter.eq('WRS_ROW', 59))
.select(['B3', 'B2', 'B1']);
// l7 collection
var L7 = ee.ImageCollection("LANDSAT/LE07/C01/T1")
.filter(ee.Filter.eq('WRS_PATH', 225))
.filter(ee.Filter.eq('WRS_ROW', 58))
.select(['B3', 'B2', 'B1']);
// l8 collection
var L8 = ee.ImageCollection('LANDSAT/LC08/C01/T1')
.filter(ee.Filter.eq('WRS_PATH', 225))
.filter(ee.Filter.eq('WRS_ROW', 58))
.select(['B4', 'B3', 'B2', ],['B3', 'B2','B1'])
.map(function(image){return image.toByte()});
// Merge all
var collection = ee.ImageCollection(L4.merge(L5.merge(L7.merge(L8))));
print(collection)
Map.addLayer(collection, {bands:['B3', 'B2', 'B1'], min: 0, max: 3000}, 'collection_merge')
希望能有所帮助。
https://stackoverflow.com/questions/61925867
复制相似问题