Google Earth Engine:从集合的每个图像中的像素中提取波段值?
Google Earth Engine: Extract band values from pixel in each image of a collection?
抱歉这个基本问题,我是 GEE 初学者。
本质上,我想做的是从集合中的每个图像中提取像素中某个波段的值,并将其放入数组中。
如果输出到图表,我知道如何执行此操作,例如:
print(ui.Chart.image.series(with_ndvi.select("nd"),area));
其中with_ndvi是我的图片集,"nd"是我感兴趣的波段,area是点特征。
但是,我需要将这些值放入一个数组中,因为我需要对每个值进行计算。
是否有一个简单的函数来映射集合以将值提取为要使用的数字?
感谢您的帮助。
通常,为了从图像中获取特定值,您使用 reduceRegion
。因为你有一个点,所以没有任何缩减,但可以使用相同的操作从一个区域中获取平均值、中位数、最大值等,你需要选择一个缩减器来执行操作。 (如果您没有另外指定,ui.Chart.image.series
默认为 mean
reducer)。
我根据标准化差异示例脚本中使用的图像构建了这个示例:
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
,其中每个要素都将原始点作为几何图形(如果您有多个兴趣点,则很有用,否则您可以将其设置为 null
相反)和当时的 NDVI 作为 属性 命名为 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
and/or reduceColumns
.
对特征集合执行计算
抱歉这个基本问题,我是 GEE 初学者。
本质上,我想做的是从集合中的每个图像中提取像素中某个波段的值,并将其放入数组中。
如果输出到图表,我知道如何执行此操作,例如:
print(ui.Chart.image.series(with_ndvi.select("nd"),area));
其中with_ndvi是我的图片集,"nd"是我感兴趣的波段,area是点特征。
但是,我需要将这些值放入一个数组中,因为我需要对每个值进行计算。
是否有一个简单的函数来映射集合以将值提取为要使用的数字?
感谢您的帮助。
通常,为了从图像中获取特定值,您使用 reduceRegion
。因为你有一个点,所以没有任何缩减,但可以使用相同的操作从一个区域中获取平均值、中位数、最大值等,你需要选择一个缩减器来执行操作。 (如果您没有另外指定,ui.Chart.image.series
默认为 mean
reducer)。
我根据标准化差异示例脚本中使用的图像构建了这个示例:
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
,其中每个要素都将原始点作为几何图形(如果您有多个兴趣点,则很有用,否则您可以将其设置为 null
相反)和当时的 NDVI 作为 属性 命名为 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
and/or reduceColumns
.