Часто задаваемые вопросы

Общие вопросы

У меня возникла проблема, мне нужна помощь!

Задайте вопрос, следуя этому руководству, и предоставьте как можно больше информации (см. руководство Stack Overflow по задаванию хороших вопросов). Обычно это означает следующее:

  • отправить ссылку на скрипт в редакторе кода (нажмите кнопку "Получить ссылку");

  • предоставлять доступ к объектам, необходимым для работы скрипта.

  • Для пакетных задач, которые не удалось выполнить, укажите идентификатор задачи. Идентификатор задачи выглядит так: 4C25GIJBMB52PXTEJTF4JLGL. Их можно найти на вкладке Task (Задача) в редакторе кода. Подробнее…

Где можно почитать об архитектуре Earth Engine?

Подробнее об этом читайте в статье Gorelick et al. 2017.

Ознакомьтесь со страницами EDU и Ресурсы для обучения.

Посмотрите бесплатный курс по Earth Engine от Уджавала Ганди (Ujaval Gandhi), в который входит видео с введением в дистанционное зондирование.

Программирование в Earth Engine

Какие ошибки в коде встречаются чаще всего?

Ознакомьтесь с руководством по отладке.

Почему я получаю ошибку "... is not a function"?

Эта ошибка возникает, когда Earth Engine не может найти вызванный метод. Проверьте следующие распространенные причины:

Орфография или регистр. В методах учитывается регистр. Проверьте написание в документации по API.

Error: img.normalizedDiff(...) -> Correct: img.normalizedDifference(...)

Отсутствие приведения типов. Значения, возвращаемые такими функциями, как .get(), являются общими экземплярами ee.ComputedObject и должны быть явно приведены. Подробнее о приведении типов неизвестных объектов…

Error: dict.get('val').add(5) -> Correct: ee.Number(dict.get('val')).add(5)

Смешивание клиентских и серверных методов. Убедитесь, что вы не используете стандартные методы JavaScript или Python (например, .push() или .append()) для объектов Earth Engine. Подробнее о разделении функций клиента и сервера…

Error: list.push(4) or list.append(4) -> Correct: list.add(4)

Недоступные методы. Если объект правильно типизирован и метод существует в документации или работал ранее, но теперь не работает, сообщите об ошибке.

Почему я не могу использовать простые математические выражения, например ee.Image("image") * 2?

В EE не следует смешивать серверные и клиентские объекты или операции. Все операции с объектами EE выполняются на стороне сервера. Любые клиентские вычисления не будут работать так, как вы планировали. Подробнее об этом читайте в статье о настройке тегов.

Как использовать циклы for или операторы if/else?

Программирование в Earth Engine выполняется с использованием функционального языка, поэтому циклы и условные операции должны быть выражены с использованием эквивалентных концепций, таких как map или filter. Подробнее об этом…

Как показывать текстовые ярлыки на изображении или видео?

Встроенная поддержка текстовых ярлыков отсутствует, но вы можете:

Можно ли использовать стандартные цветовые палитры?

Используйте сторонний пакет JS ee-palettes.

Как создать сайт, использующий Earth Engine?

Для простых приложений используйте Earth Engine Apps. В более сложных случаях вы можете создавать приложения App Engine на базе Earth Engine.

Как работают идентификаторы карт?

Идентификаторы карт (в API они называются mapid) – это ключи, которые позволяют клиентам получать фрагменты карт. Каждый идентификатор представляет собой хеш, созданный путем передачи выражения изображения в конечную точку getMapId. Полученные идентификаторы – это ключи, которые указывают на выражение изображения и учетные данные пользователя, которые будут использоваться для создания элементов на более позднем этапе.

При запросе фрагментов карты необходимо указать их местоположение (x, y, zoom), а также mapid (ключ к изображению и учетные данные). Один и тот же идентификатор можно использовать для загрузки нескольких фрагментов карты. Ключи mapid можно использовать неограниченное количество раз, но срок их действия истекает через несколько часов. Мы не публикуем точные сроки их действия, но любой написанный вами код должен быть устойчив к истечению срока действия идентификатора.

Создание таких идентификаторов включает хранение небольшого объема данных и проверку учетных данных, поэтому лучше использовать их повторно как можно дольше. Для конечной точки getMapId нет квоты API, но если вы создаете объекты mapid почти с той же скоростью, с которой получаете фрагменты, то, скорее всего, вы что-то делаете неправильно. В Earth Engine нет конечной точки API для удаления, перечисления или управления этими идентификаторами, поскольку это временные ресурсы.

