我只是在摆弄dbscan并创建了这个表:
CREATE TABLE dbscan
(
name text,
latitude numeric(14,11),
longitude numeric(14,11),
geo geography(Point,4326)
)
...用几个测试纬度/长度加载表并运行:
UPDATE dbscan
SET geo = ST_SetSRID(ST_MakePoint(longitude, latitude), 4326)::geography
集群:
SELECT name,
ST_ClusterDBSCAN(geo::geometry, eps := 1000000, minPoints := 2)
over(order by name)
FROM dbscan
并且我得到的唯一结果是集群ID为0。 (有趣的是它" 0"而不是" null")。我已经改变了" eps"参数在1到10,000,000的范围内,所以似乎不是这样。 ST_Distance工作正常,因此geo列没问题。也许Windows版本?我在SO上看到的大部分内容都是linux ......
答案 0 :(得分:1)
在eps = 1000000的情况下,我可以想象地球上的所有点都属于同一簇号0。您提到您测试过eps的范围是1到10,000,000。 1°的纬度仍在111公里左右,因此您可能需要尝试使用0.01甚至更低的值。