很抱歉,我是GEE初学者。
本质上,我要执行的操作是从集合中的每个图像中提取像素中某个带的值,并将其放入数组中。
我了解如果输出是图表,例如:
print(ui.Chart.image.series(with_ndvi.select("nd"),area));
with_ndvi是我的图像收藏,“ nd”是我感兴趣的乐队,而Area是一个点要素。
但是,我需要将这些值放入数组中,因为我需要对每个值进行计算。
是否有一个简单的函数可以映射到一个集合上,以将值提取为要使用的数字?
感谢您的帮助。
答案 0 :(得分:0)
通常,为了从图像中获取特定的值,请使用new HtmlWebpackTagsPlugin({
// this script must be loaded before all other scripts
append: false,
tags: ['src/myScript.js'],
useHash: true,
addHash: (assetPath, hash) => {
const parts = assetPath.split('.');
parts[parts.length - 1] = `${hash}.${parts[parts.length - 1]}`;
return parts.join('.');
},
}),
。由于您只有一个点,因此不存在任何归约,但是可以使用同一操作从一个区域获取平均值,中位数,最大值等,因此您需要选择一个归约器来执行该操作。 (如果没有另外指定,reduceRegion
默认为ui.Chart.image.series
减速器。)
我从“规范化差异”示例脚本中使用的图像构建了该示例:
mean
在这里,var imageCollection = ee.ImageCollection('MODIS/006/MOD09GA')
.filterDate('2019-01-01', '2019-01-31');
var ndviCollection = imageCollection.map(function (img) {
var ndImage = img.normalizedDifference(['sur_refl_b02', 'sur_refl_b01']);
return ee.Feature(area, ndImage.reduceRegion(ee.Reducer.mean(), area));
});
print(ndviCollection);
是一个ndviCollection
,其中每个要素的原始点都是几何(如果您有多个兴趣点很有用,否则可以将其设为FeatureCollection
) NDVI作为该点的属性null
。
如果您绝对需要数字列表而不是要素集合,则可以获取以下信息:
nd
,但如果可以避免,则不要这样做,因为列表始终作为整体保存在内存中,而不是以流方式进行处理。而是使用print(ndviCollection
.toList(100) // set this number to the maximum number of elements you expect
.map(function (feature) {
return ee.Feature(feature).get('nd');
}));
和/或map
对要素集合执行计算。