ee.Image.reproject

Force an image to be computed in a given projection and resolution.
Usage Returns
Image. reproject (crs, crsTransform , scale ) Image
Argument Type Details
this: image
Image The image to reproject.
crs
Projection The CRS to project the image to.
crsTransform
List, default: null The list of CRS transform values. This is a row-major ordering of the 3x2 transform matrix. This option is mutually exclusive with the scale option, and replaces any transform already on the projection.
scale
Float, default: null If scale is specified, then the projection is scaled by dividing the specified scale value by the nominal size of a meter in the specified projection. If scale is not specified, then the scale of the given projection will be used.

Examples

Code Editor (JavaScript)

 // Use of ee.Image.reproject is rarely needed and should generally be avoided. 
 // Defining the projection and scale of analysis should be handled by "scale", 
 // "crs", and "crsTransform" parameters whenever they are offered by a function. 
 // It is occasionally useful for forcing computation or visualization at a 
 // desired scale and projection when alternative methods are not available. In 
 // this example it is used to compute and visualize terrain slope from a DEM 
 // composite. 
 // Calculate mean elevation from two DEM datasets. The resulting composite 
 // image has a default CRS of WGS84 with 1 degree pixels. 
 var 
  
 dem1 
  
 = 
  
 ee 
 . 
 Image 
 ( 
 'NASA/NASADEM_HGT/001' 
 ). 
 select 
 ( 
 'elevation' 
 ); 
 var 
  
 dem2 
  
 = 
  
 ee 
 . 
 Image 
 ( 
 'CGIAR/SRTM90_V4' 
 ). 
 select 
 ( 
 'elevation' 
 ); 
 var 
  
 demMean 
  
 = 
  
 ee 
 . 
 ImageCollection 
 ([ 
 dem1 
 , 
  
 dem2 
 ]). 
 mean 
 (); 
 // Display the DEMs on the map, note that they all render as expected. 
 var 
  
 demVisParams 
  
 = 
  
 { 
 min 
 : 
  
 500 
 , 
  
 max 
 : 
  
 2500 
 }; 
 Map 
 . 
 setCenter 
 ( 
 - 
 123.457 
 , 
  
 47.815 
 , 
  
 11 
 ); 
 Map 
 . 
 addLayer 
 ( 
 dem1 
 , 
  
 demVisParams 
 , 
  
 'DEM 1' 
 ); 
 Map 
 . 
 addLayer 
 ( 
 dem2 
 , 
  
 demVisParams 
 , 
  
 'DEM 2' 
 ); 
 Map 
 . 
 addLayer 
 ( 
 demMean 
 , 
  
 demVisParams 
 , 
  
 'DEM composite' 
 ); 
 // Calculate terrain slope from the composite DEM (WGS84, 1 degree pixel scale). 
 var 
  
 demCompSlope 
  
 = 
  
 ee 
 . 
 Terrain 
 . 
 slope 
 ( 
 demMean 
 ); 
 // Because the composite has 1 degree pixel scale, the slope calculation 
 // is essenstially meaningless and difficult to even display (you may need to 
 // zoom out to see the individual 1 degree pixels). 
 Map 
 . 
 addLayer 
 ( 
 demCompSlope 
 , 
  
 { 
 min 
 : 
  
 0 
 , 
  
 max 
 : 
  
 0.3 
 }, 
  
 'Slope' 
 ); 
 // We can use ee.Image.reproject to force the slope calculation and display 
 // the result with a reasonable scale of 30 m on WGS84 CRS, for example. 
 var 
  
 slopeScale 
  
 = 
  
 ee 
 . 
 Terrain 
 . 
 slope 
 ( 
  
 demMean 
 . 
 reproject 
 ({ 
  
 crs 
 : 
  
 'EPSG:4326' 
 , 
  
 scale 
 : 
  
 30 
  
 }) 
 ); 
 Map 
 . 
 addLayer 
 ( 
 slopeScale 
 , 
  
 { 
 min 
 : 
  
 0 
 , 
  
 max 
 : 
  
 45 
 }, 
  
 'Slope w/ CRS and scale' 
 ); 
 // To more precisely control the reprojection, you can use the "crsTransform" 
 // parameter instead of the "scale" parameter or set the projection according to 
 // a reference image. For example, here the input composite image for the slope 
 // function is set to match the grid spacing and alignment of the NASADEM image. 
 var 
  
 nasademProj 
  
 = 
  
 dem1 
 . 
 projection 
 (); 
 var 
  
 demMeanReproj 
  
 = 
  
 demMean 
 . 
 reproject 
 ( 
 nasademProj 
 ); 
 var 
  
 slopeRefProj 
  
 = 
  
 ee 
 . 
 Terrain 
 . 
 slope 
 ( 
 demMeanReproj 
 ); 
 Map 
 . 
 addLayer 
 ( 
 slopeRefProj 
 , 
  
 { 
 min 
 : 
  
 0 
 , 
  
 max 
 : 
  
 45 
 }, 
  
 'Slope w/ reference proj' 
 ); 
 print 
 ( 
 'Reference projection' 
 , 
  
 nasademProj 
 ); 
 print 
 ( 
 'DEM composite projection' 
 , 
  
 demMeanReproj 
 . 
 projection 
 ()); 
 // An alternative method for changing the projection of image composites 
 // (not accepting the default WGS84 CRS with 1 degree pixel scale) is to 
 // explicitly set the default projection using ee.Image.setDefaultProjection, 
 // which will not force resampling, like ee.Image.reproject will. 
 var 
  
 demMeanProj 
  
 = 
  
 ee 
 . 
 ImageCollection 
 ([ 
 dem1 
 , 
  
 dem2 
 ]). 
 mean 
 () 
  
 . 
 setDefaultProjection 
 ( 
 nasademProj 
 ); 
 var 
  
 slopeProj 
  
 = 
  
 ee 
 . 
 Terrain 
 . 
 slope 
 ( 
 demMeanProj 
 ); 
 Map 
 . 
 addLayer 
 ( 
 slopeProj 
 , 
  
 { 
 min 
 : 
  
 0 
 , 
  
 max 
 : 
  
 45 
 }, 
  
 'slope w/ default projection set' 
 ); 

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)

 # Use of ee.Image.reproject is rarely needed and should generally be avoided. 
 # Defining the projection and scale of analysis should be handled by "scale", 
 # "crs", and "crsTransform" parameters whenever they are offered by a function. 
 # It is occasionally useful for forcing computation or visualization at a 
 # desired scale and projection when alternative methods are not available. In 
 # this example it is used to compute and visualize terrain slope from a DEM 
 # composite. 
 # Calculate mean elevation from two DEM datasets. The resulting composite 
 # image has a default CRS of WGS84 with 1 degree pixels. 
 dem_1 
 = 
 ee 
 . 
 Image 
 ( 
 'NASA/NASADEM_HGT/001' 
 ) 
 . 
 select 
 ( 
 'elevation' 
 ) 
 dem_2 
 = 
 ee 
 . 
 Image 
 ( 
 'CGIAR/SRTM90_V4' 
 ) 
 . 
 select 
 ( 
 'elevation' 
 ) 
 dem_mean 
 = 
 ee 
 . 
 ImageCollection 
 ([ 
 dem_1 
 , 
 dem_2 
 ]) 
 . 
 mean 
 () 
 # Display the DEMs on the map, note that they all render as expected. 
 dem_vis_params 
 = 
 { 
 'min' 
 : 
 500 
 , 
 'max' 
 : 
 2500 
 } 
 m 
 = 
 geemap 
 . 
 Map 
 () 
 m 
 . 
 set_center 
 ( 
 - 
 123.457 
 , 
 47.815 
 , 
 11 
 ) 
 m 
 . 
 add_layer 
 ( 
 dem_1 
 , 
 dem_vis_params 
 , 
 'DEM 1' 
 ) 
 m 
 . 
 add_layer 
 ( 
 dem_2 
 , 
 dem_vis_params 
 , 
 'DEM 2' 
 ) 
 m 
 . 
 add_layer 
 ( 
 dem_mean 
 , 
 dem_vis_params 
 , 
 'DEM composite' 
 ) 
 # Calculate terrain slope from the composite DEM (WGS84, 1 degree pixel scale). 
 dem_comp_slope 
 = 
 ee 
 . 
 Terrain 
 . 
 slope 
 ( 
 dem_mean 
 ) 
 # Because the composite has 1 degree pixel scale, the slope calculation 
 # is essenstially meaningless and difficult to even display (you may need to 
 # zoom out to see the individual 1 degree pixels). 
 m 
 . 
 add_layer 
 ( 
 dem_comp_slope 
 , 
 { 
 'min' 
 : 
 0 
 , 
 'max' 
 : 
 0.3 
 }, 
 'Slope' 
 ) 
 # We can use ee.Image.reproject to force the slope calculation and display 
 # the result with a reasonable scale of 30 m on WGS84 CRS, for example. 
 slope_scale 
 = 
 ee 
 . 
 Terrain 
 . 
 slope 
 ( 
 dem_mean 
 . 
 reproject 
 ( 
 crs 
 = 
 'EPSG:4326' 
 , 
 scale 
 = 
 30 
 )) 
 m 
 . 
 add_layer 
 ( 
 slope_scale 
 , 
 { 
 'min' 
 : 
 0 
 , 
 'max' 
 : 
 45 
 }, 
 'Slope w/ CRS and scale' 
 ) 
 # To more precisely control the reprojection, you can use the "crsTransform" 
 # parameter instead of the "scale" parameter or set the projection according to 
 # a reference image. For example, here the input composite image for the slope 
 # function is set to match the grid spacing and alignment of the NASADEM image. 
 nasadem_proj 
 = 
 dem_1 
 . 
 projection 
 () 
 dem_mean_reproj 
 = 
 dem_mean 
 . 
 reproject 
 ( 
 nasadem_proj 
 ) 
 slope_ref_proj 
 = 
 ee 
 . 
 Terrain 
 . 
 slope 
 ( 
 dem_mean_reproj 
 ) 
 m 
 . 
 add_layer 
 ( 
 slope_ref_proj 
 , 
 { 
 'min' 
 : 
 0 
 , 
 'max' 
 : 
 45 
 }, 
 'Slope w/ reference proj' 
 ) 
 display 
 ( 
 'Reference projection' 
 , 
 nasadem_proj 
 ) 
 display 
 ( 
 'DEM composite projection' 
 , 
 dem_mean_reproj 
 . 
 projection 
 ()) 
 # An alternative method for changing the projection of image composites 
 # (not accepting the default WGS84 CRS with 1 degree pixel scale) is to 
 # explicitly set the default projection using ee.Image.setDefaultProjection, 
 # which will not force resampling, like ee.Image.reproject will. 
 dem_mean_proj 
 = 
 ( 
 ee 
 . 
 ImageCollection 
 ([ 
 dem_1 
 , 
 dem_2 
 ]) 
 . 
 mean 
 () 
 . 
 setDefaultProjection 
 ( 
 nasadem_proj 
 ) 
 ) 
 slope_proj 
 = 
 ee 
 . 
 Terrain 
 . 
 slope 
 ( 
 dem_mean_proj 
 ) 
 m 
 . 
 add_layer 
 ( 
 slope_proj 
 , 
 { 
 'min' 
 : 
 0 
 , 
 'max' 
 : 
 45 
 }, 
 'slope w/ default projection set' 
 ) 
 m 
Create a Mobile Website
View Site in Mobile | Classic
Share by: