SQL 经纬度范围内的经纬度

SQL lat longs within lat long bounds

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

我有两个 SQL tables:

第一个 table 包含 "Areas"。每个区域由 ID、NE Lat、NE Long、SW Lat、SW Long 组成。

第二个 table 包含 "Points"。每个Point由ID、Lat、Long组成。

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

注意:我可以将区域更改为具有半径的单个经纬度,其中点位于 'circles' 内。但理想情况下,我不想这样做,除非有更有效的 SQL 语句来解决这种问题。

根据点位置在区域范围内的条件连接两个表。

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

只需将@s 替换为您喜欢的区域经纬度值即可。