Вернуть пустое имя группы после применения редуктора в GEE, используя Python - PullRequest
0 голосов
/ 10 апреля 2020

Я хотел бы получить список bandNames из изображения коллекции изображений после применения функции для вычисления среднемесячного значения. Но я обнаружил, что bandNames пусто в возвращенной коллекции изображений. Вот код:

PR_geometry = ee.Geometry.Rectangle([-67.32, 17.70, -65.19, 18.56])
imgcollection = ee.ImageCollection('COPERNICUS/S5P/OFFL/L3_NO2').\
                filterDate('2018/1/1', '2018/5/31').filterBounds(PR_geometry)

def make_datelist(n):
    return startdate.advance(n, 'month')

dates = dates.map(make_datelist)

# Get monthly mean using reducer
def getm(d1):
    d1 = ee.Date(d1)
    m = d1.get('month')
    y = d1.get('year')
    s = imgcollection.filter(ee.Filter.calendarRange(y, y, 'year'))\
        .filter(ee.Filter.calendarRange(m, m, 'month')).reduce(ee.Reducer.mean())
    return ee.Image(s)\
            .set('month', m)\
            .set('year', y)

MonthlyCollection=ee.ImageCollection(dates.map(getm))

# print out the bandNames, but return []
print(MonthlyCollection.first().bandNames().getInfo())

Однако, если просто попробовать только одно изображение, он может вернуть полный список bandNames.

# Get images in single month
singleMonth = imgcollection.filter(ee.Filter.calendarRange(2018, 2018, 'year'))\
        .filter(ee.Filter.calendarRange(1, 1, 'month'))

# Return full list of bandNames
print('List of bands:',singleMonth.first().bandNames().getInfo())
reducedimg = singleMonth.reduce(ee.Reducer.mean())

# Return full list of bandNames
print('List of bands for reducedimg:',reducedimg.bandNames().getInfo())

Итак, почему bandNames становится пустым после применения функции и как вернуть обратно?

Я тоже пробовал это, но так и не смог получить bandNames, что не так?

listOfImages = MonthlyCollection.toList(MonthlyCollection.size());
img0=ee.Image(listOfImages.get(2))
print(img0.propertyNames().getInfo())
print(img0.get('system:band_names').getInfo()) # return nothing
print(img0.get('system:band').getInfo())       # return nothing

TIA

...