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 替换为您喜欢的区域经纬度值即可。
我正在使用 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 替换为您喜欢的区域经纬度值即可。