我正在尝试查找在另一个用户(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);
我想要做的是建立一个查询,该查询将使我们能够从用户中查找R内的用户(例如1323)。我发现也许使用可能有效,但我无法弄清楚。
SELECT ST_DWithin(location)
任何帮助将不胜感激。我认为这种类型的过程必须可行,因为这几乎是所有约会应用程序的功能。
预先感谢
答案 0 :(得分:0)
设法弄清楚
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 ;
答案 1 :(得分:-1)
我认为您需要这种情况。如果您查看ST_DistanceSphere
,可能会找到更多示例.... where ROUND(ST_DistanceSphere(geom_R, geom_X )) > (limit in metres) ;