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

Редактор кода Earth Engine (EE) на сайте code.earthengine.google.com – это веб-версия интегрированной среды разработки для Earth Engine JavaScript API. Функции редактора кода позволяют быстро и легко разрабатывать сложные геопространственные рабочие процессы. Редактор кода содержит следующие элементы (см. рис. 1):

  • Редактор кода JavaScript
  • Карта для визуализации геопространственных наборов данных
  • Справочная документация по API (вкладка "Документы")
  • Менеджер скриптов на основе Git (вкладка "Скрипты")
  • Выходные данные консоли (вкладка "Консоль")
  • Диспетчер задач (вкладка "Задачи") для обработки длительных запросов
  • Запрос интерактивной карты (вкладка "Инспектор")
  • Поиск в архиве данных или сохраненных скриптах.
  • Инструменты для рисования геометрических фигур

Компоненты редактора кода

Рисунок 1. Схема компонентов редактора кода Earth Engine на сайте code.earthengine.google.com.

В редакторе кода есть различные функции, которые помогут вам использовать Earth Engine API. Посмотреть примеры скриптов или сохранить собственные скрипты можно на вкладке Скрипты. Объекты запросов, размещенные на карте с помощью вкладки Инспектор. Показывать числовые результаты в виде диаграмм с помощью API визуализации Google. Поделитесь уникальным URL скрипта с соавторами и друзьями, нажав кнопку Получить ссылку. Скрипты, созданные в редакторе кода, отправляются в Google для обработки, а сгенерированные фрагменты карты и/или сообщения возвращаются для показа на вкладках Карта и/или Консоль. Для работы с редактором кода нужен только веб-браузер (рекомендуем использовать Google Chrome) и подключение к интернету. Ниже описаны элементы редактора кода Earth Engine.

Редактор JavaScript

Редактор JavaScript:

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

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

Документация по API (вкладка "Документы")

Слева от редактора кода находится вкладка Документация, на которой можно найти полную документацию по JavaScript API. Документацию можно найти и просмотреть на вкладке Документы.

Менеджер скриптов (вкладка "Скрипты")

Вкладка Скрипты находится рядом с документацией по API на левой панели редактора кода. Менеджер скриптов хранит частные, общие и примеры скриптов в репозиториях Git, размещенных в Google. Репозитории упорядочены по уровню доступа. Ваши частные скрипты хранятся в репозитории, которым вы владеете, в папке Владелец: users/username/default. У вас (и только у вас) есть доступ к репозиториям в папке Владелец, если вы не поделитесь ими с кем-то ещё. В папке Writer находятся хранилища, доступ к которым вам предоставил их владелец. Вы можете добавлять новые скрипты, изменять существующие и менять права доступа (но не удалять владельца) к репозиториям в папке Writer. Хранилища в папке Читатель – это хранилища, доступ к которым вам предоставил их владелец. Папка Примеры – это специальное хранилище, управляемое Google, в котором содержатся примеры кода. Папка Архив содержит устаревшие репозитории, к которым у вас есть доступ, но которые ещё не были перенесены владельцем из более ранней версии Менеджера скриптов. Вы можете искать скрипты, используя строку фильтра в верхней части вкладки Скрипты.

Менеджер скриптов

Рисунок 2. Менеджер скриптов.

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

Для всех скриптов и репозиториев сохраняется полная история версий. Нажмите на значок рядом со скриптом или репозиторием, чтобы сравнить его с более ранней версией или вернуться к ней. Чтобы удалить репозиторий, нажмите на значок . Репозиторий, его скрипты и история коммитов будут удалены без возможности восстановления. Чтобы настроить доступ к репозиторию, нажмите на значок рядом с его названием. Обратите внимание, что если вы предоставите доступ к репозиторию, пользователь, которому вы его открыли, должен будет принять его, нажав на ссылку в диалоговом окне настроек. Ранее принятые репозитории можно скрыть, нажав на значок рядом с названием репозитория в Менеджере скриптов.

Доступ к хранилищам можно получить с помощью Git, поэтому вы можете управлять скриптами и редактировать их вне редактора кода или синхронизировать их с внешней системой, например GitHub (подробнее о Git можно узнать из документации Git). Нажмите на значок рядом с названием репозитория, чтобы получить инструкции по его клонированию. Вы можете просматривать репозитории, к которым у вас есть доступ, на странице earthengine.googlesource.com (требуется войти в аккаунт Google Earth Engine). Инструкции по использованию Git для восстановления удаленных скриптов или папок, а также для переноса репозитория в другой аккаунт можно найти в статье Восстановление скриптов и перенос репозитория.

