ArcGIS REST API

Train Classifier

Description

Train Classifier diagram

The Train Classifier task is a service to train image classifiers and return an .ecs file in JSON. The .ecs file is used in the Classify task.

Request parameters

ParameterDetails
inputRaster

(Required)

The complete JSON rft (uri or by value), the complete XML rft (uri or value), portal item ID, image service URL, cloud raster dataset, or shared raster dataset that will be used for training. If multiple inputs are given, the itemId takes priority.

Syntax: A string describes the input raster

Input raster

Example:

{"itemId": <portal item id>}
{"url": <image service url}
{"serviceProperties":{"name":"testrasteranalysis",
  "serviceUrl":"https://<server name>/server/rest/services/Hosted/testrasteranalysis/ImageServer"},
  "itemProperties":{"itemId":"8cfbd3ec25584d0d8f4ed23b8ff7c43b", "folderId", "sdfwerfbd3ec25584d0d8f4",: }}

Raster dataset example

{
  "rasterFunction":"ExtractBand",
  "rasterFunctionArguments":{
    "BandIDs":[1,2,4],
    "Raster": <image service url>
  }
}

inputTrainingSampleJSON

(Required)

This is the JSON representation of the training samples. Its format is the same as the JSON converted from a training shapefile that was saved out by the ArcMap image classification toolbar.

Syntax: JSON object describes the training samples.

{
   "displayFieldName": "",
   "fieldAliases":{
      "FID":"FID",
      "Classname":"Classname",
      "Classvalue":"Classvalue",
      "RED":"RED",
      "GREEN":"GREEN", 
      "BLUE":"BLUE",
      "Count":"Count"
   },
   "geometryType":"esriGeometryPolygon",
   "spatialReference":{
      "wkid":102719,
      "latestWkid":2264
   },
   "fields":[
     {
       "name":"FID",
       "type":"esriFieldTypeOID",
       "alias":"FID"
     },
     {
       "name":"Classname",
       "type":"esriFieldTypeString",
       "alias":"Classname",
       "length":254
     },
     {
       "name":"Classvalue",
       "type":"esriFieldTypeInteger",
       "alias":"Classvalue"
     },
     {
       "name":"RED",
       "type":"esriFieldTypeInteger",
       "alias":"RED"
     },
     {
       "name":"GREEN",
       "type":"esriFieldTypeInteger",
       "alias":"GREEN"
     },
     {
       "name":"BLUE",
       "type":"esriFieldTypeInteger",
       "alias":"BLUE",
     },
     {
       "name":"Count",
       "type":"esriFieldTypeInteger",
       "alias":"Count"
     }
  ],
  "features":[  ]
}

classifierParameters

(Required)

The classifier algorithm and parameters used in the supervised training.

Random trees example

{
  "method":"rt",
  "params": {
    "maxNumTrees":50,
    "maxTreeDepth":30,
    "maxSampleClass":1000
  }
}

Support vector machine example

{
  "method":"svm",
  "params":{"maxSampleClass":1000}
}

Maximum likelihood example

{"method":"mlc"}

segmentedRaster

(Optional)

The complete JSON rft (uri or by value), the complete XML rft (uri or by value), portal item ID, image service URL, cloud raster dataset, or shared raster dataset that will be used for training as the segmented raster input. If multiple inputs are given, itemId takes priority.

Syntax: A string describes the input raster.

Input raster

Example:

{"itemId": <portal item id>}
{"url": <image service url}
{"serviceProperties":{"name":"testrasteranalysis",
  "serviceUrl":"https://<server name>/server/rest/services/Hosted/testrasteranalysis/ImageServer"},
  "itemProperties":{"itemId":"8cfbd3ec25584d0d8f4ed23b8ff7c43b", "folderId", "sdfwerfbd3ec25584d0d8f4",: }}

Raster dataset example

{
  "rasterFunction": "SegmentMeanShift",
  "rasterFunctionArguments": {
     "SpectralDetail": 15.5,
     "SpatialDetail": 15,
     "MinNumPixelPerSegment": 20,
     "Raster": <image service url>
  }
}

segmentAttributes

(Required)

The string of segment attributes used in the training (separated by semicolon). It is the permutation of the following attributes: COLOR; MEAN; STD; COUNT; COMPACTNESS; RECTANGULARITY.

Response

When you submit a request, the task assigns a unique job ID for the transaction.

Syntax:

{
"jobId": "<unique job identifier>",
"jobStatus": "<job status>"
}

After the initial request is submitted, you can use the jobId to periodically check the status of the job and messages as described in Checking job status. Once the job has successfully completed, you use the jobId to retrieve the results. To track the status, you can make a request of the following form:

https://<raster analysis tools url>/TrainClassifier/jobs/<jobId>

When the status of the job request is esriJobSucceeded, you can access the results of the analysis by making a request of the following form:

https://<raster analysis tools url>/TrainClassifier/jobs/<jobId>/results/output_Classifier_Definition

The ecd is the value property of the resulting JSON.

Example usage

The following is a sample request URL for TrainClassifier:

https://services.myserver.com/arcgis/rest/services/System/RasterAnalysisTools/GPServer/TrainClassifier/submitJob