Announcement: All noncommercial projects registered to use Earth Engine before April 15, 2025 must verify noncommercial eligibility to maintain Earth Engine access.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-03-17 UTC."],[[["\u003cp\u003eExports an Earth Engine classifier as an asset for later use.\u003c/p\u003e\n"],["\u003cp\u003eAllows customization of the export task with description, asset ID, and priority settings.\u003c/p\u003e\n"],["\u003cp\u003eProvides code examples in JavaScript and Python demonstrating the export and subsequent use of the saved classifier.\u003c/p\u003e\n"],["\u003cp\u003eUtilizes a Landsat-based composite and MODIS landcover data for training the classifier in the examples.\u003c/p\u003e\n"],["\u003cp\u003eEnables efficient saving and loading of trained classifiers within the Earth Engine platform.\u003c/p\u003e\n"]]],["This content details exporting an `ee.Classifier` as an Earth Engine asset using `Export.classifier.toAsset`. Key actions include: creating a classifier, defining a training dataset using landcover data and Landsat composites, sampling training data, and then training the classifier. The export process involves specifying the `classifier`, `description`, `assetId`, and `priority`. After export, the saved classifier can be loaded and used for classification, then visualized.\n"],null,["\u003cbr /\u003e\n\nCreates a batch task to export an ee.Classifier as an Earth Engine asset.\n\n\u003cbr /\u003e\n\nOnly supported for ee.Classifier.smileRandomForest, ee.Classifier.smileCart, ee.Classifier.DecisionTree and ee.Classifier.DecisionTreeEnsemble.\n\n| Usage | Returns |\n|---------------------------------------------------------------------------------------|---------|\n| `Export.classifier.toAsset(classifier, `*description* `, `*assetId* `, `*priority*`)` | |\n\n| Argument | Type | Details |\n|---------------|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|\n| `classifier` | ComputedObject | The classifier to export. |\n| `description` | String, optional | A human-readable name of the task. Defaults to \"myExportClassifierTask\". |\n| `assetId` | String, optional | The destination asset ID. |\n| `priority` | Number, optional | The priority of the task within the project. Higher priority tasks are scheduled sooner. Must be an integer between 0 and 9999. Defaults to 100. |\n\nExamples\n\nCode Editor (JavaScript) \n\n```javascript\n// First gather the training data for a random forest classifier.\n// Let's use MCD12Q1 yearly landcover for the labels.\nvar landcover = ee.ImageCollection('MODIS/061/MCD12Q1')\n .filterDate('2022-01-01', '2022-12-31')\n .first()\n .select('LC_Type1');\n// A region of interest for training our classifier.\nvar region = ee.Geometry.BBox(17.33, 36.07, 26.13, 43.28);\n\n// Training features will be based on a Landsat 8 composite.\nvar l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1')\n .filterBounds(region)\n .filterDate('2022-01-01', '2023-01-01');\n\n// Draw the Landsat composite, visualizing true color bands.\nvar landsatComposite = ee.Algorithms.Landsat.simpleComposite({\n collection: l8,\n asFloat: true\n});\nMap.addLayer(landsatComposite, {\n min: 0,\n max: 0.3,\n bands: ['B3', 'B2', 'B1']\n}, 'Landsat composite');\n\n// Make a training dataset by sampling the stacked images.\nvar training = landcover.addBands(landsatComposite).sample({\n region: region,\n scale: 30,\n // With export to Classifier we can bump this higher to say 10,000.\n numPixels: 1000\n});\n\nvar classifier = ee.Classifier.smileRandomForest({\n // We can also increase the number of trees higher to ~100 if needed.\n numberOfTrees: 3\n}).train({features: training, classProperty: 'LC_Type1'});\n\n// Create an export classifier task to run.\nvar assetId = 'projects/\u003cproject-name\u003e/assets/\u003casset-name\u003e'; // \u003c\u003e modify these\nExport.classifier.toAsset({\n classifier: classifier,\n description: 'classifier_export',\n assetId: assetId\n});\n\n// Load the classifier after the export finishes and visualize.\nvar savedClassifier = ee.Classifier.load(assetId)\nvar landcoverPalette = '05450a,086a10,54a708,78d203,009900,c6b044,dcd159,' +\n 'dade48,fbff13,b6ff05,27ff87,c24f44,a5a5a5,ff6d4c,69fff8,f9ffa4,1c0dff';\nvar landcoverVisualization = {\n palette: landcoverPalette,\n min: 0,\n max: 16,\n format: 'png'\n};\nMap.addLayer(\n landsatComposite.classify(savedClassifier),\n landcoverVisualization,\n 'Upsampled landcover, saved');\n```\nPython setup\n\nSee the [Python Environment](/earth-engine/guides/python_install) page for information on the Python API and using\n`geemap` for interactive development. \n\n```python\nimport ee\nimport geemap.core as geemap\n```\n\nColab (Python) \n\n```python\n# First gather the training data for a random forest classifier.\n# Let's use MCD12Q1 yearly landcover for the labels.\nlandcover = (ee.ImageCollection('MODIS/061/MCD12Q1')\n .filterDate('2022-01-01', '2022-12-31')\n .first()\n .select('LC_Type1'))\n\n# A region of interest for training our classifier.\nregion = ee.Geometry.BBox(17.33, 36.07, 26.13, 43.28)\n\n# Training features will be based on a Landsat 8 composite.\nl8 = (ee.ImageCollection('LANDSAT/LC08/C02/T1')\n .filterBounds(region)\n .filterDate('2022-01-01', '2023-01-01'))\n\n# Draw the Landsat composite, visualizing true color bands.\nlandsatComposite = ee.Algorithms.Landsat.simpleComposite(\n collection=l8, asFloat=True)\n\nMap = geemap.Map()\nMap # Render the map in the notebook.\nMap.addLayer(landsatComposite, {\n 'min': 0,\n 'max': 0.3,\n 'bands': ['B3', 'B2', 'B1']\n}, 'Landsat composite')\n\n# Make a training dataset by sampling the stacked images.\ntraining = landcover.addBands(landsatComposite).sample(\n region=region,\n scale=30,\n # With export to Classifier we can bump this higher to say 10,000.\n numPixels=1000\n)\n\n# We can also increase the number of trees higher to ~100 if needed.\nclassifier = ee.Classifier.smileRandomForest(\n numberOfTrees=3).train(features=training, classProperty='LC_Type1')\n\n# Create an export classifier task to run.\nasset_id = 'projects/\u003cproject-name\u003e/assets/\u003casset-name\u003e' # \u003c\u003e modify these\nee.batch.Export.classifier.toAsset(\n classifier=classifier,\n description='classifier_export',\n assetId=asset_id\n)\n\n# Load the classifier after the export finishes and visualize.\nsavedClassifier = ee.Classifier.load(asset_id)\nlandcover_palette = [\n '05450a', '086a10', '54a708', '78d203', '009900',\n 'c6b044', 'dcd159', 'dade48', 'fbff13', 'b6ff05',\n '27ff87', 'c24f44', 'a5a5a5', 'ff6d4c', '69fff8',\n 'f9ffa4', '1c0dff']\nlandcoverVisualization = {\n 'palette': landcover_palette,\n 'min': 0,\n 'max': 16,\n 'format': 'png'\n}\nMap.addLayer(\n landsatComposite.classify(savedClassifier),\n landcoverVisualization,\n 'Upsampled landcover, saved')\n```"]]