Почему ee.Algorithms.If() выводит и истинное, и ложное значение?

function a() { print("true"); }
function b() { print("false"); }
// Prints 'true' and 'false'.
ee.Algorithms.If(true, a(), b());

Алгоритм If() работает так же, как и любой другой алгоритм в Earth Engine: все его аргументы должны быть вычислены до того, как сам алгоритм сможет запуститься. Алгоритм получает результаты trueCase и falseCase, а затем выбирает и возвращает один из них на основе аргумента condition. Однако для того, чтобы эти значения были переданы в алгоритм, необходимо выполнить оба пути.

Я получаю ошибку "Размер полезной нагрузки запроса превышает ограничение"

Вы пытаетесь отправить в Earth Engine очень большой запрос. Обычно это происходит, когда в коде используется много клиентских циклов for или FeatureCollection создается из множества геометрических объектов. В последнем случае вместо создания таких геометрий в скрипте сгенерируйте CSV-файл, содержащий их, и загрузите его в объект таблицы.

Чем ee.Image.clip() отличается от ee.Filter.bounds()?

Подробную информацию можно найти в этой теме на GIS Stack Exchange. Функция ee.Image.clip() маскирует пиксели, которые не пересекаются с заданным объектом ee.Geometry или ee.Feature, делая их прозрачными в визуализациях и исключая из вычислений. Вы можете представить это как обрезку пикселей с изображения.

Функция ee.Filter.bounds() отфильтровывает объекты ee.Image из ee.ImageCollection на основе пересечения изображения с ee.Geometry или ee.Feature. Он используется, чтобы ограничить область анализа только теми изображениями, которые пересекаются с заданным регионом. Это помогает оптимизировать выражения.

Как преобразовать пиксели изображения в коллекции объектов, по одному объекту на пиксель?

Используйте функцию ee.Image.sample(). Примеры использования можно найти на странице справки по API.

Чем ee.ImageCollection.merge() отличается от ee.ImageCollection.combine()?

Функция ee.ImageCollection.merge() объединяет все изображения из двух коллекций в одну, независимо от того, совпадают ли у них полосы, метаданные, CRS или масштаб. Это объединение двух коллекций. Метод combine() объединяет каналы соответствующих изображений из двух коллекций в одну. У совпадающих изображений должен быть одинаковый идентификатор (свойство system:index). Это внутреннее объединение двух коллекций на основе идентификатора изображения, в котором объединяются полосы из совпадающих изображений. Для совпадающих изображений полосы из вторичного изображения добавляются к первичному (перезапись необязательна). Если подходящих изображений нет, возвращается пустая коллекция.

Как отфильтровать коллекции изображений по нескольким интервалам дат?

Подробную информацию можно найти в этой теме на GIS Stack Exchange. merge() несколько коллекций или используйте ee.Filter.or().

Как создать граничную рамку вокруг заданной точки?

// Buffer the point by a chosen radius and then get the bounding box.
var LNG = -117.298;
var LAT = 45.162;
var point = ee.Geometry.Point([LNG, LAT]);
var buffer = point.buffer(30000); // half of box width as buffer input
var box = buffer.bounds(); // draw a bounding box around the buffered point
Map.centerObject(box);
Map.addLayer(point);
Map.addLayer(box);

// Map the buffer and bounds procedure over a point feature collection.
var pointCol = ee.FeatureCollection([
  ee.Feature(ee.Geometry.Point([LNG + 1, LAT])),
  ee.Feature(ee.Geometry.Point([LNG - 1, LAT]))
]);
var boxCol = pointCol.map(function(feature) {
  var box = feature.buffer(30000).bounds();
  return feature.setGeometry(box.geometry());
});
Map.addLayer(boxCol);

Data Catalog

Можно ли добавить набор данных X?

Сообщите об ошибке в запросе набора данных, следуя руководству по запросу набора данных.

Вы также можете загрузить данные в домашнюю папку Earth Engine. Подробнее об импорте растровых изображений и об импорте табличных данных…

Для существующего набора данных доступна новая версия.

Сообщите об ошибке в наборе данных, следуя руководству по запросу набора данных, и укажите, что вы запрашиваете обновление набора данных.

