Отсутствие значений NDVI при уменьшении Landsat Image Collection до длинного списка форматов с помощью Google Earth Engine - PullRequest
0 голосов
/ 17 марта 2019

Я хочу иметь значения NDVI временных рядов LandSat в качестве коллекции объектов для экспорта значений в виде таблицы длинного формата в CSV.Я использую набор данных Hansen Global Forest Change и временной ряд Landsat 7.Набор данных Global Forest Change преобразуется в набор объектов для указания области интереса.Временной ряд Landsat 7 используется для получения значений NDVI во времени.

После преобразования временного ряда NDVI Landsat в коллекцию объектов значения NDVI не отображаются.При преобразовании временного ряда в триплеты появляются только «ID изображения» и «TimeMillis».Я уже проверил тип данных (оба теперь int16) и проекцию (оба EPSG: 32638).

Буду благодарен за любую помощь.Я что-то пропустил?

var lossImage = ee.Image('UMD/hansen/global_forest_change_2017_v1_5')
  .select('lossyear')
  .clip(geometry);
var datamask = ee.Image('UMD/hansen/global_forest_change_2017_v1_5')
  .select('datamask')
  .clip(geometry);
// specifying int16 and EPSG equivalent to landsat
var noloss = lossImage
  .updateMask(lossImage.eq(0).and(datamask.eq(1)))
  .int16()
  .reproject('EPSG:32638', null, 30);
// create feat. collection to reduce regions of Landsat time series
var noloss_v = noloss.reduceToVectors({
  reducer: ee.Reducer.countEvery(),
  geometry: geometry,
  scale: scale
});
//// functions for Landsat
var addNDVI = function(image) {
  var ndvi = image.normalizedDifference(['B4', 'B3'])
    .rename('NDVI').int16();
  return image.addBands(ndvi);
};
var LS7 = ee.ImageCollection('LANDSAT/LE07/C01/T1_RT_TOA')
  .filterBounds(geometry)
  .filterDate('2005-01-01', '2015-12-31')
  .map(addNDVI)
  .select('NDVI');
//// Export LS NDVI 
var triplets = LS7.map(function(image) {
  return image.reduceRegions({
    collection: noloss_v.select('system:index'),
    reducer: ee.Reducer.mean().setOutputs(image.bandNames()),
    scale: 30,
  }).map(function(feature) {
    return feature.set({
      'imageID': image.id(),
      'timeMillis': image.get('system:time_start')
    });});
}).flatten();

1 Ответ

0 голосов
/ 19 марта 2019

Я нашел пропущенную команду: после уменьшения нужно отфильтровать 0 значений, используя ".filter (ee.Filter.neq ('NDVI', null))" "

var triplets = LS7.map(function(image){
  return image.reduceRegions({
collection: noloss_v.select('system:index'),
reducer: ee.Reducer.mean().setOutputs(image.bandNames()),
scale: 30,
  }).filter(ee.Filter.neq('NDVI', null))
.map(function(feature) {
return feature.set({
  'imageID': image.id(),
  'timeMillis': image.get('system:time_start')
});
});
}).flatten();
...