我有两个图像集。第一个带有 Sentinel 1 图像,第二个带有 ndvi 图像。
我想屏蔽所有 ndvi > 0.6 的 Sentinel 1 图像像素,以计算低到中等植被区域的平均值。
我面临的问题是两个集合中的图像不共享相同的日期。我写了一些代码,我得到了值,但我不确定我到底在做什么。
fc_aoi = ee.FeatureCollection(data) #data == some geojson polygons
ic_s1 = ee.ImageCollection('COPERNICUS/S1_GRD').filterBounds(fc_aoi).filterDate(ee.Date(start), ee.Date(end)).filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VV'))
#NDVI
def get_ndvi(start,stop,fc):
"""
Arguments:
"""
def maskS2clouds(image):
qa = image.select('QA60')
#Bits 10 and 11 are clouds and cirrus, respectively.
cloudBitMask = 1 << 10
cirrusBitMask = 1 << 11
#Both flags should be set to zero, indicating clear conditions.
mask = qa.bitwiseAnd(cloudBitMask).eq(0).And(qa.bitwiseAnd(cirrusBitMask).eq(0))
return image.updateMask(mask).divide(10000).copyProperties(image, ['system:time_start'])
def NDVI(image):
ndvi = image.normalizedDifference(['nir','red']) #(first − second) / (first + second)
return image.addBands(ndvi).rename(image.bandNames().add('NDVI')).copyProperties(image, ['system:time_start'])
def mask_ndvi(image):
return image.lte(0.65).copyProperties(image, ['system:time_start'])
bandNamesOut_s2 = ['Aerosols','blue','green','red','red edge 1','red edge 2','red edge 3','nir','red edge 4','water vapor','cirrus','swir1','swir2','QA60']
bandNamesS2 = ['B1','B2','B3','B4','B5','B6','B7','B8','B8A','B9','B10','B11','B12','QA60']
s2_1c = ee.ImageCollection('COPERNICUS/S2').select(bandNamesS2,bandNamesOut_s2).filterDate(ee.Date(start), ee.Date(stop)).filterBounds(fc).map(maskS2clouds).map(NDVI)
return s2_1c.select('NDVI').map(mask_ndvi)
ndvi_mask = get_ndvi(datetime.strptime(start,'%Y-%m-%d') - pd.DateOffset(months=1),datetime.strptime(end,'%Y-%m-%d') + pd.DateOffset(months=+1), fc_aoi)
s1_mean = ee.FeatureCollection(ic_s1.map(mask_by_ndvi))
我想也许有一种方法可以将新乐队(ndvi)添加到 s1 集合中,然后屏蔽和减少,但我不知道如何在不同的日期完成这项工作?