AI-generated Key Takeaways
-
The
classifymethod 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.
| Usage | Returns |
|---|---|
Image.
classify
(classifier, outputName
)
|
Image |
| Argument | Type | Details |
|---|---|---|
|
this:
image
|
Image | The image to classify. Bands are extracted from this image by name and it must contain all the bands named in the classifier's schema. |
classifier
|
Classifier | The classifier to use. |
outputName
|
String, 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. var img = ee . Image ( 'COPERNICUS/S2_SR/20210109T185751_20210109T185931_T10SEG' ) . select ( 'B.*' ); // ESA WorldCover land cover map, used as label source in classifier training. var lc = ee . Image ( 'ESA/WorldCover/v100/2020' ); // Remap the land cover class values to a 0-based sequential series. var classValues = [ 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90 , 95 , 100 ]; var remapValues = ee . List . sequence ( 0 , 10 ); var label = '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. var roi = ee . Geometry . Rectangle ( - 122.347 , 37.743 , - 122.024 , 37.838 ); var 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 (); var trainingSample = sample . filter ( 'random <= 0.8' ); var validationSample = sample . filter ( 'random > 0.8' ); // Train a 10-tree random forest classifier from the training sample. var trainedClassifier = 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. var trainAccuracy = 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 ); var validationAccuracy = validationSample . errorMatrix ( label , 'classification' ); print ( 'Validation error matrix' , validationAccuracy ); print ( 'Validation accuracy' , validationAccuracy . accuracy ()); // Classify the reflectance image from the trained classifier. var imgClassified = img . classify ( trainedClassifier ); // Add the layers to the map. var classVis = { 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 );
import ee import geemap.core as geemap
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

