我目前在mysql数据库中的位置不到一百万个,都有经度和纬度信息.
我试图通过查询找到一个点和许多其他点之间的距离.它没有我想要的那么快,尤其是每秒100次点击.
是否有更快的查询或可能比mysql更快的系统?我正在使用此查询:
SELECT
name,
( 3959 * acos( cos( radians(42.290763) ) * cos( radians( locations.lat ) )
* cos( radians(locations.lng) - radians(-71.35368)) + sin(radians(42.290763))
* sin( radians(locations.lat)))) AS distance
FROM locations
WHERE active = 1
HAVING distance < 10
ORDER BY distance;
Run Code Online (Sandbox Code Playgroud)
注意:提供的距离以英里为单位.如果您需要公里数,请使用6371而不是3959.
我有一个工作的PHP脚本,它获取经度和纬度值,然后将它们输入到MySQL查询中.我想把它做成MySQL.这是我目前的PHP代码:
if ($distance != "Any" && $customer_zip != "") { //get the great circle distance
//get the origin zip code info
$zip_sql = "SELECT * FROM zip_code WHERE zip_code = '$customer_zip'";
$result = mysql_query($zip_sql);
$row = mysql_fetch_array($result);
$origin_lat = $row['lat'];
$origin_lon = $row['lon'];
//get the range
$lat_range = $distance/69.172;
$lon_range = abs($distance/(cos($details[0]) * 69.172));
$min_lat = number_format($origin_lat - $lat_range, "4", ".", "");
$max_lat = number_format($origin_lat + $lat_range, "4", ".", "");
$min_lon = number_format($origin_lon - $lon_range, "4", ".", "");
$max_lon = …Run Code Online (Sandbox Code Playgroud) 我创建了以下MySQL表来存储纬度/经度坐标以及每个点的名称:
CREATE TABLE `points` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(128) NOT NULL,
`location` point NOT NULL,
PRIMARY KEY (`id`),
SPATIAL KEY `location` (`location`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
Run Code Online (Sandbox Code Playgroud)
我试图查询:
我发现的所有示例都涉及使用最小边界矩形(MBR)而不是半径.该表包含大约100万个点,因此需要尽可能高效.
我正在构建REST API,在特定区域返回数据(比如说事件).REST URL是一个简单的GET
/api/v1/events?lat=<lat>&lng=<lng>&radius=<radius>.
Run Code Online (Sandbox Code Playgroud)
与参数lat,lng和radius(10英里默认情况下),纬度和经度是设备或浏览器的API什么回报.现在不用说,lat和lng随着用户移动而连续变化,并且两个用户可以是相同的附近,具有不同的lat/lng.在服务器上缓存此类请求的最佳方法是什么,这样我就不必每次都进入业务逻辑.自lat/lng更改后,URL不会是唯一的.
谢谢
我有一张桌子,其中有一POINT列包含各个位置的纬度和经度.
然后我还在浏览器中有一个来自地理位置的用户位置.
我需要做的是从表格中找到所有记录,其中的POINT值在半径10公里(或半径X公里)内,按距离最近的第一个排序.
我的表SPATIAL在POINT列上有一个索引.
mysql ×4
gis ×2
location ×2
spatial ×2
caching ×1
database ×1
geolocation ×1
geospatial ×1
great-circle ×1
http-caching ×1
php ×1
rest ×1