Существующий набор данных не обновлен или в нем отсутствуют объекты

Прежде чем сообщать о проблеме, по возможности убедитесь, что выбранные объекты действительно существуют на сайте поставщика набора данных. Подробную информацию вы найдете в руководстве по отсутствующим изображениям.

Если вы ищете объект, используя фильтры ImageCollection, убедитесь, что они не слишком строгие.

В частности, обратите внимание на следующее:

  • Для ранних сцен уровня 1 ЕКА не создавало данные Sentinel-2 SR (уровень 2).

  • До 2000 года спутники Landsat не охватывали всю поверхность Земли.

Существующий набор данных содержит неверные значения

Опубликуйте вопрос на форуме разработчиков. Добавьте скрипт, который увеличивает исходное разрешение объекта и позволяет четко увидеть, какие значения неверны. Укажите, где именно вы видели альтернативное значение.

Где ещё можно задать вопросы о наборах данных?

Если у вас есть вопросы о наборах данных NASA, посетите форум NASA Earth Data.

Если у вас есть вопросы о наборах инструментов, работающих с наборами данных Copernicus, посетите форумы S1, S2 и S3.

Каков размер каталога EE?

По состоянию на октябрь 2023 года каталог содержит более 1000 наборов данных. Размер на диске превышает 90 петабайт (с учетом сжатия без потерь).

Как часто обновляются данные в EE?

Обычно все текущие наборы данных обновляются не реже одного раза в день (хотя не все такие наборы данных содержат новые данные каждый день). Некоторые наборы данных обновляются несколько раз в день. Однако нет правила, которое бы гарантировало, что в каталоге будут самые новые объекты.

Как посмотреть содержимое каталога EE программно?

Список наборов данных экспортируется в формате STAC в сегмент Google Cloud Storage gs://earthengine-stac. Файл записи – catalog.json.

Можно ли использовать данные или изображения Google Карт для анализа?

Google не лицензирует и не продает данные базовых карт для анализа.

Как узнать дату загрузки объекта?

Свойство объекта 'system:version' – это временная метка загрузки, отформатированная как микросекунды с начала эпохи Unix. Вот пример, который преобразует временную метку приема изображения Landsat в удобочитаемый формат.

var image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508');
print('Ingest date', ee.Date(image.getNumber('system:version').divide(1000)));

Есть ли в каталоге Earth Engine метаданные JSON-LD?

Да, метаданные JSON-LD встроены в HTML-страницы каталога. Например, на странице Sentinel-2 есть следующий блок:

<script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [{
      "@type": "ListItem",
      "position": 1,
      "name": "Earth Engine Data Catalog",
      "item": "https://developers.google.com/earth-engine/datasets"
    },{
      "@type": "ListItem",
      "position": 2,
      "name": "Harmonized Sentinel-2 MSI: MultiSpectral Instrument, Level-1C",
      "item": "https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_HARMONIZED"
    }]
  }
  </script>

Landsat

Как реализован алгоритм simpleComposite?

Реализация на стороне сервера эквивалентна этому коду JavaScript.

Как создать композитные изображения без облаков на основе данных об отражательной способности поверхности, полученных со спутников Landsat?

Данные Landsat уровня 2 (отражательная способность поверхности) имеют несколько полос качества, которые можно использовать для маскировки облаков и других нежелательных артефактов изображения. Пример использования этих каналов для обработки изображений Landsat 8 SR и создания медианного составного изображения без облаков приведен в этой публикации GIS Stack Exchange. Та же процедура используется для создания композитного изображения без облаков, которое используется в примерах классификации с учителем в руководстве для разработчиков.

Нужно ли согласовывать отражательную способность поверхности Landsat между датчиками?

Roy et al., 2016, в которой анализируются различия в отражательной способности между Landsat 7-8 TOA и поверхностью. Они опубликовали коэффициенты OLS и RMA, чтобы читатели могли преобразовать значения отражательной способности данных одного датчика в другой. В последней строке статьи говорится: "Хотя различия между датчиками довольно малы, они могут оказывать значительное влияние в зависимости от применения данных Landsat". Однако этот анализ был основан на данных, полученных до сбора.

