显示一个点半径内的结果

问题描述 投票:-4回答:1

嗨,回到另一个问题哈哈,我有一个有几个列的表;其中2经纬度和其他是犯罪类型,我需要做的是弄清楚在一定数量的米数范围内犯了多少罪行

我需要的是找到距离E:307998m,N:188746m这一点250m,500m和1km的犯罪数量

帮助将被赞赏,甚至只是推动正确的方向谢谢

sql ms-access radius
1个回答
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)





© www.soinside.com 2019 - 2024. All rights reserved.