在 mysql 中通过 lat lng 获取 10 公里以内的记录
Get record within 10km by lat lng in mysql
抱歉之前没有处理过GPS数据。可能是新手问题
所以,我创建了 table 来存储 gps 数据,如下所示:
table name : request
id
lat decimal(10,8)
lng decimal(11,8)
最近,我想获取给定GPS点内10公里范围内的数据。
e.g. Given GPS lat: 22, lng: 114 , found all data within 10km
而且我发现有一种数据类型叫做"point"。还有一个 SQL 查询相关
SELECT *
FROM request
WHERE MBRContains
(
LineString
(
Point (
@lng + 10 / ( 111.1 / COS(RADIANS(@lat))),
@lat + 10 / 111.1
),
Point (
@lng - 10 / ( 111.1 / COS(RADIANS(@lat))),
@lat - 10 / 111.1
)
),
POINTFROMTEXT('POINT(22 114)')
)
它 return 0 结果,即使应该有一些结果,例如。我有一些记录,lat 是 22.1 , 114.1 。如何解决?谢谢
我会参考这个问题,它作为重复项关闭,但重复项列表让您对问题集和解决方案有一个很好的概述。
Radius of 40 kilometers using latitude and longitude
抱歉之前没有处理过GPS数据。可能是新手问题
所以,我创建了 table 来存储 gps 数据,如下所示:
table name : request
id
lat decimal(10,8)
lng decimal(11,8)
最近,我想获取给定GPS点内10公里范围内的数据。
e.g. Given GPS lat: 22, lng: 114 , found all data within 10km
而且我发现有一种数据类型叫做"point"。还有一个 SQL 查询相关
SELECT *
FROM request
WHERE MBRContains
(
LineString
(
Point (
@lng + 10 / ( 111.1 / COS(RADIANS(@lat))),
@lat + 10 / 111.1
),
Point (
@lng - 10 / ( 111.1 / COS(RADIANS(@lat))),
@lat - 10 / 111.1
)
),
POINTFROMTEXT('POINT(22 114)')
)
它 return 0 结果,即使应该有一些结果,例如。我有一些记录,lat 是 22.1 , 114.1 。如何解决?谢谢
我会参考这个问题,它作为重复项关闭,但重复项列表让您对问题集和解决方案有一个很好的概述。
Radius of 40 kilometers using latitude and longitude