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

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

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

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

  • Отправка ссылки на скрипт в редакторе кода (для получения ссылки нажмите кнопку «Получить ссылку»).

  • sharing any assets needed to run the script

  • Для задач пакетной обработки, завершившихся с ошибкой, укажите идентификатор этой задачи. Идентификаторы задач выглядят следующим образом: 4C25GIJBMB52PXTEJTF4JLGL . Их можно найти на вкладке «Задачи» в редакторе кода. Подробнее .

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

См. статью: Gorelick et al. 2017 .

См. страницы «Образовательные ресурсы» и «Учебные материалы» .

Ознакомьтесь с этим бесплатным курсом по электротехнике от Уджавала Ганди, который включает видео с вводным материалом по дистанционному зондированию.

Программирование двигателя Земли

What are some common coding errors?

See the debugging guide .

Почему я получаю ошибку "... не является функцией"?

Эта ошибка возникает, когда 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 выполняются на стороне сервера. Любые вычисления на стороне клиента не будут выполнять то, что вы от них ожидаете. Подробнее см. на этой странице .

How can I use for loops or if/else statements?

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

How do I show text labels in my image or video?

Встроенной поддержки текстовых меток нет, но вы можете:

  • Используйте сторонний JS-пакет. См. пример.
  • Используйте сторонний пакет Python ` geemap` .
  • Используйте QGIS для импорта изображений EE с помощью плагина EE QGIS.

Can I use some standard color palettes?

Use a third-party JS package ee-palettes .

Как мне создать собственный веб-сайт, использующий Earth Engine?

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

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

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

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

Создание этих идентификаторов включает в себя хранение небольшого объема данных и проверку учетных данных, поэтому лучше всего использовать их повторно как можно дольше. Для конечной точки 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() объединяет все изображения из двух коллекций в одну, независимо от того, совпадают ли у них полосы, метаданные, системы координат или масштаб. Это объединение двух коллекций. Метод 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);

Каталог данных

Вы можете добавить набор данных X?

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

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

An existing dataset has a new version

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

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

Before reporting a problem, verify, if possible, that the selected assets actually exist on the dataset provider's site. See the guide on missing images for more details.

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

В частности, следует отметить, что:

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

  • Спутник Landsat не обеспечивал глобальное покрытие до 2000 года.

An existing dataset has wrong values

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

Where else can I ask about datasets?

For questions about NASA datasets, see the NASA Earth Data forum .

For questions about the toolboxes operating on Copernicus datasets, see the S1 , S2 , and S3 forums.

Насколько велик каталог EE?

As of October 2023, the catalog contains over 1000 datasets. Its size on disk is over 90 petabytes (after taking into account lossless compression).

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

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

How do I view the contents of the EE catalog programmatically?

The list of dataset is exported in the STAC format to a Google Cloud Storage bucket gs://earthengine-stac . The entry file is catalog.json .

Can I use Google Maps data or imagery for analysis?

Google does not license or sell basemap data for analysis.

How can I find the date an asset was ingested?

Свойство ресурса '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)));

Does Earth Engine Catalog have JSON-LD metadata?

Yes, JSON-LD metadata are embedded in the catalog HTML pages. For example, the Sentinel-2 page contains the following block:

<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>

Ландсат

How is the simpleComposite algorithm implemented?

The server-side implementation is equivalent to this JavaScript code .

How can I create cloud-free composites from Landsat surface reflectance data?

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

Is cross-sensor Landsat surface reflectance harmonization needed?

Roy et al., 2016 included an analysis of reflectance differences between Landsat 7-8 TOA and surface reflectance. They published the OLS and RMA coefficients so readers could transform the reflectance values of one sensor's data to another. The final line of the paper states: "Although sensor differences are quite small they may have significant impact depending on the Landsat data application." However, this analysis was based on pre-collection data.

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

How can I mask clouds and cloud shadows in MSS imagery?

The third-party msslib module for the JavaScript Code Editor includes an implementation of the MSScvm algorithm , as well as other helpful functions for exploring and preparing MSS data.

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

Кому принадлежат данные, которые я загружаю?

According to the Earth Engine Terms of Service , customers own the data that they upload to Earth Engine.

Я не могу загрузить данные!

