def aggregate_daily(image_coll, start_date=None, end_date=None,
                    agg_type='mean'):
    """Aggregate images by day without using joins

    The primary purpose of this function is to join separate Landsat images
    from the same path into a single daily image.

    Parameters
    ----------
    image_coll : ee.ImageCollection
        Input image collection.
    start_date :  date, number, string, optional
        Start date.
        Needs to be an EE readable date (i.e. ISO Date string or milliseconds).
    end_date :  date, number, string, optional
        Exclusive end date.
        Needs to be an EE readable date (i.e. ISO Date string or milliseconds).
    agg_type : {'mean'}, optional
        Aggregation type (the default is 'mean').
        Currently only a 'mean' aggregation type is supported.

    Returns
    -------
    ee.ImageCollection()

    Notes
    -----
    This function should be used to mosaic Landsat images from same path
        but different rows.
    system:time_start of returned images will be 0 UTC (not the image time).

    """
    if start_date and end_date:
        test_coll = image_coll.filterDate(ee.Date(start_date), ee.Date(end_date))
    elif start_date:
        test_coll = image_coll.filter(ee.Filter.greaterThanOrEquals(
            'system:time_start', ee.Date(start_date).millis()))
    elif end_date:
        test_coll = image_coll.filter(ee.Filter.lessThan(
            'system:time_start', ee.Date(end_date).millis()))
    else:
        test_coll = image_coll

    # Build a list of dates in the image_coll
    def get_date(time):
        return ee.Date(ee.Number(time)).format('yyyy-MM-dd')

    date_list = ee.List(test_coll.aggregate_array('system:time_start'))\
        .map(get_date).distinct().sort()

    def aggregate_func(date_str):
        start_date = ee.Date(ee.String(date_str))
        end_date = start_date.advance(1, 'day')
        agg_coll = image_coll.filterDate(start_date, end_date)

        # if agg_type.lower() == 'mean':
        agg_img = agg_coll.mean()
        # elif agg_type.lower() == 'median':
        #     agg_img = agg_coll.median()

        return agg_img.set({
            'system:index': start_date.format('yyyyMMdd'),
            'system:time_start': start_date.millis(),
            'date': start_date.format('yyyy-MM-dd'),
        })

    return ee.ImageCollection(date_list.map(aggregate_func))
def aggregate_daily ( image_coll , start_date = None , end_date = None , agg_type = 'mean' ) : if start_date and end_date : test_coll = image_coll . filterDate ( ee . Date ( start_date ) , ee . Date ( end_date ) ) elif start_date : test_coll = image_coll . filter ( ee . Filter . greaterThanOrEquals ( 'system:time_start' , ee . Date ( start_date ) . millis ( ) ) ) elif end_date : test_coll = image_coll . filter ( ee . Filter . lessThan ( 'system:time_start' , ee . Date ( end_date ) . millis ( ) ) ) else : test_coll = image_coll def get_date ( time ) : return ee . Date ( ee . Number ( time ) ) . format ( 'yyyy-MM-dd' ) date_list = ee . List ( test_coll . aggregate_array ( 'system:time_start' ) ) . map ( get_date ) . distinct ( ) . sort ( ) def aggregate_func ( date_str ) : start_date = ee . Date ( ee . String ( date_str ) ) end_date = start_date . advance ( 1 , 'day' ) agg_coll = image_coll . filterDate ( start_date , end_date ) agg_img = agg_coll . mean ( ) return agg_img . set ( { 'system:index' : start_date . format ( 'yyyyMMdd' ) , 'system:time_start' : start_date . millis ( ) , 'date' : start_date . format ( 'yyyy-MM-dd' ) , } ) return ee . ImageCollection ( date_list . map ( aggregate_func ) )
Aggregate images by day without using joins

    The primary purpose of this function is to join separate Landsat images
    from the same path into a single daily image.

    Parameters
    ----------
    image_coll : ee.ImageCollection
        Input image collection.
    start_date :  date, number, string, optional
        Start date.
        Needs to be an EE readable date (i.e. ISO Date string or milliseconds).
    end_date :  date, number, string, optional
        Exclusive end date.
        Needs to be an EE readable date (i.e. ISO Date string or milliseconds).
    agg_type : {'mean'}, optional
        Aggregation type (the default is 'mean').
        Currently only a 'mean' aggregation type is supported.

    Returns
    -------
    ee.ImageCollection()

    Notes
    -----
    This function should be used to mosaic Landsat images from same path
        but different rows.
    system:time_start of returned images will be 0 UTC (not the image time).