Улучшения, внесенные во время повторной обработки Коллекции 1 и Коллекции 2, могут повлиять на взаимосвязь между датчиками, но, насколько нам известно, не было проведено никаких анализов, аналогичных Roy et al. (2016) для данных Коллекции 1 или Коллекции 2. Несмотря на отсутствие формального анализа, среди влиятельных пользователей Landsat существует общее согласие в том, что для данных Collection 2, Level 2 (отражательная способность поверхности) коррекция не требуется. Например, отвечая на вопрос о необходимости гармонизации Collection 2, Level 2, Майк Вулдер из научной группы Landsat отметил, что в зависимости от характера интересующего приложения (включая картографирование растительного покрова и обнаружение изменений) продукты отражательной способности поверхности Collection 2 очень подходят и надежны, без необходимости перекрестной настройки датчиков.

Как замаскировать облака и их тени на снимках MSS?

Сторонний модуль msslib для редактора кода JavaScript включает реализацию алгоритма MSScvm, а также другие полезные функции для изучения и подготовки данных MSS.

Управление данными

Кому принадлежат загруженные мной данные?

Согласно Условиям использования Earth Engine, клиенты владеют данными, которые они загружают в Earth Engine.

Не удается загрузить данные

Проверьте статус загрузки на панели Tasks (Задачи) в правом верхнем углу редактора кода. Вы также можете перейти на специальную страницу задачи.

Если задачи нет, возможно, вы пытались загрузить файл через редактор кода, но из-за проблем с сетью загрузка не была завершена, поэтому задача не была создана. Попробуйте использовать другой браузер или компьютер.

Если задача не выполнена, изучите сообщение об ошибке. Если конкретного сообщения об ошибке нет, сначала убедитесь, что файл не поврежден. Для этого запустите gdalinfo для растровых файлов или ogr2ogr для векторных файлов. Эти команды попытаются прочитать все данные из исходных файлов и покажут ошибки, если файлы повреждены.

Пример вызова gdalinfo:

gdalinfo -mm -stats -checksum file.tif

Пример вызова ogr2ogr, который преобразует in.shp в out.csv:

ogr2ogr -lco GEOMETRY=AS_WKT -f CSV out.csv in.shp

Если файл выглядит правильно, опубликуйте идентификатор невыполненной задачи в виде текста (не скриншота) в списке рассылки для разработчиков. Идентификаторы задач имеют следующий формат: 4C25GIJBMB52PXTEJTF4JLGL. По возможности сделайте исходный файл общедоступным. Если файл личный, поделитесь им только с earthengine@google.com, чтобы команда Earth Engine могла его изучить. Если вы не можете предоставить исходный файл, отправьте хотя бы результат выполнения команды gdalinfo -mm -stats -checksum.

Если Earth Engine не поддерживает определенную проекцию, вам нужно будет перепроецировать данные перед загрузкой, например, с помощью gdalwarp.

Как загрузить файл в формате NetCDF или другом неподдерживаемом растровом формате?

В Earth Engine можно загружать только файлы GeoTIFF. Другие форматы, совместимые с GDAL, можно преобразовать в GeoTIFF с помощью gdal_translate. Пример:

gdal_translate -co COMPRESS=DEFLATE file.nc file.tif

Обратите внимание, что некоторые файлы NetCDF или HDF состоят из нескольких поднаборов данных, которые можно обнаружить с помощью gdalinfo. В этом случае команда gdal_translate будет выглядеть следующим образом (обратите внимание на путь в двойных кавычках):

gdal_translate HDF4_EOS:EOS_GRID:"/tmp/MCD12Q1.A2001001.h00v08.005.2011055224312.hdf":MOD12Q1:Land_Cover_Type_1 file.tif

Иногда файлы NetCDF не содержат проекцию, которую распознает GDAL. В этом случае вам нужно будет задать проекцию и пространственный охват в командной строке gdal_translate. Пример:

gdal_translate -a_srs EPSG:4326 -a_ullr -180 90 180 -90 file.nc file.tid

Какие алгоритмы сжатия можно использовать для загружаемых файлов GeoTIFF?

Для загрузки файлы GeoTIFF можно сжать с помощью DEFLATE, JPEG, JPEG-XL/JXL, LERC, LERC_DEFLATE, LERC_ZSTD, LZMA, LZW, WEBP или ZSTD. Для COG, которые Earth Engine считывает на месте (с помощью ee.Image.loadGeoTIFF() или как объекты на основе COG), можно использовать DEFLATE, JPEG, LZW, PACKBITS, ZSTD или не использовать сжатие (см. рекомендации по работе с COG). ZSTD – хороший выбор, поскольку он быстро распаковывает данные и обеспечивает хорошее сжатие большинства изображений.

