繁体   English   中英

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

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

我是Google Earth Engine的新用户。 我正在尝试删除图像集合的某些图像。 在下面的示例中是一个示例。 我的图像收藏有更多图像。

 // 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)

我的图像收藏有45张图像。 为了清楚起见,我将index1称为第一张图像,将index45称为最后一张图像,依此类推。如何将图像从index10保留到索引15或将索引30从索引30删除。

我尝试了一个列表,但是它不能捕获元素。

您可以使用以下功能按集合的元数据过滤集合。

.filterMetadata(name, operator,value)

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

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

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

除了通过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多个元素,但是当您按空间和时间过滤时,它将返回2013年以来旧金山的15个场景。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM