ee.Image.expression

Evaluates an arithmetic expression on an image, possibly involving additional images.

The bands of the primary input image are available using the built-in function b(), as b(0) or b('band_name').

Variables in the expression are interpreted as additional image parameters which must be supplied in opt_map. The bands of each such image can be accessed like image.band_name or image[0].

Both b() and image[] allow multiple arguments, to specify multiple bands, such as b(1, 'name', 3). Calling b() with no arguments, or using a variable by itself, returns all bands of the image.

If the result of an expression is a single band, it can be assigned a name using the '=' operator (e.g.: x = a + b).

Returns the image computed by the provided expression.

Usage Returns
Image. expression (expression, map ) Image
Argument Type Details
this: image
Image The Image instance.
expression
String The expression to evaluate.
map
Dictionary<Image>, optional A map of input images available by name.

Examples

Code Editor (JavaScript)

 // The following expressions calculate the normalized difference vegetation 
 // index (NDVI): (NIR - Red) / (NIR + Red). 
 // NIR is Landsat 8 L2 band 'SR_B5', the 4th band index. 
 // Red is Landsat 8 L2 band 'SR_B4', the 3rd band index. 
 // A Landsat 8 L2 surface reflectance image. 
 var 
  
 img 
  
 = 
  
 ee 
 . 
 Image 
 ( 
 'LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508' 
 ); 
 // Visualization parameters for NDVI. 
 var 
  
 ndviVis 
  
 = 
  
 { 
 min 
 : 
  
 0 
 , 
  
 max 
 : 
  
 0.5 
 }; 
 // Expression using image band indices. 
 var 
  
 bandIndexExp 
  
 = 
  
 '(b(4) - b(3)) / (b(4) + b(3))' 
 ; 
 var 
  
 bandIndexImg 
  
 = 
  
 img 
 . 
 expression 
 ( 
 bandIndexExp 
 ). 
 rename 
 ( 
 'NDVI' 
 ); 
 Map 
 . 
 setCenter 
 ( 
 - 
 122.14 
 , 
  
 37.38 
 , 
  
 11 
 ); 
 Map 
 . 
 addLayer 
 ( 
 bandIndexImg 
 , 
  
 ndviVis 
 , 
  
 'NDVI 1' 
 ); 
 // Expression using image band names. 
 var 
  
 bandNameExp 
  
 = 
  
 '(b("SR_B5") - b("SR_B4")) / (b("SR_B5") + b("SR_B4"))' 
 ; 
 var 
  
 bandNameImg 
  
 = 
  
 img 
 . 
 expression 
 ( 
 bandNameExp 
 ). 
 rename 
 ( 
 'NDVI' 
 ); 
 Map 
 . 
 addLayer 
 ( 
 bandNameImg 
 , 
  
 ndviVis 
 , 
  
 'NDVI 2' 
 ); 
 // Expression using named variables. 
 var 
  
 namedVarsExp 
  
 = 
  
 '(NIR - Red) / (NIR + Red)' 
 ; 
 var 
  
 namedVarsImg 
  
 = 
  
 ee 
 . 
 Image 
 (). 
 expression 
 ({ 
  
 expression 
 : 
  
 namedVarsExp 
 , 
  
 map 
 : 
  
 { 
  
 NIR 
 : 
  
 img 
 . 
 select 
 ( 
 'SR_B5' 
 ), 
  
 Red 
 : 
  
 img 
 . 
 select 
 ( 
 'SR_B4' 
 ) 
  
 } 
 }). 
 rename 
 ( 
 'NDVI' 
 ); 
 Map 
 . 
 addLayer 
 ( 
 namedVarsImg 
 , 
  
 ndviVis 
 , 
  
 'NDVI 3' 
 ); 
 // Expression using named variables with image band access by dot notation. 
 var 
  
 namedVarsDotExp 
  
 = 
  
 '(ls8.SR_B5 - ls8.SR_B4) / (ls8.SR_B5 + ls8.SR_B4)' 
 ; 
 var 
  
 namedVarsDotImg 
  
 = 
  
 ee 
 . 
 Image 
 (). 
 expression 
 ({ 
  
 expression 
 : 
  
 namedVarsDotExp 
 , 
  
 map 
 : 
  
 { 
 ls8 
 : 
  
 img 
 } 
 }). 
 rename 
 ( 
 'NDVI' 
 ); 
 Map 
 . 
 addLayer 
 ( 
 namedVarsDotImg 
 , 
  
 ndviVis 
 , 
  
 'NDVI 4' 
 ); 
 // Expressions can use arithmetic operators (+ - * / % **), relational 
 // operators (== != < > <= >=), logical operators (&& || ! ^), the ternary 
 // operator (condition ? ifTrue : ifFalse), and a subset of JavaScript Math 
 // functions. Math functions are called by name directly, they are not accessed 
 // from the Math object (e.g., sqrt() instead of Math.sqrt()). 
 var 
  
 jsMathExp 
  
 = 
  
 'c = sqrt(pow(a, 2) + pow(b, 2))' 
 ; 
 var 
  
 jsMathImg 
  
 = 
  
 ee 
 . 
 Image 
 (). 
 expression 
 ({ 
  
 expression 
 : 
  
 jsMathExp 
 , 
  
 map 
 : 
  
 { 
  
 a 
 : 
  
 ee 
 . 
 Image 
 ( 
 5 
 ), 
  
 b 
 : 
  
 img 
 . 
 select 
 ( 
 'SR_B2' 
 ) 
  
 } 
 }); 
 Map 
 . 
 addLayer 
 ( 
 jsMathImg 
 , 
  
 { 
 min 
 : 
  
 5000 
 , 
  
 max 
 : 
  
 20000 
 }, 
  
 'Hypotenuse' 
 , 
  
 false 
 ); 

Python setup

See the Python Environment page for information on the Python API and using geemap for interactive development.

 import 
  
 ee 
 import 
  
 geemap.core 
  
 as 
  
 geemap 

Colab (Python)

 # The following expressions calculate the normalized difference vegetation 
 # index (NDVI): (NIR - Red) / (NIR + Red). 
 # NIR is Landsat 8 L2 band 'SR_B5', the 4th band index. 
 # Red is Landsat 8 L2 band 'SR_B4', the 3rd band index. 
 # A Landsat 8 L2 surface reflectance image. 
 img 
 = 
 ee 
 . 
 Image 
 ( 
 'LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508' 
 ) 
 # Visualization parameters for NDVI. 
 ndvi_vis 
 = 
 { 
 'min' 
 : 
 0 
 , 
 'max' 
 : 
 0.5 
 } 
 # Expression using image band indices. 
 band_index_exp 
 = 
 '(b(4) - b(3)) / (b(4) + b(3))' 
 band_index_img 
 = 
 img 
 . 
 expression 
 ( 
 band_index_exp 
 ) 
 . 
 rename 
 ( 
 'NDVI' 
 ) 
 m 
 = 
 geemap 
 . 
 Map 
 () 
 m 
 . 
 set_center 
 ( 
 - 
 122.14 
 , 
 37.38 
 , 
 11 
 ) 
 m 
 . 
 add_layer 
 ( 
 band_index_img 
 , 
 ndvi_vis 
 , 
 'NDVI 1' 
 ) 
 # Expression using image band names. 
 band_name_exp 
 = 
 '(b("SR_B5") - b("SR_B4")) / (b("SR_B5") + b("SR_B4"))' 
 band_name_img 
 = 
 img 
 . 
 expression 
 ( 
 band_name_exp 
 ) 
 . 
 rename 
 ( 
 'NDVI' 
 ) 
 m 
 . 
 add_layer 
 ( 
 band_name_img 
 , 
 ndvi_vis 
 , 
 'NDVI 2' 
 ) 
 # Expression using named variables. 
 named_vars_exp 
 = 
 '(NIR - Red) / (NIR + Red)' 
 named_vars_img 
 = 
 ( 
 ee 
 . 
 Image 
 () 
 . 
 expression 
 ( 
 expression 
 = 
 named_vars_exp 
 , 
 opt_map 
 = 
 { 
 'NIR' 
 : 
 img 
 . 
 select 
 ( 
 'SR_B5' 
 ), 
 'Red' 
 : 
 img 
 . 
 select 
 ( 
 'SR_B4' 
 )}, 
 ) 
 . 
 rename 
 ( 
 'NDVI' 
 ) 
 ) 
 m 
 . 
 add_layer 
 ( 
 named_vars_img 
 , 
 ndvi_vis 
 , 
 'NDVI 3' 
 ) 
 # Expression using named variables with image band access by dot notation. 
 named_vars_dot_exp 
 = 
 '(ls8.SR_B5 - ls8.SR_B4) / (ls8.SR_B5 + ls8.SR_B4)' 
 named_vars_dot_img 
 = 
 ( 
 ee 
 . 
 Image 
 () 
 . 
 expression 
 ( 
 expression 
 = 
 named_vars_dot_exp 
 , 
 opt_map 
 = 
 { 
 'ls8' 
 : 
 img 
 }) 
 . 
 rename 
 ( 
 'NDVI' 
 ) 
 ) 
 m 
 . 
 add_layer 
 ( 
 named_vars_dot_img 
 , 
 ndvi_vis 
 , 
 'NDVI 4' 
 ) 
 # Expressions can use arithmetic operators (+ - * / % **), relational 
 # operators (== != < > <= >=), logical operators (&& || ! ^), the ternary 
 # operator (condition ? ifTrue : ifFalse), and a subset of JavaScript Math 
 # functions. Math functions are called by name directly, they are not accessed 
 # from the Math object (e.g., sqrt() instead of Math.sqrt()). 
 js_math_exp 
 = 
 'c = sqrt(pow(a, 2) + pow(b, 2))' 
 js_math_img 
 = 
 ee 
 . 
 Image 
 () 
 . 
 expression 
 ( 
 expression 
 = 
 js_math_exp 
 , 
 opt_map 
 = 
 { 
 'a' 
 : 
 ee 
 . 
 Image 
 ( 
 5 
 ), 
 'b' 
 : 
 img 
 . 
 select 
 ( 
 'SR_B2' 
 )} 
 ) 
 m 
 . 
 add_layer 
 ( 
 js_math_img 
 , 
 { 
 'min' 
 : 
 5000 
 , 
 'max' 
 : 
 20000 
 }, 
 'Hypotenuse' 
 , 
 False 
 ) 
 m 
Create a Mobile Website
View Site in Mobile | Classic
Share by: