Получение данных изображения из Earth Engine
Чтобы перенести данные изображений из Earth Engine на Google Диск, в Cloud Storage или объект Earth Engine, можно использовать Export. В этом случае задача полностью обрабатывается Earth Engine. Если при экспорте возникают проблемы с масштабированием (например, он занимает больше суток, возвращает ошибки памяти или времени ожидания) или вы уже знакомы с такими фреймворками, как Apache Beam, Spark или Dask, вам могут подойти описанные здесь методы извлечения данных. Рабочие процессы, реализованные в этих фреймворках, можно масштабировать с помощью таких инструментов Google Cloud, как Dataflow или Dataproc.
В частности, в этом руководстве описаны методы отправки запросов на получение данных изображений вручную с помощью getPixels или computePixels.
В данном случае под данными изображений понимаются многомерные массивы значений пикселей с согласованным масштабом и проекцией. Регион, масштаб, проекция и/или размеры указываются в запросе. Возможные форматы вывода перечислены на странице ImageFileFormat. В качестве целевого местоположения можно выбрать Cloud Storage или любой локальный каталог. Запросы вручную сложнее, но позволяют обрабатывать большие объемы данных.
Получение данных изображений из существующих объектов
Используйте getPixels, чтобы получить данные изображений из существующих объектов Earth Engine. Идентификатор объекта передается непосредственно в запрос, поэтому вы не можете выполнять какие-либо вычисления с пикселями до их извлечения. Возвращается блок пикселей в указанном регионе, масштабе, проекции и формате. В следующем примере показано, как получить временной ряд NDVI из коллекции изображений MODIS с помощью getPixels.
Как получить данные из вычисленных изображений
Используйте computePixels, чтобы получить данные из вычисленного изображения, например составного. В случае с computePixels вы передаете вычисленный объект ee.Image через параметр expression. Возвращается блок вычисленных пикселей в указанном регионе, масштабе, проекции и формате. В следующем примере показано, как получить фрагменты мультиспектральных данных из композитного изображения Sentinel-2 без облаков.
Распараллеливание запросов вручную
Хотя вы можете отправлять запросы для любых целей и в любом объеме, для более крупных рабочих процессов может потребоваться параллельная отправка запросов. Чтобы отправлять много таких запросов параллельно, используйте конечную точку Earth Engine с высокой пропускной способностью. Количество параллельных запросов определяется квотой на одновременные интерактивные запросы. Подробную информацию о том, когда следует использовать конечную точку для больших объемов данных, можно найти на странице Earth Engine, посвященной большим объемам данных.
Многопоточность
Для одновременных запросов можно использовать потоки. Этот подход демонстрируется в блокнотах getPixels и computePixels.
Apache Beam
Для параллельной обработки запросов можно использовать конвейеры Apache Beam. Эти конвейеры можно запускать локально или как задания Google Dataflow. Примеры можно посмотреть в этом тренинге Geo for Good или в этой демонстрации People, Planet and AI. В качестве альтернативы можно использовать другие библиотеки распараллеливания, например Dask и Apache Spark.
Запустить в Google Colab
Посмотреть исходный код на GitHub