Announcement: All noncommercial projects registered to use Earth Engine beforeApril 15, 2025 mustverify noncommercial eligibility to maintain access. If you have not verified by September 26, 2025, your access may be on hold.

ee.Image.classify

  • Theclassify method applies a trained classifier to an image, assigning a class label to each pixel based on its spectral characteristics.

  • It takes the image to be classified, the trained classifier object, and an optional output band name as arguments.

  • The input image must contain all the bands that the classifier was trained on.

  • The method returns a new image with an added band containing the classification results.

  • The example code demonstrates classifying a Sentinel-2 image for land cover using a random forest classifier trained on WorldCover data.

Classifies an image.

UsageReturns
Image.classify(classifier,outputName)Image
ArgumentTypeDetails
this:imageImageThe image to classify. Bands are extracted from this image by name and it must contain all the bands named in the classifier's schema.
classifierClassifierThe classifier to use.
outputNameString, default: "classification"The name of the band to be added. If the classifier produces more than 1 output, this name is ignored.

Examples

Code Editor (JavaScript)

// A Sentinel-2 surface reflectance image, reflectance bands selected,// serves as the source for training and prediction in this contrived example.varimg=ee.Image('COPERNICUS/S2_SR/20210109T185751_20210109T185931_T10SEG').select('B.*');// ESA WorldCover land cover map, used as label source in classifier training.varlc=ee.Image('ESA/WorldCover/v100/2020');// Remap the land cover class values to a 0-based sequential series.varclassValues=[10,20,30,40,50,60,70,80,90,95,100];varremapValues=ee.List.sequence(0,10);varlabel='lc';lc=lc.remap(classValues,remapValues).rename(label).toByte();// Add land cover as a band of the reflectance image and sample 100 pixels at// 10 m scale from each land cover class within a region of interest.varroi=ee.Geometry.Rectangle(-122.347,37.743,-122.024,37.838);varsample=img.addBands(lc).stratifiedSample({numPoints:100,classBand:label,region:roi,scale:10,geometries:true});// Add a random value field to the sample and use it to approximately split 80%// of the features into a training set and 20% into a validation set.sample=sample.randomColumn();vartrainingSample=sample.filter('random <= 0.8');varvalidationSample=sample.filter('random > 0.8');// Train a 10-tree random forest classifier from the training sample.vartrainedClassifier=ee.Classifier.smileRandomForest(10).train({features:trainingSample,classProperty:label,inputProperties:img.bandNames()});// Get information about the trained classifier.print('Results of trained classifier',trainedClassifier.explain());// Get a confusion matrix and overall accuracy for the training sample.vartrainAccuracy=trainedClassifier.confusionMatrix();print('Training error matrix',trainAccuracy);print('Training overall accuracy',trainAccuracy.accuracy());// Get a confusion matrix and overall accuracy for the validation sample.validationSample=validationSample.classify(trainedClassifier);varvalidationAccuracy=validationSample.errorMatrix(label,'classification');print('Validation error matrix',validationAccuracy);print('Validation accuracy',validationAccuracy.accuracy());// Classify the reflectance image from the trained classifier.varimgClassified=img.classify(trainedClassifier);// Add the layers to the map.varclassVis={min:0,max:10,palette:['006400','ffbb22','ffff4c','f096ff','fa0000','b4b4b4','f0f0f0','0064c8','0096a0','00cf75','fae6a0']};Map.setCenter(-122.184,37.796,12);Map.addLayer(img,{bands:['B11','B8','B3'],min:100,max:3500},'img');Map.addLayer(lc,classVis,'lc');Map.addLayer(imgClassified,classVis,'Classified');Map.addLayer(roi,{color:'white'},'ROI',false,0.5);Map.addLayer(trainingSample,{color:'black'},'Training sample',false);Map.addLayer(validationSample,{color:'white'},'Validation sample',false);

Python setup

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

importeeimportgeemap.coreasgeemap

Colab (Python)

# A Sentinel-2 surface reflectance image, reflectance bands selected,# serves as the source for training and prediction in this contrived example.img=ee.Image('COPERNICUS/S2_SR/20210109T185751_20210109T185931_T10SEG').select('B.*')# ESA WorldCover land cover map, used as label source in classifier training.lc=ee.Image('ESA/WorldCover/v100/2020')# Remap the land cover class values to a 0-based sequential series.class_values=[10,20,30,40,50,60,70,80,90,95,100]remap_values=ee.List.sequence(0,10)label='lc'lc=lc.remap(class_values,remap_values).rename(label).toByte()# Add land cover as a band of the reflectance image and sample 100 pixels at# 10 m scale from each land cover class within a region of interest.roi=ee.Geometry.Rectangle(-122.347,37.743,-122.024,37.838)sample=img.addBands(lc).stratifiedSample(numPoints=100,classBand=label,region=roi,scale=10,geometries=True)# Add a random value field to the sample and use it to approximately split 80%# of the features into a training set and 20% into a validation set.sample=sample.randomColumn()training_sample=sample.filter('random <= 0.8')validation_sample=sample.filter('random > 0.8')# Train a 10-tree random forest classifier from the training sample.trained_classifier=ee.Classifier.smileRandomForest(10).train(features=training_sample,classProperty=label,inputProperties=img.bandNames(),)# Get information about the trained classifier.display('Results of trained classifier',trained_classifier.explain())# Get a confusion matrix and overall accuracy for the training sample.train_accuracy=trained_classifier.confusionMatrix()display('Training error matrix',train_accuracy)display('Training overall accuracy',train_accuracy.accuracy())# Get a confusion matrix and overall accuracy for the validation sample.validation_sample=validation_sample.classify(trained_classifier)validation_accuracy=validation_sample.errorMatrix(label,'classification')display('Validation error matrix',validation_accuracy)display('Validation accuracy',validation_accuracy.accuracy())# Classify the reflectance image from the trained classifier.img_classified=img.classify(trained_classifier)# Add the layers to the map.class_vis={'min':0,'max':10,'palette':['006400','ffbb22','ffff4c','f096ff','fa0000','b4b4b4','f0f0f0','0064c8','0096a0','00cf75','fae6a0',],}m=geemap.Map()m.set_center(-122.184,37.796,12)m.add_layer(img,{'bands':['B11','B8','B3'],'min':100,'max':3500},'img')m.add_layer(lc,class_vis,'lc')m.add_layer(img_classified,class_vis,'Classified')m.add_layer(roi,{'color':'white'},'ROI',False,0.5)m.add_layer(training_sample,{'color':'black'},'Training sample',False)m.add_layer(validation_sample,{'color':'white'},'Validation sample',False)m

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2024-07-13 UTC.