PostgreSQL经度查询?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (38)

我有latitudelongitudelocation表在PostgreSQL数据库中,我试图使用PostgreSQL函数执行距离查询。

我读了手册的这一章:

https://www.postgresql.org/docs/current/static/earthdistance.html

我该怎么做?还有更多的例子吗?

提问于
用户回答回答于

此模块是可选的,未安装在默认PostgreSQL分期付款中。您必须从contrib目录安装它。

您可以使用以下函数计算坐标之间的近似距离(以英里为单位):

 CREATE OR REPLACE FUNCTION distance(lat1 FLOAT, lon1 FLOAT, lat2 FLOAT, lon2 FLOAT) RETURNS FLOAT AS $$
DECLARE                                                   
    x float = 69.1 * (lat2 - lat1);                           
    y float = 69.1 * (lon2 - lon1) * cos(lat1 / 57.3);        
BEGIN                                                     
    RETURN sqrt(x * x + y * y);                               
END  
$$ LANGUAGE plpgsql;
用户回答回答于

下面是使用Point运算符的一个示例:

create extension cube;
create extension earthdistance;
select (point(-0.1277,51.5073) <@> point(-74.006,40.7144)) as distance;

     distance     
------------------
 3461.10547602474
(1 row)

扫码关注云+社区