显示结果在一个点的半径内

时间:2019-03-30 18:05:22

标签: sql ms-access radius

嗨,还有一个问题,大声笑,我有一张桌子,上面有几列; 2个纬度和经度以及其他类型是犯罪类型,我需要做的是确定从某个点开始在x米之内发生的犯罪数量

我需要确定的是此时距E:307998m,N:188746m 250m,500m和1km处的犯罪数量

帮助将不胜感激,甚至只是朝着正确方向前进 谢谢

1 个答案:

答案 0 :(得分:0)

一个有趣的问题。以下内容可能会有所帮助。

您可以使用毕达哥拉斯定理计算到某个点(在这种情况下为[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)