возвращать записи по kNN используя lon / lan в postgis - PullRequest
0 голосов
/ 10 мая 2018

У меня есть три столбца в моем отчете таблицы Postgres с именем место, широта и долгота, и я хочу получить для каждого места все записи в определенной области (10 м) в соответствии с ST_DWidthin lan / lon, т.е.

место | place_in_range
area1 | 20м
площадь2 | 100м
и т. Д. на.

Я пытался начать с чего-то вроде этого:

SELECT ST_Distance(ST_MakePoint(SELECT r.latitude, r.longitude FROM report r), 10);

Но я новичок в PostGIS и не знаю, как этого добиться. Может кто-нибудь помочь?

1 Ответ

0 голосов
/ 10 мая 2018

Вы можете попробовать что-то вроде:

SELECT a.place, b.place
FROM report a, report b
where ST_DWithin(
        ST_MakePoint(a.lon, a.lat),  
        ST_MakePoint(b.lon, b.lat),
        10)
and a.place <> b.place;

В результате два места в каждом ряду имеют расстояние между ними меньше 10.

...