You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于当前经纬度与2公里半径获取最大经纬度的技术问询

基于中心点经纬度与半径筛选范围内地点的SQL实现

嘿,这里有个实用的SQL方案,能帮你基于给定的中心点经纬度和2单位半径(注意看下面的单位说明),筛选出该范围内的地点,还会计算每个地点到中心点的距离并按距离排序:

SELECT id, LATITUDE, LONGITUDE, distance 
FROM ( 
    SELECT a.hosp_seq_id, LATITUDE, LONGITUDE, 
        (3959 * ACOS(COS(RADIANS(LATITUDE)) * COS(RADIANS(mylat)) * COS(RADIANS(LONGITUDE) - RADIANS(mylng)) + SIN(RADIANS(LATITUDE)) * SIN(RADIANS(mylat)) )) AS distance, 
        b.mydst 
    FROM app.tpa_hosp_info a 
    JOIN ( 
        SELECT 12.561 AS mylat, 77.48 AS mylng, 2 AS mydst FROM DUAL 
    )b ON (1 = 1) 
    WHERE LATITUDE >= mylat -(mydst/69) 
      AND LATITUDE <= mylat +(mydst/69) 
      AND LONGITUDE >= mylng -(mydst/(69 * COS(RADIANS(mylat)))) 
      AND LONGITUDE <= mylng +(mydst/(69 * COS(RADIANS(mylat)))) 
)a 
WHERE distance <= mydst 
ORDER BY distance

关键细节说明:

  • 预过滤优化:内层WHERE子句先通过经纬度范围缩小查询范围,避免对全表计算距离,大幅提升查询效率。这里的69是1纬度对应的英里数,如果你需要用公里作为单位,得把69换成111(1纬度≈111公里),同时把距离计算里的3959(地球半径英里数)换成6371(地球半径公里数)。
  • 距离计算逻辑:采用Haversine公式计算球面距离,能准确适配地球曲面的距离测算需求。
  • 自定义参数:你只需修改子查询b里的mylat(中心点纬度)、mylng(中心点经度)和mydst(半径数值),就能快速适配自己的业务场景。
  • 排序逻辑:最终结果按距离从小到大排序,方便你优先查看离中心点最近的地点。

内容的提问来源于stack exchange,提问作者PRADHAN GOWDA MJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:51:29