在postgresql中找到lat,lng最近的项目

时间:2017-12-03 14:32:52

标签: postgresql

我的表包含lat和lng列:

  

lng |双精度|不为空

     

lat |双精度|不为空

我想只检索位置(lat,lng)的结果。

我该怎么办?

2 个答案:

答案 0 :(得分:2)

这就是我解决它的方法:

select * , ( point(lat, lng) <-> point($lat, $lng) )*111.325 AS distance
order by distance

按距离增加的顺序得到结果,距离以公里为单位。

答案 1 :(得分:2)

更好的方法是,您可以借助postgis为地理空间查询创建单独的几何/地理列。

CREATE EXTENSION postgis;

ALTER TABLE your_table ADD COLUMN geom geometry(Point, 4326);

UPDATE your_table SET geom=st_SetSrid(st_MakePoint(lng, lat), 4326);

更新表后,您可以执行简单的最近邻居查询,如下所述。

SELECT name FROM your_table ORDER BY geom <-> ST_GeomFromText ('POINT(-49.2653819 -25.4244287 )', 4326);

将返回给定点的最近记录。