在距离其他用户 X 米的范围内查找用户..SQL



我正在尝试查找与另一个用户(X(在R米范围内的用户。我们将PostGIS与我们的SQL数据库一起使用。我能够使用以下查询从用户中提取长/拉特:

SELECT ST_AsText(location)
FROM api_devicelocation
JOIN api_device a ON api_devicelocation.device_id = a.id
JOIN auth_user au ON a.user_id = au.id
WHERE au.id IN (1323, 1332, 1391, 3887);

我想做的是构建一个查询,允许我们从用户(例如 1323(中找到 R 中的用户。我发现也许使用可能有效,但我无法弄清楚。

SELECT ST_DWithin(location)

任何帮助将不胜感激。我认为这种类型的过程必须有效,因为几乎所有约会应用程序都是这样运作的。

提前致谢

设法弄清楚了

SELECT ST_Distance(gg1, gg2) As spheroid_dist, ST_Distance(gg1, gg2, false) As sphere_dist
FROM (SELECT
ST_GeogFromText(st_astext(MAX(location))) As gg1,
ST_GeogFromText(st_astext(MIN(location))) As gg2
FROM api_devicelocation
JOIN api_device a ON api_devicelocation.device_id = a.id
JOIN auth_user au ON a.user_id = au.id
WHERE au.id = 1323
) As foo  ;

我认为你需要这个条件。如果您查找ST_DistanceSphere,您可能会找到更多示例

.... where ROUND(ST_DistanceSphere(geom_R, geom_X ))  >  (limit in metres) ;

最新更新