Google地球引擎:从集合的每个图像中的像素中提取波段值?

时间:2020-02-27 00:27:37

标签: google-earth-engine

很抱歉,我是GEE初学者。

本质上,我要执行的操作是从集合中的每个图像中提取像素中某个带的值,并将其放入数组中。

我了解如果输出是图表,例如:

print(ui.Chart.image.series(with_ndvi.select("nd"),area));

with_ndvi是我的图像收藏,“ nd”是我感兴趣的乐队,而Area是一个点要素。

但是,我需要将这些值放入数组中,因为我需要对每个值进行计算。

是否有一个简单的函数可以映射到一个集合上,以将值提取为要使用的数字?

感谢您的帮助。

1 个答案:

答案 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

Runnable example link

在这里,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对要素集合执行计算。