Чтобы применить сжатие ZSTD при использовании gdal_translate, добавьте эти параметры. Если в данных есть значения с плавающей запятой, измените PREDICTOR на 3. Если вы планируете зарегистрировать файлы как COG, а не загружать их, ознакомьтесь с руководством по регистрации COG.

gdal_translate in.tif out.tif \
  -co BIGTIFF=YES \
  -co TILED=YES \
  -co BLOCKXSIZE=512 \
  -co BLOCKYSIZE=512 \
  -co COMPRESS=ZSTD \
  -co PREDICTOR=2 \
  -co ZSTD_LEVEL=16 \
  -co INTERLEAVE=BAND \
  -co NUM_THREADS=ALL_CPUS

Загрузка растровых изображений выполняется уже несколько дней и не завершается.

С помощью gdalinfo проверьте, задан ли в файле следующий параметр GDAL: INTERLEAVE=PIXEL. Для файлов с этим параметром и большим количеством полос загрузка может никогда не завершиться, поскольку макет таких файлов делает чтение очень медленным.

Перед загрузкой попробуйте преобразовать такие файлы в формат с чередованием по полосам:

gdal_translate -co "INTERLEAVE=BAND" src.tif dst.tif

Это относится к загрузке. Объекты, поддерживаемые COG, поддерживают оба типа чередования (см. раздел Одноканальные и многоканальные файлы).

Загруженные растровые изображения не соответствуют базовой карте.

Если данные немного смещены относительно базовой карты, то, скорее всего, в проекции неправильно задана референц-система (предположение о форме Земли). Чаще всего это происходит с синусоидальной проекцией, которую невозможно полностью закодировать в метаданных GDAL. Если вы знаете, какая проекция должна быть целевой (например, SR-ORG:6974 для файлов, использующих синусоидальную проекцию MODIS), установите флаг --crs во время загрузки из командной строки или поле crs манифеста загрузки.

Если данные сильно искажены или находятся в совершенно неправильном месте, скорее всего, проекция или аффинное преобразование неверны.

Мое растровое изображение отображается только в Восточном полушарии.

Вероятно, вы загрузили глобальное растровое изображение, которое охватывает диапазон долготы [0, 360]. Однако Earth Engine требует, чтобы растры находились в диапазоне [-180, 180]. Поменяйте местами левую и правую половины растрового изображения перед загрузкой. Ознакомьтесь с рекомендациями на сайте GIS Stack Exchange.

Почему загруженное изображение классификации выглядит пятнистым?

Вероятно, вы использовали правило пирамиды по умолчанию (MEAN). Для изображений классификации следует использовать политику пирамиды MODE, а для изображений контроля качества и битовой маски – политику пирамиды SAMPLE.

Появляется ошибка "No data value -128.0 cannot be applied to band #0 of type Short<0, 255>".

GDAL не может обрабатывать однобайтовые полосы как содержащие целые числа со знаком, поэтому он считывает такие полосы как целые числа без знака. Это может привести к конфликту с отрицательными значениями, указывающими на отсутствие данных.

Если ваши значения на самом деле являются целыми числами со знаком, используйте загрузку манифеста и добавьте в раздел набора фрагментов, содержащий ваш файл, следующее: data_type: "INT8".

Если значения являются целыми числами без знака, в файле указано неверное значение nodata. При загрузке вы можете переопределить его, указав правильное значение (или значение, которое никогда не встречается, если оно существует). Вы также можете использовать gdal_translate -a_nodata, чтобы изменить значение nodata, или gdal_edit.py -unsetnodata, чтобы удалить его.

Как загрузить файл в формате GeoJSON или другом неподдерживаемом векторном формате?

Используйте ogr2ogr, чтобы преобразовать совместимые с OGR форматы в CSV или SHP. Пример:

or2ogr -f "ESRI Shapefile" file.shp file.kml

Обратите внимание, что при загрузке CSV-файлов столбец геометрии может содержать GeoJSON.

Я хочу загрузить данные с помощью Python или загрузить много файлов одновременно.

Используйте загрузку через командную строку. Для этого исходные файлы сначала нужно поместить в сегмент GCS (Google Cloud Storage). Использование GCS бесплатно, если вы не превышаете лимиты бесплатного плана. Подробнее о ценах…

