показать результаты в радиусе точки - PullRequest
0 голосов
/ 30 марта 2019

Привет снова с другой проблемой LOL, у меня есть таблица с несколькими столбцами;2 из которых широта и долгота и другие типы преступлений, что мне нужно сделать, это выяснить, сколько преступлений было совершено в пределах x метров от определенной точки

, что мне нужно, чтобы найти суммупреступления, которые произошли в 250 м, 500 м и 1 км от E: 307998 м, N: 188746 м. Эта точка

была бы признательна за помощь или даже просто толчок в правильном направлении благодаря

1 Ответ

0 голосов
/ 31 марта 2019

Какой интересный вопрос. Следующее может помочь.

Вы можете использовать теорему Пифагора для вычисления расстояния от точки (в данном случае [100,100]) и любого инцидента, а затем подсчитать общее количество, если оно меньше порога и правильного типа.

 # select * from test;
┌─────┬─────┬──────┐
│  x  │  y  │ type │
├─────┼─────┼──────┤
│ 100 │ 100 │    1 │
│ 104 │ 100 │    1 │
│ 110 │ 100 │    1 │
│ 110 │ 102 │    1 │
│  50 │ 102 │    2 │
│  50 │ 150 │    2 │
│  50 │ 152 │    3 │
│ 150 │ 152 │    1 │
│  40 │ 152 │    1 │
│ 150 │ 150 │    2 │
└─────┴─────┴──────┘
(10 rows)
 select count(*) from test where sqrt((x-100)*(x-100)+(y-100)*(y-100))<30 and type = 1;
┌───────┐
│ count │
├───────┤
│     4 │
└───────┘
(1 row)





...