Модули скриптов

Рекомендуем писать модульный код, который можно использовать повторно и передавать между скриптами без копирования и вставки. Чтобы упростить разработку, Earth Engine позволяет использовать код из одного скрипта в другом. Предположим, вы написали функцию, которая выполняет полезный набор операций. Вместо того чтобы копировать код функции в новый скрипт, проще загрузить функцию непосредственно в новый скрипт. Чтобы сделать функцию или объект доступными для других скриптов, добавьте их в специальный объект exports. Чтобы использовать код в другом скрипте, загрузите экспортированные данные из другого скрипта с помощью функции require. Предположим, вы определили следующий модуль в файле FooModule.js, который находится в папке Modules:

Редактор кода (JavaScript)

/**
 * The Foo module is a demonstration of script modules.
 * It contains a foo function that returns a greeting string.
 * It also contains a bar object representing the current date.
 * @module Modules/FooModule
 */

/**
 * Returns a greeting string.
 * @param {ee.String} arg The name to which the greeting should be addressed
 * @return {ee.String} The complete greeting.
 */
exports.foo = function(arg) {
  return 'Hello, ' + arg + '!  And a good day to you!';
};

/**
 * An ee.Date object containing the time at which the object was created.
 */
exports.bar = ee.Date(Date.now());

Обратите внимание на использование ключевого слова exports в форме exports.objectToExport. Вы можете использовать этот модуль в другом скрипте, применив функцию require. Пример:

Редактор кода (JavaScript)

var Foo = require('users/username/default:Modules/FooModule.js');

print(Foo.doc);

print(Foo.foo('world'));

print('Time now:', Foo.bar);

Функция require ожидает строку, описывающую абсолютный путь к местоположению модуля. В частности, аргумент require() имеет форму 'pathToRepository:pathToModuleScript'. Вы можете загружать модули только из репозиториев, которыми владеете и/или к которым у вас есть доступ на чтение. Если вы хотите, чтобы другие пользователи могли использовать ваш модуль, предоставьте им доступ к репозиторию. Вы можете добавить в модуль документацию, чтобы другим было проще понять, как его использовать. Мы рекомендуем использовать стиль JSDoc с тегом @module.

Вы можете использовать параметр URL ?scriptPath={repo}:{script}, чтобы поделиться ссылкой на файл в репозитории, например https://code.earthengine.google.com/?scriptPath=users/username/utils:utils. После перехода по URL-адресу указанный файл и его репозиторий будут добавлены в каталог Reader или Writer на вкладке Scripts в зависимости от вашего уровня доступа к общему репозиторию.

Менеджер объектов (вкладка "Объекты")

Менеджер объектов находится на вкладке Объекты на панели слева. Чтобы загрузить собственные объекты изображений в Earth Engine и управлять ими, используйте менеджер объектов (рис. 3). Подробнее о странице "Менеджер объектов"…

Менеджер объектов

Рисунок 3. Менеджер объектов.

Скрипты из редактора кода можно передавать с помощью закодированного URL. В следующих разделах описаны различные способы создания URL скрипта, доступные варианты и методы управления URL скриптов.

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

Библиотека

Рисунок 4. Кнопка "Получить ссылку".

Кодом в редакторе можно поделиться с помощью закодированного URL снимка, который создается при нажатии кнопки "Получить ссылку" в верхней части редактора кода. Когда пользователь с аккаунтом Earth Engine переходит по URL, браузер открывает редактор кода и воссоздает среду, которая была при создании ссылки, включая код, импортированные данные, слои карты и ее положение. При нажатии кнопки "Получить ссылку" ссылка на скрипт автоматически копируется в буфер обмена. Кроме того, появится диалоговое окно с вариантами управления выполнением общего скрипта и кнопками для копирования и перехода по сгенерированной ссылке. Вы можете запретить автоматический запуск скрипта и скрыть панель кода, когда кто-то открывает ссылку. Перетаскиваемое диалоговое окно можно закрыть, нажав клавишу Esc или щелкнув в любом месте страницы.

Для сохраненных скриптов можно создать ссылку, по которой всегда будет открываться последняя сохраненная версия. Она будет доступна только вам и другим пользователям, у которых есть доступ к репозиторию, содержащему скрипт. Чтобы использовать эту функцию, загрузите сохраненный скрипт на вкладке "Менеджер скриптов", нажмите на стрелку раскрывающегося списка справа от кнопки "Получить ссылку" и выберите "Копировать путь к скрипту". Появится диалоговое окно с URL скрипта, которым можно поделиться. Обратите внимание, что URL скрипта также задан в адресной строке браузера. Инструкции по предоставлению доступа к репозиторию другим пользователям приведены в разделе о Менеджере скриптов.

