javascript 如何在谷歌地球引擎中合并图像?

x33g5p2x  于 2023-03-16  发布在  Java
关注(0)|答案(2)|浏览(134)

因此,根据Sentinel 5 P图像集,我创建了3年的3个不同图像(2019年、2020年和2021年的平均值)。然后,我使用几何图形裁剪这3张图像,然后再次生成3张图像。现在,我想将这3张图像合并为一张图像,以便在从该合并图像提取数据时,我能够获得3年的数据(2019年、2020年、2021年)。我尝试过这种方法--

var simpleJoin = ee.Join.simple();
var mod1join = ee.ImageCollection(simpleJoin.apply(img1clip, img2clip, img3clip));
Map.addLayer(mod1join, band_viz);

但是在加载图层时,它给了我一个错误-
层1:层错误:联接。应用,参数“次要”:类型无效。类型应为:特征集合。实际类型:图像〈[SO2色谱柱编号密度]〉。
我试着搜索这个错误,但没有找到任何解决方案。什么将是解决方案,以合并3个图像的不同年份,保持数据的那些特定年份以及?
下面我附上我所做的和尝试的代码-

var img1 = ee.ImageCollection(imageCollection
.select('SO2_column_number_density')
.filterBounds(geometry)
.filterDate('2019-01-01', '2019-12-31'))
//remove the negative values from the band
//.map(function(image){return image.updateMask(image.gte(0))});
print('no. of img1', img1.size());
var img2 = ee.ImageCollection(imageCollection
.select('SO2_column_number_density')
.filterBounds(geometry)
.filterDate('2020-01-01', '2020-12-31'))
print('no. of img2', img2.size());
var img3 = ee.ImageCollection(imageCollection
.select('SO2_column_number_density')
.filterBounds(geometry)
.filterDate('2021-01-01', '2021-12-31'))
print('no. of img3', img3.size());
var band_viz = {
  min: 0.0,
  max: 0.0005,
  palette: ['black', 'blue', 'purple', 'cyan', 'green', 'yellow', 'red']
};
var img1map = img1.mean();
var img2map = img2.mean();
var img3map = img3.mean();

//Map.addLayer (SP5map, band_viz);
var img1clip = img1map.clip(geometry);
var img2clip = img2map.clip(geometry);
var img3clip = img3map.clip(geometry);

//print(img1clip);

var simpleJoin = ee.Join.simple();
var mod1join = ee.ImageCollection(simpleJoin.apply(img1clip, img2clip, img3clip));
Map.addLayer(mod1join, band_viz);

仅供参考:所有3个剪切图像仅包含1个条带。

eagi6jfj

eagi6jfj1#

official documentation中,ee.Join.apply()的第一个和第二个参数都是FeatureCollection,而第三个参数是Filter,示例是here

  1. img1是应用.filterDate()后的Collection
  2. img1clip是应用.mean()函数后的Image
    1.在应用了.clip()之后,img1clip也是Image,而不是FeatureCollection
    因此出现错误(无效类型)。
    您必须检查代码并确保ee.Join.apply()的三个参数正确。
1cklez4t

1cklez4t2#

如果您正在处理图像,请将其添加为“波段”:

var mod1join = img1clip.addBands(img1clip).addBands(img1clip);
Map.addLayer(mod1join, band_viz);

使用“inspector”,您将看到来自三个波段的信息。

相关问题