【问题标题】:postgis ST_ClusterDBSCAN returns all zerospostgis ST_ClusterDBSCAN 返回全零
【发布时间】:2018-10-26 21:14:25
【问题描述】:
  • 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”)。我已经在 1 到 10,000,000 的范围内更改了“eps”参数,所以这似乎不是。 ST_Distance 工作正常,所以地理列没问题。也许是Windows版本?我在 SO 上看到的大部分内容都是 linux...

【问题讨论】:

    标签: postgresql postgis


    【解决方案1】:

    当 eps=1000000 时,我可以想象地球上的所有点都属于同一个簇号 0。您提到您在 1 到 10,000,000 的范围内测试了 eps。 1° 的纬度仍然约为 111 公里,因此您可能需要尝试 0.01 甚至更低的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 2020-11-28
      • 2015-09-16
      • 1970-01-01
      相关资源
      最近更新 更多