如果你有一个中心(center_x, center_y)和半径的圆radius,你如何测试一个带坐标的给定点(x, y)是否在圆内?
我已经阅读了关于这个主题的几个问题+答案,但我不明白哪种是找到具有一定半径的“圆”内的所有点的常用方法(如果有的话......),以给定点为中心。
我特别发现了两种似乎最有说服力的方法:
select id, point
from my_table
where st_Distance(point, st_PointFromText('POINT(-116.768347 33.911404)', 4326)) < 10000;
Run Code Online (Sandbox Code Playgroud)
和:
select id, point
from my_table
where st_Within(point, st_Buffer(st_PointFromText('POINT(-116.768347 33.911404)', 4326), 10000));
Run Code Online (Sandbox Code Playgroud)
查询数据库最有效的方法是什么?还有其他选择可以考虑吗?