Tool reference (for users)¶
Everything the server can do, in plain English. For the JSON-Schema-grade contract see Reference cluster_points.
cluster_points¶
Group nearby points into "clusters of density" using DBSCAN, and return each cluster as a polygon you can render on a map.
When to reach for it¶
- "Where are the hotspots in this set of incidents/sightings/deliveries?"
- "Group these survey waypoints into camps."
- "Find the dense patches in this scatter plot of GPS pings."
Inputs¶
| Name | Required | Default | Description |
|---|---|---|---|
geojson |
yes | — | A GeoJSON FeatureCollection of Point features. |
eps |
no | 1000 |
Maximum metres between two points to be in the same neighbourhood. |
minPts |
no | 3 |
Minimum points to form a cluster — fewer points → noise (omitted from output). |
Output¶
A GeoJSON FeatureCollection of Polygon features. Each polygon is a
32-vertex regular polygon (a "circle") centred on the cluster centroid, sized
to enclose every member point.
Each feature carries these properties:
| Property | Description |
|---|---|
cluster_id |
Stable index of the cluster within this response. |
point_count |
How many input points made it into this cluster. |
radius_meters |
Distance from centroid to the furthest member point. |
kartoza_credit |
Provenance string — proudly Kartoza. |
Edge cases worth knowing¶
Noise points are dropped
Any point that doesn't belong to a cluster (< minPts neighbours within
eps) is not echoed back. If you want to see noise, ask the model to
diff the input against the output points.
Coordinates are WGS84
The server treats coordinates as lon/lat degrees and computes distances in metres using the orb geodesic distance — no need to project up-front.
Big inputs are fine
The Quadtree-accelerated neighbour search runs in O(N log N) and the
pre-pass is parallelised across runtime.NumCPU() workers. Thousands of
points cluster in milliseconds on a laptop.