ArcGIS REST API

Find Point Clusters

Find Point Clusters

The Find Point Clusters task finds clusters of point features within surrounding noise based on their spatial distribution.

This task uses unsupervised machine learning clustering algorithms to detect patterns of point features based purely on spatial location and, optionally, the distance to a specified number of features.

The result map shows each cluster identified as well as features considered noise. Multiple clusters will be assigned each color. Colors will be assigned and repeated so that each cluster is visually distinct from its neighboring clusters.

This task utilizes two related algorithms. By default the HDBSCAN algorithm is used to find clusters. If a searchDistance is specified, the DBSCAN algorithm is used. DBSCAN is only appropriate if there is a very clear search distance to use for your analysis and will return clusters with similar densities. When no searchDistance is specified, HDBSCAN will use a range of distances to separate clusters of varying densities from sparser noise resulting in more data-driven clusters.

Request URL

http://<analysis url>/FindPointClusters/submitJob

Request Parameters

ParameterDescription

analysisLayer

(Required)

The point feature layer for which clusters will be found.

Syntax: As described in detail in the Feature Input topic, this parameter can be

  • a URL to a feature service layer with an optional filter to select specific features, or
  • a feature collection.

Examples:

  • {"url": <feature service layer url>, "filter": <where clause>}
  • {"layerDefinition": {}, "featureSet": {}, "filter": <where clause>}

minFeaturesCluster

A double value to use as the minimum number features to be considered a cluster. Any cluster with fewer features than the number provided will be considered noise.

Example: "minFeaturesCluster": "5"

searchDistance

A double value to use as the maximum distance to search for neighboring features.

The units of the search distance value is supplied by the searchDistanceUnit parameter.

Example: "searchDistance": "154"

searchDistanceUnit

The linear unit to be used with the distance value specified for searchDistance. You must provide a value if searchDistance has been set.

Values: Feet | Miles | Meters | Kilometers

The default is Miles

Example: "Units": "Kilometers"

OutputName

If provided, the task will create a feature service of the results. You define the name of the service. If outputName is not supplied, the task will return a feature collection.

Syntax:
{
  "serviceProperties": {
    "name": "<service name>"
  }
}

Context

Context contains additional settings that affect task execution. For Find Point Clusters, there are two settings.

  1. Extent (extent)—a bounding box that defines the analysis area. Only those features in the input layer that intersect the bounding box will be buffered.
  2. Output Spatial Reference (outSR)—the output features will be projected into the output spatial reference.

Syntax:

{
"extent" : {extent}
"outSR" : {spatial reference}
}

f

The response format. The default response format is html.

Values: html | json | kmz

Response

When you submit a request, the service 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 the topic 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:

http://<analysis url>/FindPointClusters/jobs/<jobId>

Accessing results

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

http://<analysis url>/FindPointClusters/jobs/<jobId>/results/pointClustersResultLayer?token=<your token>&f=json

ParameterDescription

pointClustersResultLayer

The result of Find Point Clusters is a layer containing clustered points.

Example:

Example:
{"url": 
"http://analysis.arcgis.com/arcgis/rest/services/tasks/gpserver/findpointclusters/jobs/<jobId>/results/pointClustersResultLayer

The result has properties for parameter name, data type, and value. The contents of value depends upon the OutputName parameter provided in the initial request.

  • If OutputName was provided, value contains the url to the feature service layer.

    {
    "paramName":"pointClustersResultLayer", 
    "dataType":"GPString",
    "value":{"url":"<arcgis featureservice layer url>"}
    }
    {
    "paramName":"watershedLayer", 
    "dataType":"GPString",
    "value":{"url":"<hosted featureservice layer url>"}
    }

  • If OutputName was not provided, value contains a feature collection.

    {
    "paramName":"pointClustersResultLayer",
    "dataType":"GPString",
    "value":{"featureCollection": ... }
    }

See Feature Output for more information about how the result layer or collection is accessed.