Как я могу эффективно использовать точки выборки в движке Google Earth?

#google-earth-engine

Вопрос:

Я хотел бы использовать Earth Engine для выборки растровых данных с помощью точек и сохранения этой информации в локальном файле. Я делаю это, создавая FeatureCollection геометрию точек, а затем передаю эту структуру reduceRegions вызову. Я повторяю результат getInfo , чтобы получить выборочные растровые данные. Однако время выполнения этой функции намного медленнее, чем я ожидал. Есть ли какой-либо способ получить обратную связь во время выполнения о задании, которое обрабатывается в GEE, или лучший способ асинхронно запрашивать задания для загрузки на стороне клиента?

Это упрощенная, но функциональная версия того, что я пытаюсь сделать, которая занимает 30 секунд при первом запуске. Мои фактические данные включают тысячи точек, и время ожидания заставляет меня задуматься, не сделал ли я что-то не так.

 import ee


def main():
    """Entry point."""
    ee.Initialize()

    pts = ee.FeatureCollection([
      ee.Feature(ee.Geometry.Point([-118.6010, 37.0777])),
      ee.Feature(ee.Geometry.Point([-118.5896, 37.0778])),
      ee.Feature(ee.Geometry.Point([-118.5842, 37.0805])),
      ee.Feature(ee.Geometry.Point([-118.5994, 37.0936])),
      ee.Feature(ee.Geometry.Point([-118.5861, 37.0567]))
    ])

    img = ee.ImageCollection("LANDSAT/LT05/C01/T1_8DAY_NDVI").filterDate('1997-01-01', '2019-01-01')
    mean_img = img.reduce(ee.Reducer.mean())
    samples = mean_img.reduceRegions(**{
        'collection': pts,
        'scale': 30,
        'reducer': 'mean'}).getInfo()  #  <<< takes a long time to run! better way to do this?
    for sample in samples['features']:
        print(f"{sample['geometry']['coordinates']}, {sample['properties']['mean']}")


if __name__ == '__main__':
    main()

 

Комментарии:

1. Я голосую за то, чтобы закрыть этот вопрос, потому что он относится к gis.stackexchange.com

2. То, что занимает так много времени, скорее всего, является получением среднего значения для стека изображений. Подумайте о количестве изображений, к которым он должен получить доступ за это время!