kobechan81 2019-03-12 17:20 采纳率: 28.6%
浏览 443

sql或java代码编写问题,地理坐标换算

有A、B两批名称及经纬度数据(每个名称对应一个经纬度)
A是B的子集,A集有873个点,B集大概是1万3千个点
目的是想以A集的点为中心(遍历A集的点)
查出A集任一点半径1公里内或1.5公里内是否存在B集里的点、存在多少个以及存在哪几个(B集的名称)

要求能批量得出A集所有点的结果,预期结果如下图:
图片说明

希望能同过sql、mysql或java的方式实现,求助!谢谢

  • 写回答

3条回答 默认 最新

  • weixin_43833851 2019-03-12 18:09
    关注

    最简单的搞法,通过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的基础上加减一个偏移量是矩形范围,不是圆型范围,我只是简单打个比方

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置