Earth Engine Tutorial #34: Interactive extraction of pixel values and interactive region reduction

Earth Engine Tutorial #34: Interactive extraction of pixel values and interactive region reduction

This tutorial shows you how to extract pixel values from Earth Engine images interactively and save pixel values as a csv and shapefile. It will also show you how to perform interactive region reduction, which allows users to draw a rectangle or circle to compute descriptive statistics (e.g., mean, min, max, std, sum) of pixels within a user-drawn geometry. The region reduction results can be exported as a csv for shapefile.

Requirements

  • geemap - A Python package for interactive mapping with Google Earth Engine, ipyleaflet, and ipywidgets

Installation

conda create -n gee python=3.7
conda activate gee
conda install mamba -c conda-forge
mamba install geemap -c conda-forge

Resources

Notebook:

Demo

Video

Step-by-step tutorial

Interactive extraction of pixel values

Import libraries

import os
import ee
import geemap

Create an interactive map

Map = geemap.Map()
Map

Add data to the map

landsat7 = ee.Image('LE7_TOA_5YEAR/1999_2003') \
    .select([0, 1, 2, 3, 4, 6])
landsat_vis = {
    'bands': ['B4', 'B3', 'B2'], 
    'gamma': 1.4
}
Map.addLayer(landsat7, landsat_vis, "LE7_TOA_5YEAR/1999_2003")

Map.set_plot_options(add_marker_cluster=True)

Activate the plotting tool

Tick the Plotting checkbox and click the mouse on the map to start displaying charts.

Export pixel values to shapefile/csv

out_dir = os.path.join(os.path.expanduser('~'), 'Downloads')
# out_csv = os.path.join(out_dir, 'points.csv')
out_shp = os.path.join(out_dir, 'points.shp')
Map.extract_values_to_points(out_shp)

Interactive Region Reduction

Import libraries

import os
import ee
import geemap

Create an interactive map

m = geemap.Map()

Add add to the map

collection = ee.ImageCollection('MODIS/006/MOD13A2') \
    .filterDate('2015-01-01', '2019-12-31') \
    .select('NDVI')

# Convert the image collection to an image.
image = collection.toBands()

ndvi_vis = {
  'min': 0.0,
  'max': 9000.0,
  'palette': [
    'FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901',
    '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',
    '012E01', '011D01', '011301'
  ]
}

m.addLayer(image, {}, 'MODIS NDVI Time-series')
m.addLayer(image.select(0), ndvi_vis, 'MODIS NDVI VIS')

m

Set reducer

m.set_plot_options(add_marker_cluster=True, marker=None)
m.roi_reducer = ee.Reducer.mean()

Export data

out_dir = os.path.join(os.path.expanduser('~'), 'Downloads')
# out_csv = os.path.join(out_dir, 'points.csv')
out_shp = os.path.join(out_dir, 'ndvi.shp')
m.extract_values_to_points(out_shp)

Did you find this article valuable?

Support Qiusheng Wu by becoming a sponsor. Any amount is appreciated!