如果结果很小,则使用result将它们拉入python。getInfo()。这将为您提供一个包含FeatureCollection列表的python字典(更多字典)。但是,如果结果较大或多边形覆盖较大区域,则必须导出集合。
也就是说,您可能还想先做一些其他事情:
1) 您可能希望展平()集合,使其不是嵌套集合。这样处理会更容易。
2) 您可能希望为每个结果添加一个日期,以便知道结果来自什么时间。您可以在NDVIcalc函数中使用结果上的映射来实现这一点
return MeansFeatures.map(lambda f : f.set('date', image.date().format())
3) 如果您真正想要的是每个多边形(最常见)随时间变化的NDVI时间序列,那么将代码重新构造为首先在多边形上映射会更容易:
Sentinel_collection = (ee.ImageCollection('COPERNICUS/S2')
.filterBounds(fc_filtered)
.filterDate(ee.Date('2017-01-01'),ee.Date('2017-08-01')))
def GetSeries(feature):
def NDVIcalc(img):
red = img.select('B4')
nir = img.select('B8')
ndvi = nir.subtract(red).divide(nir.add(red)).rename(['NDVI'])
return (feature
.set(ndvi.reduceRegion(ee.Reducer.mean(), feature.geometry(), 10))
.set('date', img.date().format("YYYYMMdd")))
series = Sentinel_collection.map(NDVIcalc)
// Get the time-series of values as two lists.
list = series.reduceColumns(ee.Reducer.toList(2), ['date', 'NDVI']).get('list')
return feature.set(ee.Dictionary(ee.List(list).flatten()))
result = fc_filtered.map(GetSeries)
print(result.getInfo())
4) 最后,如果您要尝试导出结果,很可能会遇到这样一个问题,即导出表的列是从第一个功能所具有的任何列中选择的,因此最好提供一个包含所有列(时间)的“标题”功能,您可以将()与结果合并为第一个功能:
dates = ee.List(Sentinel_collection.map(function(img) {
return ee.Feature(null, {'date': img.date().format("YYYYMMdd") })
}).aggregate_array('date'))
header = ee.Feature(null, ee.Dictionary(dates, ee.List.repeat(-1, dates.size())))
output = header.merge(result)
ee.batch.Export.table.toDrive(...)