В раскрывающемся меню справа от кнопки "Получить ссылку" есть пункт "Управление ссылками". При нажатии на эту кнопку откроется новая вкладка браузера с интерфейсом, в котором можно посмотреть, удалить и скачать ранее созданные ссылки на скрипты. Если вы выберете скрипт и нажмете кнопку скачивания, на ваше устройство будет загружен ZIP-архив (code_editor_links.zip), в котором для каждого выбранного скрипта будет представлен TXT-файл.

Модуль ui.url позволяет программно управлять идентификатором фрагмента URL скрипта с помощью методов get и set. Это означает, что скрипты редактора кода и приложения Earth Engine могут считывать и сохранять значения в URL страницы. Обратите внимание на конец двух приведенных ниже URL. В первом из них переменная debug имеет значение false, а во втором – true. Перейдите по обеим ссылкам и заметьте, что в первом случае флажок отладки в консоли не установлен, а во втором – установлен, что влияет на поведение каждого скрипта.

https://code.earthengine.google.com/5695887aad76979388a723a85339fbf2#debug=false;
https://code.earthengine.google.com/5695887aad76979388a723a85339fbf2#debug=true;

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

Инструмент поиска

Чтобы найти наборы данных для использования в скриптах, воспользуйтесь инструментом поиска в архиве данных. Инструмент поиска – это текстовое поле в верхней части редактора кода с надписью "Поиск мест и наборов данных…". Введите в строку поиска название продукта, датчика или другое ключевое слово и нажмите кнопку , чтобы увидеть список подходящих мест, растровых и табличных наборов данных. Нажмите на любой растровый или табличный результат, чтобы посмотреть описание набора данных в архиве. Чтобы импортировать набор данных непосредственно в скрипт, нажмите на ссылку import (импортировать) или кнопку в описании набора данных.

Импорт

Результаты импорта наборов данных в скрипт упорядочены в разделе imports в верхней части скрипта. Этот раздел скрыт, пока вы ничего не импортируете. После того как вы создадите несколько импортированных файлов, вы увидите что-то похожее на изображение 5. Чтобы скопировать импортированные данные в другой скрипт или преобразовать их в код JavaScript, нажмите на значок рядом с заголовком Импортированные данные и скопируйте сгенерированный код в скрипт. Чтобы удалить импортированный файл, нажмите на значок .

Раздел импорта в редакторе кода

Рисунок 5. Раздел импорта в верхней части редактора кода.

Карта

Объект карты в API относится к отображению карты в редакторе кода. Например, Map.getBounds() вернет географический регион, видимый в редакторе кода. Чтобы узнать, как ещё можно настроить этот показ, изучите функции Map в API.

Менеджер слоев

Чтобы настроить отображение слоев, добавленных на карту, используйте менеджер слоев в правом верхнем углу карты. В частности, вы можете включить или отключить видимость слоя, а также настроить его прозрачность с помощью ползунка. Нажмите на значок , чтобы настроить параметры визуализации для отдельных слоев. Появится инструмент визуализации (рис. 6), с помощью которого можно интерактивно настроить параметры отображения слоя. Нажмите на кнопку справа от инструмента (по умолчанию выполняется собственное растяжение до заданного минимального и максимального диапазона), чтобы линейно растянуть изображение до процентилей или стандартных отклонений значений изображения в окне просмотра. Статистика рассчитывается на основе всех пикселей в окне карты при текущем уровне масштабирования. С помощью ползунков настройте гамму и/или прозрачность. Нажмите на переключатель Палитра и задайте собственную палитру, добавив цвета (), удалив цвета () или вручную введя список шестнадцатеричных строк, разделенных запятыми (). Нажмите Применить, чтобы применить параметры визуализации к текущему экрану. Нажмите Импортировать, чтобы загрузить объект параметров визуализации в качестве новой переменной в раздел импорта скрипта.

Инструмент визуализации слоев.

Рисунок 6. Инструмент визуализации слоев.

Вкладка "Инспектор"

