有A、B两批名称及经纬度数据(每个名称对应一个经纬度)
A是B的子集,A集有873个点,B集大概是1万3千个点
目的是想以A集的点为中心(遍历A集的点)
查出A集任一点半径1公里内或1.5公里内是否存在B集里的点、存在多少个以及存在哪几个(B集的名称)
要求能批量得出A集所有点的结果,预期结果如下图:
希望能同过sql、mysql或java的方式实现,求助!谢谢
有A、B两批名称及经纬度数据(每个名称对应一个经纬度)
A是B的子集,A集有873个点,B集大概是1万3千个点
目的是想以A集的点为中心(遍历A集的点)
查出A集任一点半径1公里内或1.5公里内是否存在B集里的点、存在多少个以及存在哪几个(B集的名称)
要求能批量得出A集所有点的结果,预期结果如下图:
希望能同过sql、mysql或java的方式实现,求助!谢谢
最简单的搞法,通过A点和距离,反推出经纬度范围,
比如A点是100.xxxx,40.xxxx, 反推方圆1公里的经度范围是95.xxxx---105.xxxxx,
纬度范围是35.xxxx----45.xxxxx, 然后循环如下:
for(A点集合){
select count(*), group_concat(B的name) from B集合 where 经度>=95.xxxx and 经度<=105.xxxx and 纬度>=35.xxxx and 纬度<=45.xxxxx ;
}
反推经纬度范围的方法可以优化一下,在A的基础上加减一个偏移量是矩形范围,不是圆型范围,我只是简单打个比方