Я хочу загрузить большую растровую мозаику, разделенную на множество фрагментов.

Если у всех файлов одинаковая проекция и размер пикселя, просто загрузите их вместе в один объект – они будут автоматически объединены в мозаику.

Если у файлов разные проекции или размеры пикселей, их нельзя объединить в один растровый объект. Вместо этого загрузите каждый фрагмент как отдельный объект в одну и ту же коллекцию ImageCollection, которую можно объединить в мозаику с помощью ImageCollection.mosaic().

Я пытаюсь загрузить мозаику и получаю ошибки о несовпадающих фрагментах.

Тайлы для растровых мозаик Earth Engine должны иметь одинаковую проекцию и размер пикселя. Кроме того, фрагменты должны быть точно выровнены по границам пикселей.

Я пытаюсь загрузить файл из сегмента GCS, но Earth Engine не может его найти.

Возможно, вы использовали разные аккаунты Google для загрузки в GCS и подключения к Earth Engine. Убедитесь, что файл GCS доступен для чтения аккаунту, который вы используете для подключения к Earth Engine. Если у вас несколько аккаунтов, откройте Earth Engine в режиме инкогнито.

Я хочу экспортировать много объектов за один раз.

Каждое изображение нужно экспортировать отдельно.

Я хочу переместить или удалить Folder или ImageCollection одной командой.

earthengine rm -r удаляет папку или коллекцию и все ее содержимое, но по одному объекту за раз, поэтому удаление большой коллекции может занять несколько часов. Чтобы ускорить процесс, удалите дочерние элементы параллельно с помощью скрипта, а затем удалите родительский элемент (см. раздел Работа с большими коллекциями). Тот же подход работает для любой плоской коллекции или папки. Папку, содержащую другие папки или коллекции, необходимо очищать снизу вверх, поскольку контейнер нельзя удалить, пока он не пуст. Чтобы переместить, используйте mv таким же образом.

Я хочу получить прямой доступ к данным Earth Engine извне EE.

В QGIS есть плагин Earth Engine.

В GDAL есть драйвер Earth Engine.

Другие системы могут использовать REST API Earth Engine.

Я хочу обновить часть объекта Earth Engine, не загружая его заново.

Обновить растровые или векторные данные, загруженные в EE, невозможно. Обновлять можно только свойства метаданных объектов. Исключение составляют объекты, поддерживаемые COG. Их можно связать с обновленным файлом Cloud Storage, повторно зарегистрировав их с включенной перезаписью.

Я теряю доступ к аккаунту. Что делать с объектами?

Если правила исходного аккаунта разрешают передачу данных, предоставьте доступ к объектам другому аккаунту, а затем скопируйте их, чтобы они принадлежали новому аккаунту. Если объектов много, используйте утилиту копирования командной строки.

Если аккаунт удален, объекты, принадлежащие ему, становятся недоступны.

Экспортированное изображение находится не там, где нужно.

В некоторых проекциях, например синусоидальной или конической, файлы GeoTIFF иногда не могут хранить все необходимые параметры проекции. В результате экспортированный файл будет отображаться в неправильном месте при просмотре в настольных инструментах ГИС или повторном импорте в EE.

Чтобы устранить эту проблему, укажите параметр экспорта crs, который хорошо работает с файлами GeoTIFF. Например, используйте код EPSG для зоны UTM, содержащей интересующую вас область.

Экспортированные объекты FeatureCollection не сохраняют заданные мной свойства.

Ни одна функция Export.table.* не сохраняет свойства на уровне таблицы в выходных данных. Многие форматы выходных данных (например, CSV и GeoJSON) не поддерживают такие метаданные. Функция Export.table.toAsset может поддерживать свойства на уровне таблицы, но в настоящее время этого не делает.

Таблицы, экспортированные на Диск в формате CSV, преобразуются в формат XLSX.

В зависимости от настроек Google Диска таблицы CSV, экспортируемые из Earth Engine, могут быть преобразованы в файлы XLSX с непредвиденными эффектами, такими как преобразование типов данных. Чтобы изменить поведение для последующих экспортов, выполните следующие действия:

  1. В Google Диске в интернете нажмите на значок настроек в правом верхнем углу.
  2. Выберите "Настройки".
  3. Прокрутите страницу вниз и снимите флажок "Преобразовывать загруженные файлы в формат Google".

Cloud Optimized GeoTIFF (COG)

