# Good explanation for eps (distance) parameter in ST_ClusterDBSCAN

PostGIS documentation is horrible. I've read an entry for ST_ClusterDBSCAN multiple times, I've even tried in real world scenario. However I still got the feeling that I misunderstand `eps` parameter.

For example I've seen people using values as small as 0.1 in there. Doesn't that stand for like 10 santimetres? From the standpoint of my current understanding that doesn't make any sense, does it? How can, for example, 10 sm be a decent distance to cluster villages by? How can there be more than 1 village in such clusters?

Also bigger I make `eps` slower the query runs and it's another thing that doesn't make sense for me. Why would that be a case?

And the last `eps` related question is caused by the following quote:

An input geometry will be added to a cluster if it is either:

A "core" geometry, that is within eps distance of at least minpoints input geometries (including itself) or

A "border" geometry, that is within eps distance of a core geometry.

What's core geometry? Or what's border geometry? Since `eps` is taken into account depending on the type of geometry.

• Likely eps is distance in the units of the coordinate system.
– Bera
Commented Apr 10, 2020 at 12:17

A quick explanation:

• The value passed to `ST_ClusterDBSCAN` as `eps` is referenced in units of the underlying CRS of the `geometry` parameter! This can be any planar unit of length (e.g. meter, feet) if the geometry is projected, or degree if it is defined with a geographical reference system. Given these units as example, an `eps = 0.1` can be anything between 11km (degrees at the equator) and 1.2in (feet).

• A core geometry has to have `min_points` geometries within `eps` distance; with `min_points = 10` and `eps = 0.1`, a geometry is considered a core geometry if there are 9 or more geometries that are less than 0.1 units away from it (`min_points` include the given geometry).

• A border geometry needs to be within `eps` distance of a core geometry to become part of the same cluster as that core geometry. Since it is possible for a geometry to be a border geometry of multiple, distinct clusters (defined by different core geometries in its vicinity), an assignment is ambiguous and, in PostGIS, will be chosen at random.

• The larger the `eps` distance, the more candidates per given geometry have to be checked (distance measured), thus more computational time needs to be spent per geometry, thus more overall execution time.

A thorough explanation:

• So basically in the example that I linked the guy was using degrees rather than metres. And that's why he got some meaningful clustering? Commented Apr 10, 2020 at 12:34
• Wait wait... or do you mean eps of 0.1 can vary depending on where on the earth it is being measured?? Coordinates in my DB are in UTM. How would I come up with a meaningful value for eps then? Commented Apr 10, 2020 at 12:37
• Kinda, yes. That example definitely doesn't use meter as unit, but degree as unit of measurement is indeed rather meaningless, and would have a significant impact on the clustering results if your geometries span some 30 degrees in latitude; it serves well in terms of spatial relation, but a degree of longitude represents different metric surface lengths at different latitudes. And without the coordinate context, a degree measure is worthless. However, since you are using UTM, the `eps` unit is meter, so you are save to assume a meaningful value based on metric units. Commented Apr 10, 2020 at 12:46
• So, just to confirm, eps in UTM is meter, no matter where on Earth clustering is applied? Commented Apr 10, 2020 at 13:15
• Technically yes, but keep in mind that the accuracy of the geometric projection of UTM is bound to the UTM Zone! Commented Apr 10, 2020 at 14:18