Php 如何按距离排列数据库结果?
我想根据到对象的距离对数据库中的结果进行排序。 我的对象和数据库项都有Php 如何按距离排列数据库结果?,php,mysql,cakephp,geolocation,distance,Php,Mysql,Cakephp,Geolocation,Distance,我想根据到对象的距离对数据库中的结果进行排序。 我的对象和数据库项都有lat和lng,我可以使用haversine计算距离 问题是它们需要根据与数据库的距离来选择。我无法取出整个数据库,进行计算,然后得到我需要的结果,因为。。。每次我这么做,小猫都会死 有些人建议把哈弗森公式放到顺序中。怎样 很多小猫会死吗 有些人建议使用某种空间插件。他们是干什么的?我应该用哪一个 另一个看起来很难看的替代方案是,你手动走一段距离,然后通过排除lat和lng中的所有大小来做一个正方形。如果没有足够的结果,或者
lat
和lng
,我可以使用haversine计算距离
问题是它们需要根据与数据库的距离来选择。我无法取出整个数据库,进行计算,然后得到我需要的结果,因为。。。每次我这么做,小猫都会死
- 有些人建议把哈弗森公式放到
顺序中。怎样 很多小猫会死吗
- 有些人建议使用某种空间插件。他们是干什么的?我应该用哪一个
- 另一个看起来很难看的替代方案是,你手动走一段距离,然后通过排除
和lat
中的所有大小来做一个正方形。如果没有足够的结果,或者结果太多,请更正距离并再次运行查询lng
WHERE table.latitude BETWEEN $latmin AND $latmax
AND table.longitude BETWEEN $lonmin AND $lonmax
ORDER BY haversine(....)
HAVING haversine(...) < $your_desired_distance
WHERE table.latitude在$latmin和$latmax之间
和table.longmin之间的经度
哈弗森订购(……)
有哈弗森(…)<$你想要的距离
这仍然是一项繁重的任务,但您将使用非常简单/轻量级的
WHERE
过滤器消除任何“明显”超出范围的候选项,因此您将在所有可能记录的一小部分(呃?)上进行实际距离计算。您可以使用四键。这是一个使用空间填充曲线的空间索引。这不是一个精确解,但速度非常快,你可以自由使用哈弗森公式。您可以下载我的php类hilbert-curve@phpclasses.org。它还使用墨卡托投影。您可以发布表格的结构吗?也许有一些样本数据?提示:请查看