Създаването на буфер за намиране на точките е определено не-не поради (1) допълнителните разходи за създаване на геометрията, която представлява буфера, и (2) изчислението точка в многоъгълник е много по-малко ефективно от простото изчисляване на разстояние.
Очевидно работите с данни (дължина, ширина), така че трябва да ги преобразувате в подходяща декартова координатна система, която има същата мерна единица като вашето разстояние от 10 000. Ако това разстояние е в метри, тогава можете също да прехвърлите точката от таблицата към geography
и изчислете директно върху координатите (дължина, ширина). Тъй като искате да идентифицирате само точките, които са в рамките на определеното разстояние, можете да използвате ST_DWithin()
функция
с изчисление върху сферата за допълнителна скорост (не правете това, когато сте на много големи географски ширини или на много големи разстояния):
SELECT id, point
FROM my_table
WHERE ST_DWithin(point::geography,
ST_GeogFromText('POINT(-116.768347 33.911404)'),
10000, false);