Дополнительную информацию можно найти в обзоре COG и руководстве по регистрации COG.

Я поделился объектом, поддерживаемым COG, но мои соавторы получают ошибку разрешения.

Объект на основе COG – это указатель на файлы в сегменте Cloud Storage, поэтому соавторам нужен доступ на чтение как к объекту Earth Engine, так и к сегменту. Предоставьте им роли Наблюдатель объектов в хранилище и Наблюдатель сегмента хранилища. Ошибка доступа к объекту, который они могут видеть, обычно означает, что у них нет одной из этих ролей. Подробнее о настройке разрешений…

Какое местоположение сегмента Cloud Storage следует использовать для хранения объектов COG?

Поддерживается лишь несколько местоположений в США. Earth Engine отклоняет запросы на регистрацию и чтение для сегментов, расположенных в других местах. Ознакомьтесь со списком поддерживаемых местоположений сегментов.

Я заменил файл COG в Cloud Storage. Почему объект не загружается или по-прежнему содержит старые данные?

Когда вы регистрируете COG, Earth Engine закрепляет поколение (версию) объекта файла, поэтому перезапись файла на месте не обновляет объект. Повторно зарегистрируйте объект с тем же названием и включенной перезаписью. Удалять его не нужно. Подробнее о том, как обновлять, заменять и удалять объекты, поддерживаемые COG…

Как узнать, на какую версию файла указывает мой объект, поддерживаемый COG?

В метаданных объекта (ee.data.getAsset()) закрепленное поколение указывается в качестве суффикса в URI файла. Подробнее о поколениях объектов…

Что произойдет, если я удалю файл COG в Cloud Storage, но не объект Earth Engine, или наоборот?

Они независимы. Если вы удалите объект Earth Engine, файлы в Cloud Storage останутся нетронутыми. Если вы удалите файл, объект останется на месте, но его пиксели обычно становятся нечитаемыми. Подробнее о независимых жизненных циклах…

Как быстрее всего удалить или заменить большой ImageCollection, поддерживающий COG?

В Earth Engine API нет пакетного или рекурсивного удаления, и earthengine rm -r удаляет по одному объекту за раз. Если вы заменяете изображения, повторно зарегистрируйте их с включенной перезаписью, а не удаляйте. Если вы удаляете изображения, распараллельте процесс с помощью скрипта. Подробнее о том, как работать с большими коллекциями…

Почему регистрация COG не отображается на вкладке "Задачи"?

Регистрация COG – это синхронный вызов API, который индексирует только метаданные файла, а не пакетное задание приема, поэтому он не создает задачу. Объект станет доступен на вкладке Объекты сразу после возврата вызова. Подробнее о том, как отправить запрос на регистрацию…

Можно ли объединить несколько файлов COG в один объект Earth Engine?

Если каждый файл содержит разные диапазоны одной и той же сцены, укажите каждый файл как отдельный набор фрагментов в манифесте и сопоставьте диапазоны с наборами фрагментов. Вы не можете объединить пространственно смежные файлы в один объект на основе COG. Зарегистрируйте каждый файл как отдельное изображение в ee.ImageCollection и вызовите mosaic(). Подробнее об ограничениях манифеста…

Какие схемы сжатия, размеры фрагментов и типы пикселей могут использовать объекты, поддерживаемые COG?

Ознакомьтесь с рекомендациями по подготовке внешних COG-файлов, чтобы узнать о поддерживаемых схемах сжатия, размерах фрагментов и типах данных пикселей. Файлы в форматах сжатия, которые Earth Engine не может читать напрямую как COG, можно загрузить как стандартные объекты.

Я получаю сообщение об ошибке "Не удалось прочитать метаданные TIFF в первых 10 000 000 байт".

При загрузке или регистрации файла Earth Engine считывает только его начало. Большие изображения с множеством фрагментов и усеченные файлы превышают этот лимит. Подробнее о том, как выбрать размеры файла и не превысить ограничение…

Чем ee.Image.loadGeoTIFF() отличается от зарегистрированного объекта при изменении файла?

ee.Image.loadGeoTIFF() считывает версию файла, которая является текущей на момент каждого вычисления или запроса фрагмента карты, поэтому он выбирает замены (неравномерно на карте, поскольку отрисованные фрагменты карты остаются в кеше). Зарегистрированный объект всегда закрепляет поколение, с которым он был зарегистрирован, и должен быть зарегистрирован повторно, чтобы увидеть новый файл, но в обмен его след и метаданные индексируются, что делает его пригодным для использования в больших коллекциях. Подробнее о том, как читать COG из Cloud Storage…

