postgis ST_ClusterDBSCAN返回全零

时间:2017-10-23 13:30:42

标签: postgresql postgis

  • Windows 10
  • Postgres 9.4.11
  • Postgis 2.3.2

我只是在摆弄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 ......

1 个答案:

答案 0 :(得分:1)

在eps = 1000000的情况下,我可以想象地球上的所有点都属于同一簇号0。您提到您测试过eps的范围是1到10,000,000。 1°的纬度仍在111公里左右,因此您可能需要尝试使用0.01甚至更低的值。