На вкладке Инспектор рядом с диспетчером задач можно интерактивно запрашивать карту. Когда вкладка Инспектор активна, курсор превращается в перекрестие, которое показывает местоположение и значения слоя под курсором при нажатии на карту. Например, на рисунке 7 показаны результаты нажатия на карту на вкладке Инспектор. Положение курсора и уровень масштабирования отображаются вместе со значениями пикселей и списком объектов на карте. Список объектов интерактивный. Чтобы посмотреть дополнительную информацию, разверните объекты на вкладке Инспектор.

Вкладка "Инспектор"

Рисунок 7. На вкладке "Инспектор" показывается информация о местоположении курсора и значениях слоев под ним.

Вкладка "Консоль"

Когда вы print() что-то из скрипта, например текст, объекты или диаграммы, результат будет показан в Консоли. Консоль интерактивна, поэтому вы можете развернуть напечатанные объекты, чтобы получить о них больше информации.

Вкладка "Задачи"

Задачи Earth Engine – это операции, которые могут выполняться гораздо дольше, чем стандартный тайм-аут запроса к API. Эти длительные задачи – единственный способ создавать постоянные объекты в Earth Engine и связанных системах (Google Cloud Storage, Google Диск и т. д.). Они делятся на две категории: Import и Export.

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

При экспорте каждый вызов функции Export в редакторе кода заполняет запись в разделе Неотправленные задачи на вкладке Задачи. Чтобы отправить задачу экспорта на сервер, нажмите кнопку Выполнить рядом с задачей. Откроется диалоговое окно конфигурации, в котором можно задать различные параметры задачи. Если задача полностью определена при создании (то есть вызов Export содержит все необходимые параметры), удерживайте клавишу ctrl или ⌘ и нажмите Выполнить, чтобы отправить задачу без показа диалогового окна.

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

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

Чтобы посмотреть и отменить несколько задач в полноэкранном режиме (в том числе на мобильных устройствах), используйте страницу задач в Cloud Console.

Профилировщик

Профилировщик показывает информацию о ресурсах (процессорном времени, памяти), которые потребляются определенными алгоритмами и другими частями вычислений. Это помогает диагностировать, почему скрипт работает медленно или не выполняется из-за ограничений памяти. Чтобы использовать профилировщик, нажмите кнопку Run with profiler (Запустить с профилировщиком) в раскрывающемся меню кнопки Run (Запустить). Чтобы запустить код, удерживайте клавишу Alt (или Option на Mac) и нажмите "Выполнить" или нажмите Ctrl + Alt + Ввод. Справа от редактора кода появится вкладка Profiler. Во время выполнения скрипта на вкладке Profiler (Профайлер) будет показана таблица использования ресурсов скриптом. Если нажать кнопку Выполнить (без профилирования), вкладка Профилировщик исчезнет, а профилировщик будет отключен.

На странице Обзор вычислений приведена подробная информация о том, как интерпретировать данные профилировщика.

ИИ-помощник (вкладка "Спросите")

В редакторе кода есть ИИ-помощник на основе Gemini, который помогает писать, отлаживать и понимать скрипты. Ассистент доступен на вкладке Спросите на панели справа.

Подробнее о том, как настроить и использовать ИИ-помощника в редакторе кода Earth Engine…

Инструменты для работы с геометрией

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

При использовании любого из инструментов рисования автоматически создается новый слой геометрии и добавляется импорт для этого слоя в раздел "Импорт". Чтобы добавить геометрию в новый слой, наведите указатель на импортированные геометрические объекты на карте и нажмите на ссылку +новый слой. Вы также можете включить или отключить видимость геометрических объектов в разделе "Импорт геометрии". Обратите внимание, что нарисованные геометрические объекты по умолчанию являются геодезическими, за исключением прямоугольников, которые могут быть только плоскими. Чтобы преобразовать их в плоские геометрические объекты, используйте конструктор Geometry. Подробнее о геометрии в Earth Engine можно узнать на этой странице.

Рисунок 8. Инструменты для рисования геометрических фигур находятся в левом верхнем углу экрана карты.

Чтобы настроить способ импорта геометрий в скрипт, нажмите на значок рядом со слоем в разделе Импорт геометрий на карте или в разделе Импорт редактора кода. Инструмент настроек слоя геометрии будет показан в диалоговом окне, которое должно выглядеть примерно так, как на рисунке 9. Обратите внимание, что нарисованные фигуры можно импортировать как геометрические объекты, объекты или коллекции объектов. Настройки импорта геометрии также позволяют изменить цвет, с которым отображается слой, добавить свойства к слою (если он импортируется как Feature или FeatureCollection) или переименовать слой.

Инструмент настройки геометрии

Рисунок 9. Инструмент настройки геометрии.

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

Что делать?

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