Редактор кода

Я не могу войти в редактор кода, потому что мне предлагается использовать не тот аккаунт.

Выйдите из аккаунта, выберите аккаунт, зарегистрированный для использования Earth Engine, на странице "Выберите аккаунт", а затем повторно выберите тот же аккаунт на второй странице "Выберите аккаунт, чтобы продолжить работу с редактором кода Earth Engine" (точная формулировка может отличаться).

Я хочу сделать скриншот карты мира, но мне не нравится проекция Меркатора.

В редакторе кода используется проекция карты Web Mercator (EPSG:3857). Она увеличивает размер объектов по мере удаления от экватора, из-за чего регионы в высоких широтах кажутся намного больше, чем они есть на самом деле, по сравнению с регионами вблизи экватора. Вы не можете изменить проекцию холста карты в редакторе кода, но можете "нарисовать" изображение в выбранной проекции на холсте Web Mercator с помощью метода ee.Image.changeProj. Пример отображения глобальной ЦМР на карте редактора кода в проекции Робинсона можно найти на странице документации по API. Обратите внимание, что этот метод следует использовать только для визуализации, поскольку инспектор и инструменты рисования редактора кода по-прежнему работают в Web Mercator.

Скрипт не сохраняется (Script error: Unknown commit).

Если при сохранении скрипта вы получаете сообщение Script error: Unknown commit, скорее всего, хранилище, в которое вы сохраняете скрипт, не синхронизировано. Причины этого состояния могут быть разными, и их трудно определить. Чтобы устранить проблему, попробуйте обновить список скриптов с помощью кнопки в правом верхнем углу вкладки "Скрипты". Если это не помогло, попробуйте создать новое хранилище, нажав кнопку "Создать" на вкладке "Скрипт", и сохранить скрипт в нем. Возможно, вам потребуется перенести скрипты из несинхронизированного хранилища в новое.

Почему в редакторе кода постоянно появляется ошибка 400?

Если в редакторе кода постоянно появляется ошибка 400, перейдите на страницу https://myaccount.google.com/connections, найдите в списке приложений и сервисов Earth Engine Code Editor, выберите его, нажмите "Удалить все связи с сервисом Earth Engine Code Editor" и подтвердите действие. Затем откройте редактор кода и повторно пройдите аутентификацию.

Как восстановить удаленные скрипты и папки?

Если вы случайно удалите скрипт или папку в существующем хранилище, полная история коммитов сохранится в журналах Git на наших серверах. Вы можете восстановить удаленные скрипты или папки, клонировав репозиторий локально с помощью стандартных инструментов командной строки Git.

Однако удаление всего хранилища (users/username/repository) навсегда удаляет хранилище и историю его фиксаций из earthengine.googlesource.com, и это действие нельзя отменить или восстановить.

Пошаговые инструкции по созданию учетных данных Git, клонированию репозитория и восстановлению удаленных файлов и папок можно найти в руководстве по восстановлению скриптов и переносу репозиториев.

Как переименовать корневую папку хранилища скриптов?

Корневой каталог скриптов (users/username) привязан к исходному аккаунту Earth Engine. Его нельзя переименовать непосредственно в серверной части, поскольку это приведет к нарушению работы внешних скриптов или проектов соавторов, которые импортируют ваш модульный код по пути require('users/username/repository:...').

Если вам нужно новое пространство имен, вы можете перенести свои данные в новый аккаунт.

  1. Зарегистрируйте новый аккаунт Earth Engine, используя новые идентификационные данные Google (при этом будет создан новый корневой каталог users/new_username).
  2. Следуйте инструкциям по переносу хранилища, чтобы клонировать старое хранилище и перенести всю его историю в новое пустое хранилище.

Важные примечания

  • Общедоступные модули. Если у вас есть общедоступные модули, которые используют другие разработчики, настоятельно рекомендуем не удалять старый аккаунт и хранилище, чтобы не нарушить их рабочие процессы.
  • Частные скрипты. Если ваши скрипты полностью частные, вы можете обновить операторы импорта require(), чтобы они ссылались на новый путь к хранилищу, а затем безопасно удалить старые хранилища.