首页 文章

SQL lat在lat long bounds内长

提问于
浏览
1

我正在使用MySQL 5.5.52 . 缩写:Lat =纬度,长=经度,NE =东北,SW =西南 .

我有两个SQL表:

第一个表包含“区域” . 每个区域由ID,NE Lat,NE Long,SW Lat,SW Long组成 .

第二个表包含“点” . 每个Point由ID,Lat,Long组成 .

我需要一个SQL语句,给定一个区域ID列表将返回这些区域中的点 . 如果Point的Lat-Long位于由Area的NE Lat-Long和SW Lat-Long定义的右上角和左下角的正方形内,则定义在Area中 .

注意:我可以将要定义的区域更改为具有半径的单个Lat-Long,其中Points位于'circles'内 . 但理想情况下我不想这样做,除非有更高效的SQL语句来解决这个问题 .

1 回答

  • 1

    根据点位置在区域范围内的条件加入两个表 .

    Select areaTable.*, pointsTable.*
    From pointsTable
    Join areaTable
    On pointTable.lat between areaTable.SWLat and areaTable.NELat
    and
    pointTable.long between areaTable.SWLong and areaTable.NELong
    

    给你每个区域和相应的点 .

    如果需要,使用特定区域的where子句进一步参数化 .

    Where areaTable.NELat=@areaNELat
    and areaTable.NELong=@areaNELong
    and areaTable.SWLat=@areaSWLat
    and areaTable.SWLong=@areaSWLong
    

    只需用你喜欢的区域lat和long值替换@s .

相关问题