Редактор кода Earth Engine (EE) на code.earthengine.google.com — это веб-IDE для API JavaScript Earth Engine. Функции редактора кода призваны упростить и ускорить разработку сложных геопространственных рабочих процессов. Редактор кода содержит следующие элементы (показаны на рис. 1):
- Редактор кода JavaScript
- Отображение карты для визуализации наборов геопространственных данных
- Справочная документация по API (вкладка «Документация»)
- Диспетчер сценариев на основе Git (вкладка «Скрипты»)
- Вывод консоли (вкладка «Консоль»)
- Диспетчер задач (вкладка «Задачи») для обработки длительных запросов.
- Интерактивный запрос карты (вкладка «Инспектор»)
- Поиск архива данных или сохраненных скриптов
- Инструменты рисования геометрии
Рис. 1. Схема компонентов редактора кода Earth Engine на сайте code.earthengine.google.com .
Редактор кода имеет множество функций, которые помогут вам воспользоваться преимуществами API Earth Engine. Просмотрите примеры сценариев или сохраните свои собственные на вкладке «Сценарии» . Запрашивайте объекты, размещенные на карте, с помощью вкладки «Инспектор» . Отображайте и отображайте числовые результаты с помощью API визуализации Google. Поделитесь уникальным URL-адресом своего сценария с коллегами и друзьями с помощью кнопки «Получить ссылку» . Скрипты, которые вы разрабатываете в редакторе кода, отправляются в Google для обработки, а сгенерированные фрагменты карты и/или сообщения отправляются обратно для отображения на вкладке «Карта» и/или «Консоль» . Все, что вам нужно для запуска редактора кода, — это веб-браузер (для достижения наилучших результатов используйте Google Chrome ) и подключение к Интернету. В следующих разделах элементы редактора кода Earth Engine описаны более подробно.
Редактор JavaScript
Редактор JavaScript будет:
- Форматируйте и выделяйте код по мере ввода
- Подчеркивайте код с проблемами, предложите исправления и другие подсказки по правильному синтаксису.
- Автозаполнение пар кавычек, квадратных и круглых скобок
- Предлагайте подсказки по завершению кода для функций Earth Engine.
Над редактором кода расположены кнопки запуска скрипта, сохранения скрипта, сброса карты вывода и консоли, а также получения ссылки на скрипт. При нажатии кнопки «Получить ссылку» в адресной строке браузера появится уникальная ссылка. Эта ссылка представляет код в редакторе на момент нажатия кнопки.
Справочник по API (вкладка «Документация»)
В левой части редактора кода находится вкладка «Документы» , содержащая полную документацию по API JavaScript. Документацию можно искать и просматривать на вкладке «Документы» .
Диспетчер сценариев (вкладка «Скрипты»)
Вкладка «Скрипты» находится рядом с документами API на левой панели редактора кода. Диспетчер сценариев хранит частные, общие сценарии и примеры сценариев в репозиториях Git , размещенных в Google. Репозитории упорядочены по уровням доступа: ваши личные скрипты хранятся в принадлежащем вам репозитории в папке «Владелец» : users/username/default
. У вас (и только у вас) есть доступ к репозиториям в папке «Владелец» , если вы не поделитесь ими с кем-то еще. Репозитории в папке Writer — это репозитории, для которых их владелец предоставил вам доступ на запись. Вы можете добавлять новые сценарии, изменять существующие сценарии или изменять доступ к репозиториям в папке Writer (вы не можете удалять их владельца). Репозитории в папке Reader — это репозитории, к которым вам предоставил доступ на чтение их владелец. Папка «Примеры» — это специальный репозиторий, управляемый Google, который содержит примеры кода. Папка «Архив» содержит устаревшие репозитории, к которым у вас есть доступ, но которые еще не были перенесены их владельцем из более старой версии диспетчера сценариев. Выполните поиск по своим сценариям, используя панель фильтров в верхней части вкладки «Сценарии» .
Рисунок 2. Менеджер сценариев.
Нажмите кнопку Кнопка для создания нового репозитория в папке «Владелец» или для создания папок и файлов в репозитории. Вы можете переименовывать сценарии с помощью значка и удалять их с помощью значка . Вы можете перемещать сценарии и упорядочивать их по папкам с помощью перетаскивания (рис. 2). Если вы перетащите скрипт в другой репозиторий, он скопируется.
Все скрипты и репозитории поддерживают полную историю версий. Нажмите на значок
рядом со скриптом или репозиторием, чтобы сравнить его или вернуть к более старой версии. Чтобы удалить репозиторий, щелкните значок . Чтобы настроить доступ к репозиторию, нажмите значок рядом с названием репозитория. Обратите внимание: если вы предоставляете общий доступ к репозиторию, человеку, которому вы предоставляете общий доступ, необходимо будет принять репозиторий, щелкнув ссылку, показанную в диалоговом окне настроек. Ранее принятые репозитории можно скрыть, щелкнув значок после имени репозитория в диспетчере сценариев.Доступ к репозиториям можно получить с помощью Git , поэтому вы можете управлять своими скриптами и редактировать их вне редактора кода или синхронизировать их с внешней системой, например GitHub. (Узнайте больше о Git из этого туториала ). Нажмите на значок рядом с именем репозитория, чтобы получить инструкции по клонированию репозитория. Обратите внимание, что вы можете просмотреть репозитории, к которым у вас есть доступ, перейдя на Earthengine.googlesource.com . Для некоторых операций Git вам может потребоваться создать учетные данные для аутентификации, перейдя по ссылке «Создать пароль» в верхней части страницы Earthengine.googlesource.com .
Скриптовые модули
Хорошей практикой является написание модульного кода многократного использования, который можно использовать в разных сценариях без необходимости обширного копирования и вставки. Чтобы обеспечить модульную разработку, Earth Engine предоставляет возможность совместного использования кода между сценариями. Например, предположим, что вы пишете функцию , выполняющую полезный набор операций. Вместо того чтобы копировать код функции в новый сценарий, новому сценарию проще загрузить функцию напрямую. Чтобы сделать функцию или объект доступной для других скриптов, вы добавляете их в специальный объект под названием exports
. Чтобы использовать код в другом скрипте, используйте функцию require
для загрузки экспорта из другого скрипта. Например, предположим, что вы определяете следующий модуль в файле с именем FooModule.js
, который находится в папке с именем Modules
:
/** * 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
. Например:
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 на вкладке «Сценарии» , в зависимости от вашего уровня разрешений для общего репозитория.
Менеджер активов (вкладка «Активы»)
Менеджер активов находится на вкладке «Активы» на левой панели. Используйте Asset Manager (рис. 3) для загрузки собственных графических ресурсов и управления ими в Earth Engine. Подробности смотрите на странице Asset Manager .
Рисунок 3. Менеджер активов.
Ссылки на скрипты
Скриптами редактора кода можно делиться через закодированный URL-адрес. В следующих разделах описаны различные способы создания URL-адреса сценария, доступные параметры и методы управления URL-адресами сценариев.
Получить ссылку
Кнопка «Получить ссылку» в верхней части редактора кода (рис. 4) предоставляет интерфейс для создания URL-адресов сценариев и настройки параметров поведения сценариев. Обратите внимание на различия между URL-адресами моментального снимка и сохраненного сценария, описанные ниже.
Рисунок 4. Кнопка «Получить ссылку».
Ссылки на скрипты снимков
Кодом в редакторе можно поделиться через URL-адрес закодированного снимка, который создается при нажатии кнопки «Получить ссылку» в верхней части редактора кода. Когда URL-адрес посещает кто-то с учетной записью Earth Engine, браузер переходит в редактор кода и копирует среду, которая была на момент создания ссылки, включая код, импорт, слои карты и положение карты. Нажатие кнопки «Получить ссылку» автоматически скопирует ссылку на скрипт в буфер обмена. Кроме того, появится диалоговое окно с опциями для управления выполнением общего скрипта, а также кнопками для копирования и перехода по созданной ссылке. Параметры управления включают в себя предотвращение автоматического запуска сценария и скрытие панели кода, когда кто-то открывает общую ссылку. Перетаскиваемое диалоговое окно можно закрыть с помощью клавиши «Esc» или щелчка в другом месте страницы.
Сохраненные ссылки на скрипты
Сохраненные сценарии имеют возможность поделиться ссылкой, которая всегда будет загружать самую последнюю сохраненную версию и доступна только вам и другим лицам, имеющим текущий доступ к репозиторию, содержащему сценарий. Чтобы использовать эту функцию, загрузите сохраненный сценарий на вкладке «Диспетчер сценариев», щелкните стрелку раскрывающегося списка справа от кнопки «Получить ссылку» и выберите «Копировать путь к сценарию». Появится диалоговое окно с URL-адресом общего сценария. Обратите внимание, что URL-адрес сценария также указан в адресной строке браузера. Инструкции по совместному использованию вашего репозитория с другими см. в разделе «Диспетчер сценариев» .
Управление ссылками скриптов
В раскрывающемся списке справа от кнопки «Получить ссылку» есть опция «Управление ссылками». При выборе этой опции загружается новая вкладка браузера с интерфейсом, позволяющим вызывать, удалять и загружать ранее созданные ссылки на скрипты. Если выбрать сценарий и нажать кнопку загрузки, в вашу систему будет загружена заархивированная папка («code_editor_links.zip»), содержащая представление файла .txt для каждого выбранного сценария.
Параметры URL-адреса ссылки скрипта
Модуль 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;
Эту функцию можно использовать для установки масштаба и центрирования карты, а также других параметров поведения, которые вы, возможно, захотите настроить при отправке ссылок определенным людям или группам.
Инструмент поиска
Чтобы найти наборы данных для использования в ваших сценариях, вы можете использовать инструмент поиска для архива данных. Инструмент поиска — это текстовое поле в верхней части редактора кода с надписью «Поиск мест и наборов данных...». Введите название продукта данных, датчика или другое ключевое слово в строку поиска и нажмите кнопку Кнопка из описания набора данных.
Импорт
Результаты импорта наборов данных в ваш скрипт организованы в разделе импорта в верхней части вашего скрипта, скрытом до тех пор, пока вы что-нибудь не импортируете. Создав импорт, вы должны увидеть что-то похожее на рисунок 5. Чтобы скопировать импорт в другой скрипт или преобразовать импорт в JavaScript, щелкните значок
рядом с заголовком «Импорт» и скопируйте сгенерированный код в ваш скрипт. Вы можете удалить импорт с помощью значка .Рисунок 5. Раздел импорта в верхней части редактора кода.
Карта
Объект Map в API относится к отображению карты в редакторе кода. Например, Map.getBounds()
вернет географический регион, видимый в редакторе кода. Проверьте функции Map
в API, чтобы увидеть другие настройки для этого дисплея.
Менеджер слоев
Используйте Диспетчер слоев в правом верхнем углу карты, чтобы настроить отображение слоев, добавленных на карту. В частности, вы можете переключить видимость слоя или настроить его прозрачность с помощью ползунка. Нажмите значок
, чтобы настроить параметры визуализации для отдельных слоев. Появившийся инструмент визуализации (рис. 6) позволяет в интерактивном режиме настроить параметры отображения слоев. Нажмите кнопку справа от инструмента (который по умолчанию выполняет пользовательское растяжение до заданного минимального и максимального диапазона), чтобы линейно растянуть отображение либо до процентилей, либо до стандартных отклонений значений изображения в окне отображения. Статистика рассчитывается по всем пикселям в окне карты при текущем уровне масштабирования. Используйте ползунки для настройки гаммы и/или прозрачности. Нажмите кнопку-переключатель «Палитра» и укажите пользовательскую палитру, добавив цвета ( ), удалив цвета ( ) или вручную введя список шестнадцатеричных строк, разделенных запятыми ( ). Нажмите «Применить» , чтобы применить параметры визуализации к текущему отображению. Нажмите «Импорт» , чтобы загрузить объект параметров визуализации в качестве новой переменной в разделе импорта вашего скрипта.Рисунок 6. Инструмент визуализации слоев.
Вкладка «Инспектор»
Вкладка «Инспектор» рядом с диспетчером задач позволяет интерактивно запрашивать карту. Когда вкладка «Инспектор» активирована, курсор становится перекрестием, которое будет отображать местоположение и значения слоя под курсором при щелчке по карте. Например, на рисунке 7 показаны результаты щелчка по карте на вкладке «Инспектор» . Местоположение курсора и уровень масштабирования отображаются вместе со значениями пикселей и списком объектов на карте. Список объектов интерактивный. Чтобы просмотреть дополнительную информацию, разверните объекты на вкладке «Инспектор» .
Рисунок 7. На вкладке «Инспектор» отображается информация о местоположении курсора и значениях слоев под курсором.
Вкладка «Консоль»
Когда вы print()
что-то из вашего скрипта, например текст, объекты или диаграммы, результат будет отображаться в консоли . Консоль интерактивная, поэтому вы можете разворачивать напечатанные объекты, чтобы получить о них более подробную информацию.
Вкладка «Задачи»
Задачи Earth Engine — это операции, которые могут выполняться намного дольше, чем стандартный тайм-аут запроса API. Эти длительные задачи являются единственным механизмом создания постоянных артефактов в Earth Engine и смежных системах (Google Cloud Storage, Google Drive и т. д.), и они делятся на две категории: Import
и Export
.
Задачи импорта можно использовать для загрузки изображений или таблиц в Earth Engine из файлов различных типов ( .csv
, .tif
и т. д.). Задачи экспорта можно использовать для выполнения и записи результатов из системы вычислений EE (см. руководство по экспорту данных ).
При экспорте каждый вызов функции Export
в редакторе кода будет заполнять запись в разделе «Неотправленные задачи» на вкладке « Задачи» . Чтобы отправить задачу экспорта на сервер, нажмите кнопку «Выполнить» рядом с задачей. Появится диалоговое окно конфигурации, позволяющее указать различные параметры задачи. Если задача полностью указана во время создания (то есть вызов Export
имеет все необходимые параметры), удерживайте ctrl
или ⌘
, нажимая «Выполнить» , чтобы отправить задачу без отображения диалогового окна.
При импорте загрузка файла происходит локально, прежде чем задача будет отправлена на сервер. Задачи импорта на этапе загрузки будут показывать свой прогресс в разделе «Неотправленные задачи» и автоматически отправляться на сервер после завершения загрузки файла.
Неотправленные задачи появляются только на странице, на которой они были созданы, и теряются при закрытии страницы. После отправки задачи на сервер нажатие на ее строку в пользовательском интерфейсе предоставит дополнительную информацию и параметры о статусе задачи, включая возможность запросить отмену.
Чтобы просмотреть и отменить несколько задач в полностраничном режиме (в том числе в мобильных клиентах), используйте страницу «Задачи» в Cloud Console .
Профилировщик
Профилировщик отображает информацию о ресурсах (процессорное время, память), потребляемых конкретными алгоритмами и другими частями вычислений. Это помогает диагностировать, почему сценарий работает медленно или дает сбой из-за ограничений памяти. Чтобы использовать профилировщик, выберите параметр « Запустить с профилировщиком» в раскрывающемся списке кнопки «Выполнить». В качестве ярлыка удерживайте Alt (или Option на Mac) и нажмите «Выполнить» или нажмите Ctrl+Alt+Enter. Это активирует вкладку «Профилировщик» в правой части редактора кода. Во время выполнения сценария на вкладке «Профилировщик» будет отображаться таблица использования ресурсов из сценария. Нажатие кнопки «Выполнить» (без профилирования) приведет к исчезновению вкладки «Профилировщик» и отключению профилировщика.
См. страницу обзора вычислений для разбивки результатов профилировщика.
Инструменты геометрии
Вы также можете импортировать геометрию в свой скрипт, нарисовав ее на экране. Для создания геометрии используйте инструменты рисования геометрии в верхнем левом углу отображения карты (рис. 8). Для рисования точек используйте значок метки , для рисования линий используйте значок линии
, для рисования многоугольников используйте значок многоугольника
, для рисования прямоугольников используйте значок прямоугольника
. (Обратите внимание, что прямоугольники представляют собой плоскую геометрию, поэтому их нельзя размещать на слое с геодезической геометрией, такой как линии и многоугольники.)
Использование любого из инструментов рисования автоматически создаст новый слой геометрии и добавит импорт для этого слоя в раздел «Импорт». Чтобы добавить геометрию в новый слой, наведите указатель мыши на «Импорт геометрии» на экране карты и нажмите ссылку «+новый слой» . Вы также можете переключить видимость геометрии в разделе «Импорт геометрии». Обратите внимание, что нарисованная геометрия по умолчанию является геодезической, за исключением прямоугольников, которые являются только плоскими. Используйте конструктор Geometry , чтобы преобразовать их в плоскую геометрию. Узнайте больше о геометрии в Earth Engine на странице «Геометрия» .
Рис. 8. Инструменты рисования геометрии находятся в левом верхнем углу отображения карты.
Чтобы настроить способ импорта геометрии в ваш скрипт, щелкните значок Feature
или FeatureCollection
) или переименовать слой.
Рисунок 9. Инструмент настройки геометрии.
Наконец, чтобы предотвратить редактирование геометрии слоя, вы можете заблокировать слой, нажав значок
рядом со слоем. Это предотвратит добавление, удаление или редактирование любой геометрии на слое. Чтобы снова разблокировать слой, нажмите значок .Помощь!
Нажмите кнопку
в правом верхнем углу редактора кода, чтобы увидеть ссылки на это Руководство разработчика, другие справочные форумы, обзорную экскурсию по редактору кода и список сочетаний клавиш, которые помогают писать код, запускать код и отображать данные на карте . Нажмите кнопку , чтобы отправить отчет об ошибке, запросить новую функцию, предложить набор данных или иным образом отправить отзыв, когда ответ не требуется.