google / earthengine-jupyter

Tools for working with the Earth Engine from a Jupyter development environment
Apache License 2.0
83 stars 7 forks source link
experimental google-earth-engine jupyter python

earthengine-jupyter

NOTICE: This is an experimental project and is not an officially supported Google project. You are welcome to use it, but we do not guarantee stability.

Setup

try:
  import ee_jupyter
  print('ee_jupyter was already installed.')
except ModuleNotFoundError:
  print('ee_jupyter was not found. Installing now...')
  import os
  result = os.system('pip -q install earthengine-jupyter')

How to use

This lib contains a Map class that can be used to display an interactive map.

import ee
from ee_jupyter.core import authenticate_if_needed
from ee_jupyter.ipyleaflet import Map
from ee_jupyter.layout import MapWithInspector
import ipywidgets as widgets
authenticate_if_needed()
# Intialize the Earth Engine client library.
ee.Initialize()
map1 = Map(center=(37.5924, -122.09), zoom=8)
map1

Define an Earth Engine image layer, and add it to the interactive map.

img1 = ee.Image("LANDSAT/LC09/C02/T1_L2/LC09_044034_20220127")
visualization = {
    'bands': ['SR_B4', 'SR_B3', 'SR_B2'],
    'min': 0.2 / 0.0000275,
    'max': 0.4 / 0.0000275,
}
map1.addLayer(eeObject=img1, visParams=visualization, name='Landsat scene')

We can also create an inspector object and associate it with the previously created map.

from ee_jupyter.ipyleaflet import Inspector

inspector1 = Inspector(map_object=map1)
inspector1

Typically when you create a inspector object, you will want to display it with the map. The MapWithInpsector object adds a button that toggles the inspector functionality.

The map below shows a Sentinel-2 image covering Paris. Click on the inspector toggle button to open the inspector.

map_init_paris = {'center':(49.4, 2.3), 'zoom':8}
m = MapWithInspector(**map_init_paris)
image = ee.Image('COPERNICUS/S2_SR_HARMONIZED/20220604T104619_20220604T104620_T31UDQ')
m.map.addLayer(image, {'bands': ['B4', 'B3', 'B2'], 'max': 2500}, 'Landsat image')
m
> **Tip With Caption** > > Note that when viewed on GitHub Pages you can manipulate Jupyter > widgets independently, but the widgets do not interact with each > other. To experience the cross-widget interactivity, open up this > notebook in a Jupyter environment.

Displaying a Map Image

If you want to display a static (non-interactive) image, you can do that as well. The embed=True parameter will allow the image to be saved within the notebook.

from IPython.display import Image

visualization['dimensions'] = 400  # maximum dimension for the image
url = img1.getThumbUrl(visualization)

Image(url=url, format='png', embed=True)