Установка Python — ноутбук Colab

The Earth Engine Python API can be deployed in a Google Colaboratory notebook. Colab notebooks are Jupyter notebooks that run in the cloud and are highly integrated with Google Drive, making them easy to set up, access, and share. If you are unfamiliar with Google Colab or Jupyter notebooks, please spend some time exploring the Colab welcome site .

В следующих разделах описывается развертывание Earth Engine в Google Colab и визуализация карт и диаграмм с использованием сторонних пакетов Python.

Откройте блокнот Colab

Блокноты можно открывать как из Google Диска, так и из интерфейса Colaboratory.

Новый ноутбук

Google Диск

Откройте Google Диск и создайте новый файл.

  • Новое > Больше > Колаборатория
  • Щелкните правой кнопкой мыши в папке и выберите в контекстном меню «Дополнительно» > «Colaboratory» .

Интерфейс Colab

Перейдите на сайт Colab и создайте новый файл.

  • Файл > Создать > Новый блокнот Python 3
  • Если вы уже работали с Colab, то, перейдя по указанной выше ссылке, вы увидите файловый менеджер, где сможете создать новый файл, используя выпадающее меню в нижней части окна.

Существующий ноутбук

Существующие файлы блокнотов (.ipynb) можно открыть из Google Drive и интерфейса Colab.

Google Диск

Блокноты Colab могут находиться в различных папках Google Drive в зависимости от того, где были созданы файлы блокнотов. Блокноты, созданные в Google Drive, будут находиться в той папке, в которую они были созданы или перемещены. Блокноты, созданные через интерфейс Colab, по умолчанию будут находиться в папке под названием «Блокноты Colab», которая автоматически добавляется в папку «Мой диск» вашего Google Drive при начале работы с Colab.

Файлы Colab можно узнать по жёлтому символу «CO» и расширению файла «.ipynb». Открыть файлы можно либо двойным щелчком мыши по ним и выбором «Открыть с помощью > Colaboratory» в верхней части открывшейся страницы, либо щелчком правой кнопкой мыши по файлу и выбором «Открыть с помощью > Colaboratory» в контекстном меню файла.

Интерфейс Colab

Открытие блокнотов из интерфейса Colab позволяет получить доступ к существующим файлам из Google Drive, GitHub и локального оборудования. После первого использования интерфейса Colab появится модальное окно проводника файлов. На вкладках в верхней части проводника файлов выберите источник и перейдите к файлу .ipynb , который хотите открыть. Доступ к проводнику файлов также можно получить из интерфейса Colab, выбрав «Файл» > «Открыть блокнот» или используя сочетание клавиш Ctrl+O .

Импортируйте API и получите учетные данные.

В этом разделе показано, как импортировать Python-API Earth Engine и выполнить аутентификацию доступа. Этот контент также доступен в виде блокнота Colab:

API Earth Engine по умолчанию включен в Google Colaboratory, поэтому требуется только импорт и аутентификация. Эти шаги необходимо выполнять для каждой новой сессии Colab, при перезапуске ядра Colab или при перезапуске виртуальной машины Colab из-за бездействия.

Импортируйте API

Выполните следующую команду, чтобы импортировать API в вашу сессию.

import ee

Аутентификация и инициализация

Для аутентификации доступа к серверам Earth Engine используйте функцию ee.Authenticate , а для инициализации — ee.Initialize . Добавьте ячейку с кодом, введите следующие строки, отредактируйте проект и запустите ячейку.

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the library.
ee.Initialize(project='my-project')

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

Протестируйте API

Протестируйте API, выведя высоту горы Эверест. Обратите внимание, что перед использованием API необходимо его инициализировать. Запустите следующий скрипт Python в новой ячейке.

# Print the elevation of Mount Everest.
dem = ee.Image('USGS/SRTMGL1_003')
xy = ee.Geometry.Point([86.9250, 27.9881])
elev = dem.sample(xy, 30).first().get('elevation').getInfo()
print('Mount Everest elevation (m):', elev)

Визуализация карты

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

Статическое изображение

Модуль IPython.display содержит функцию Image , которая может отображать результаты URL-адреса, представляющего изображение, сгенерированное в результате вызова функции getThumbUrl модуля Earth Engine. Следующий скрипт отобразит миниатюру глобальной модели рельефа.

# Import libraries.
import ee
from IPython.display import Image

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the library.
ee.Initialize(project='my-project')

# Import a DEM and display a thumbnail of it.
dem = ee.Image('USGS/SRTMGL1_003')
Image(url=dem.updateMask(dem.gt(0))
  .getThumbUrl({'min': 0, 'max': 4000, 'dimensions': 512,
                'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']}))

Интерактивная карта

Пакет folium можно использовать для отображения объектов ee.Image на интерактивной карте Leaflet . В Folium нет метода по умолчанию для обработки тайлов из Earth Engine, поэтому его необходимо определить и добавить в модуль folium.Map перед использованием.

Приведённый ниже скрипт демонстрирует пример добавления метода для обработки тайлов Earth Engine и использования его для отображения модели рельефа на карте Leaflet.

# Import libraries.
import ee
import folium

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the library.
ee.Initialize(project='my-project')

# Define a method for displaying Earth Engine image tiles to folium map.
def add_ee_layer(self, ee_image_object, vis_params, name):
  map_id_dict = ee.Image(ee_image_object).getMapId(vis_params)
  folium.raster_layers.TileLayer(
    tiles = map_id_dict['tile_fetcher'].url_format,
    attr = "Map Data © Google Earth Engine",
    name = name,
    overlay = True,
    control = True
  ).add_to(self)

# Add EE drawing method to folium.
folium.Map.add_ee_layer = add_ee_layer

# Fetch an elevation model.
dem = ee.Image('USGS/SRTMGL1_003')
# Set visualization parameters.
vis_params = {
  'min': 0,
  'max': 4000,
  'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']}

# Create a folium map object.
my_map = folium.Map(location=[20, 0], zoom_start=3)

# Add the elevation model to the map object.
my_map.add_ee_layer(dem.updateMask(dem.gt(0)), vis_params, 'DEM')

# Add a layer control panel to the map.
my_map.add_child(folium.LayerControl())

# Display the map.
display(my_map)

Визуализация диаграмм

Некоторые функции Earth Engine создают табличные данные, которые можно отображать в виде графиков с помощью пакетов визуализации данных, таких как matplotlib . Следующий пример демонстрирует отображение табличных данных из Earth Engine в виде диаграммы рассеяния. Дополнительную информацию см. в разделе «Построение диаграмм в Colaboratory» .

# Import libraries.
import ee
import matplotlib.pyplot as plt

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the Earth Engine module.
ee.Initialize(project='my-project')

# Fetch a Landsat TOA image.
img = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_034033_20000913')

# Select Red and NIR bands, scale them, and sample 500 points.
samp_fc = img.select(['B3','B4']).sample(scale=30, numPixels=500)

# Arrange the sample as a list of lists.
samp_dict = samp_fc.reduceColumns(ee.Reducer.toList().repeat(2), ['B3', 'B4'])
samp_list = ee.List(samp_dict.get('list'))

# Save server-side ee.List as a client-side Python list.
samp_data = samp_list.getInfo()

# Display a scatter plot of Red-NIR sample pairs using matplotlib.
plt.scatter(samp_data[0], samp_data[1], alpha=0.2)
plt.xlabel('Red', fontsize=12)
plt.ylabel('NIR', fontsize=12)
plt.show()