Earth Engine Python API можно развернуть в блокноте Google Colaboratory. Блокноты Colab – это блокноты Jupyter, которые работают в облаке и тесно интегрированы с Google Диском, что упрощает их настройку, доступ к ним и обмен ими. Если вы не знакомы с Google Colab или блокнотами Jupyter, рекомендуем изучить приветственный сайт Colab.
В следующих разделах описывается, как развернуть Earth Engine в Google Colab и визуализировать карты и диаграммы с помощью сторонних пакетов Python.
Как открыть блокнот Colab
Блокноты можно открывать как на Google Диске, так и в интерфейсе Colaboratory.
Новый блокнот
Google Диск
Откройте Google Диск и создайте файл.
- Создать > Ещё > Colaboratory
- Нажмите правой кнопкой мыши на папку и выберите в контекстном меню Ещё > Colaboratory.
Интерфейс Colab
Перейдите на сайт Colab и создайте новый файл.
- File (Файл) > New (Создать) > New Python 3 notebook (Новый блокнот Python 3).
- Если вы уже работали с Colab, то при переходе по ссылке выше откроется проводник, в котором можно создать новый файл, используя раскрывающееся меню внизу окна.
Существующий блокнот
Существующие файлы блокнотов (с расширением .ipynb) можно открывать на Google Диске и в интерфейсе Colab.
Google Диск
Блокноты Colab могут находиться в разных папках на Google Диске в зависимости от того, где они были созданы. Блокноты, созданные на Google Диске, будут находиться в папке, в которой они были созданы или в которую были перемещены. Блокноты Colab, созданные в интерфейсе Colab, по умолчанию сохраняются в папке Colab Notebooks, которая автоматически добавляется в раздел "Мой диск" на Google Диске, когда вы начинаете работать с Colab.
Файлы Colab можно определить по желтому символу CO и расширению .ipynb. Чтобы открыть файл, дважды нажмите на него и выберите Открыть с помощью > Colaboratory в верхней части страницы или нажмите на файл правой кнопкой мыши и выберите Открыть с помощью > Colaboratory в контекстном меню.
Интерфейс Colab
Открывая блокноты в интерфейсе Colab, вы получаете доступ к существующим файлам на Google Диске, GitHub и локальном оборудовании. При последующих посещениях интерфейса Colab будет появляться модальное окно проводника файлов. На вкладках в верхней части проводника выберите источник и перейдите к файлу .ipynb, который хотите открыть. Проводник также можно открыть из интерфейса Colab, выбрав Файл > Открыть блокнот или нажав Ctrl + O.
Импорт API и получение учетных данных
В этом разделе показано, как импортировать Earth Engine Python API и аутентифицировать доступ. Этот контент также доступен в виде блокнота Colab:
Earth Engine API по умолчанию включен в Google Colaboratory, поэтому требуется только импорт и аутентификация. Эти действия необходимо выполнять для каждого нового сеанса Colab, а также при перезапуске ядра Colab или утилизации виртуальной машины Colab из-за бездействия.
Импорт API
Чтобы импортировать API в сеанс, запустите следующую ячейку.
import ee
Аутентификация и инициализация
Запустите функцию ee.Authenticate, чтобы выполнить аутентификацию доступа к серверам Earth Engine, и 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('NASA/NASADEM_HGT/001') 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, представляющего изображение, сгенерированное в результате вызова функции Earth Engine getThumbUrl. Следующий скрипт отобразит значок глобальной модели рельефа.
# 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('NASA/NASADEM_HGT/001').select('elevation') 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('NASA/NASADEM_HGT/001').select('elevation') # 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()
Запустить в Google Colab
Посмотреть исходный код на GitHub