【问题标题】:Use ST_DWithin to query pairs of geometry points within 400 miles in a PostgreSQL table使用 ST_DWithin 查询 PostgreSQL 表中 400 英里内的几何点对
【发布时间】:2020-10-07 11:35:30
【问题描述】:

我在 Postgres 中有一个名为 h2combines 的表,它有两个点几何字段:geom1 和 geom2,以及其他一些字段。我想选择 geom1 和 gemo2 400 英里的所有记录。我试过这个:

SELECT * from h2combines WHERE ST_DWithin(geom1, geom2, 643738);  

但是,它返回了所有行。似乎我在这里误解了一些东西。 谢谢!

【问题讨论】:

  • 几何图形的 EPSG(SRID) 是什么?如果是 4326,您将不得不像 Jim Jones 向您展示的那样转换为地理,或者转换为 SRID=3857,例如st_transform(geom1, 3857).

标签: postgresql geometry cursor gis postgis


【解决方案1】:

欢迎来到 SO。

要获得以米/英里为单位的距离,您必须将几何图形转换为 geography,例如

SELECT * FROM h2combines 
WHERE ST_DWithin(geom1::geography, geom2::geography, 643737.6);

请记住,使用 GEOMETRYGEOGRAPHY 的计算方式不同,结果也不同。 GEOGRAPHY 计算球面上的坐标(可能比 GEOMETRY 慢得多)并使用米作为测量单位,而GEOMETRY 使用平面投影并使用 SRS 单位。

【讨论】:

    猜你喜欢
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 2019-02-23
    • 1970-01-01
    相关资源
    最近更新 更多