如何根据图像的位置在 Google Earth Engine 中对图像 collection 进行子集化?

How to subset an image collection in Google Earth Engine based on their position?

我是新 Google Earth Engine 用户。我正在尝试删除图像 collection 的一些图像。在下面的例子中是一个例子。我的图片 collection 有更多图片。

 // Load Landsat 8 brightness temperature data for 1 year.
 var test = ee.ImageCollection('LANDSAT/LC8_L1T_32DAY_TOA')
.filterDate('2012-12-25', '2016-12-25')
.select('B1');
print(test)

我的图片 collection 有 45 张图片。明确地说,我将 index1 称为我的第一张图片,将 index45 称为我的最后一张图片,等等。我如何保留或删除从 index10 到 index 15 以及从 index30 到 index40 的图像。

我尝试使用列表,但无法捕获元素。

您可以使用以下函数按元数据过滤集合。

.filterMetadata(name, operator,value)

如果您要保留的图像具有相同的值,那么您可以使用它。例如,要按 WRS_ROW 和 WRS_PATH 进行过滤,您可以执行以下操作。

var testFiltered = test.filterMetadata("WRS_ROW","equals",15)
                       .filterMetadata("WRS_PATH","equals",36)

只需选择最适合您的元数据。最好不要按数字select,否则它们将无法在其他年份使用。

除了按 WRS-2 路径和行等元数据属性进行过滤外,您还可以 运行 集合的方法 .filterBounds(geometry),这将生成一个仅包含与几何相交的元素。这是一个例子:

// Load Landsat 8 TOA data.
var timeFiltered = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA')
    .filterDate('2013-01-01', '2014-01-01');

// define an ee.Geometry to filter by
// San Francisco Lon/Lat
var geom = ee.Geometry.Point([122.4194, 37.7749]);

// filter by a geometry
var spaceTimeFiltered = timeFiltered.filterBounds(geom);

print('Before spatial filtering: ',timeFiltered);
print('After spatial filtering: ',spaceTimeFiltered);

在这种情况下,仅按时间过滤的集合不会打印,因为它有超过 5000 个元素,但是当您按 space 过滤并计时时 returns 2013 年的 15 个场景超过 San弗朗西斯科.