gpt4 book ai didi

sql - Postgis计算点与点之间的距离

转载 作者:行者123 更新时间:2023-11-29 14:18:08 24 4
gpt4 key购买 nike

我有一个超过 15k 行的表。

该表有locationID、isEmpty、经度和纬度字段。

我想计算具有 isEmpty 字段 = 1 的每个点与其他点之间的距离,并使用 Postgis 将结果插入到新表中。

请告知编写执行此需求的sql语句的最佳实践是什么

最佳答案

好的,感谢您的解释 - 现在更清楚了。

在 Postgis 中,您不必计算所有距离即可找到某个距离内有多少其他点。

  1. 为数据库添加扩展

    CREATE EXTENSION postgis;
  2. 现在添加一列几何类型

    ALTER TABLE mytable ADD COLUMN geom geometry;
  3. 你需要一些索引

    CREATE INDEX mytable_geom_idx ON mytable USING gist(geom);
  4. 现在填充新列

    UPDATE mytable SET geom = ST_SetSRID(ST_MakePoint(lon, lat),4326);
  5. 现在查询:

    Select a.locationID, count(*)
    from mytable a
    join mytable b on a.locationID!=b.locationID
    and ST_Dwithin(a.geom::geography,b.geom::geography,152)
    where a.isEmpty=1
    group by 1;

ST_DWithin 地理类型以米和 152m~500ft 为单位

我没有测试过,所以如果有什么不对,请给我留言

关于sql - Postgis计算点与点之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40854516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com