Check the upload task status in the Tasks pane in the upper right-hand corner of the Code Editor . You can also view the dedicated task page .

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

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

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

gdalinfo -mm -stats -checksum file.tif

Example ogr2ogr call that will convert in.shp to 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 или другом неподдерживаемом растровом формате?

Only GeoTIFFs can be uploaded to Earth Engine. Other GDAL-compatible formats can be converted to GeoTIFFs using gdal_translate . Example:

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 files sometimes don't carry a projection that GDAL recognizes. In this case you would need to set the projection and spatial extent in the gdal_translate command line. Example:

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

What compression algorithms can I use for uploaded GeoTIFFs?

Для загрузки GeoTIFF-файлы можно сжимать с помощью DEFLATE, JPEG, JPEG-XL/JXL, LERC, LERC_DEFLATE, LERC_ZSTD, LZMA, LZW, WEBP или ZSTD. Для чтения COG в реальном времени можно использовать DEFLATE, JPEG, LZW или ZSTD. ZSTD — хороший универсальный вариант, поскольку он быстро декомпрессируется, обеспечивая при этом хорошее сжатие большинства изображений.

To applying ZSTD compression when using gdal_translate , add these options. If the data has floating point values, change the PREDICTOR to 3.

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

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

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

Try converting such files to the band-interleaved layout before uploading:

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

My uploaded rasters don't match the basemap.

If the data is slightly offset from the basemap, the projection probably has an incorrect datum (assumption about the shape of the Earth). This happens most often with the sinusoidal projection that cannot be fully encoded in GDAL metadata. When you know what the target projection should be (eg, SR-ORG:6974 for files using MODIS sinusoidal projection), set the --crs flag during command-line upload or the crs field of the upload manifest .

If the data appear grossly distorted or in the completely wrong place, the projection or the affine transform is likely wrong.

My raster only shows up over the Eastern hemisphere.

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

Why does my ingested classification image look speckled?

You probably used the default MEAN pyramiding policy . For classification images, the MODE pyramiding policy should be used. for QA/bitmask images, the SAMPLE pyramiding policy should be used.

I get the following error: No data value -128.0 cannot be applied to band #0 of type Short<0, 255>.

GDAL cannot treat single-byte bands as containing signed integers, so it reads such bands as unsigned integers. This would conflict with negative no data values.

If your values are actually signed integers, use manifest upload and add this to the tileset section containing your file: 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

Note that in CSV uploads, the geometry column can contain GeoJSON.

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

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

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

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

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

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

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

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

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

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

You must export each image separately.

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

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

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

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

GDAL имеет драйвер Earth Engine .

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

Я хотел бы обновить часть своего ресурса в Earth Engine, не выполняя его полную переустановку.

Обновить растровые или векторные данные, загруженные в EE, невозможно. Обновить можно только свойства метаданных активов.

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

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

При удалении учетной записи принадлежащие ей ресурсы становятся недоступными.

My exported image is in the wrong place.

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

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

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

Ответ зависит от того, что именно вы пытаетесь оптимизировать. Если вы оптимизируете доступ к вычислительным ресурсам с низкой задержкой, то лучшие места в хранилищах GCS для хранения активов COG — это US-CENTRAL *. Дополнительную информацию о других факторах см. на странице «Места хранения» .

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

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

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

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

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

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

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

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

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

The map projection used in the Code Editor is Web Mercator ('EPSG:3857'). It inflates the size of objects away from the equator, making high latitude regions appear much larger than they actually are, as compared to regions near the equator. You cannot change the projection of the Code Editor's map canvas, but you can "paint" an image in the projection of your choice to the Web Mercator canvas using the ee.Image.changeProj method. See the method's API reference page for an example of displaying a global DEM to the Code Editor map in the Robinson projection . Note that this technique should only be used for visualization purposes, as the Code Editor's inspector and drawing tools are still operating in Web Mercator.

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

If you receive a Script error: Unknown commit message when saving a script, it likely means that the repository that you are saving to is out of sync. The cause of this state is variable and difficult to identify. To resolve the issue, try refreshing the script list using the button in the upper right corner of the Script tab. If that does not work, try creating a new repository from the New button in the Script tab and saving your script there (you may need to move scripts into the new repository from the out-of-sync repo).