Double loop with map() function in Google Earth Engine

后端 未结 3 821
轻奢々
轻奢々 2021-01-03 14:08

In Google Earth Engine Developer\'s Guide, there is a recommendation to avoid for() loops. They recommend to use map() function as this example:

3条回答
  •  温柔的废话
    2021-01-03 14:47

    The easy way to do this is with a single map over the "months" you care about.

    // Collect images for each month, starting from 2000-01-01.
    var months = ee.List.sequence(0, 18*12).map(function(n) {
      var start = ee.Date('2000-01-01').advance(n, 'month')
      var end = start.advance(1, 'month')
      return ee.ImageCollection("MODIS/MYD13A1").filterDate(start, end)
    })
    print(months.get(95))
    

    This will return a list of ImageCollections. Most months will have only 1 image, since MYD13A1 contains 16-day images, but some will have two. Month 95 is Jan of 2008 and has two.

    Alternatively, you could join the collection with a collection of dates, but this is simpler.

    And you should prefer filterDate over calendarRange when possible, as it's optimized.

提交回复
热议问题