通过 SQL/PHP 回显计算的距离

Posted

技术标签:

【中文标题】通过 SQL/PHP 回显计算的距离【英文标题】:Echoing out Calculated Distance Via SQL/PHP 【发布时间】:2013-07-22 18:00:11 【问题描述】:

我从谷歌获得了一些代码来帮助我计算 mysql 中两个对象之间的距离,并且它们也可以按照计算出的距离正确排序...

这里有一段代码来帮助解释我是如何做到的:

    $EQUASION = '( 6371 * acos( cos( radians('.$GPSLAT.') )
* cos( radians( field_Latitude ) ) * cos( radians( field_Longitude )
- radians('.$GPSLONG.') ) + sin( radians('.$GPSLAT.') )
* sin( radians( field_Latitude )) ) )
AS distance ';

我的问题是,我如何使用和回显距离本身......

while($row = mysql_fetch_array($results))echo $row['distance']

简单地呼应“行距离”似乎不起作用,因为它实际上不是数据库中的一个字段,而是一个计算出的距离。如何访问此信息,以便正确显示“您距离某某物体##Km”之类的信息

【问题讨论】:

请显示您的查询 回声部分应该可以工作。这里似乎没有什么问题。查询是否正常工作? 查询的SELECT子句中的任何内容都将放在$row中,无论是表中的字段还是查询计算的内容。 我知道这很奇怪,查询返回很好,并且在我的查询编辑器中排序很好。但是在回显该行时它总是返回空白,我将不得不检查我的文件,因为它会降低查询和回显之间的距离......我整晚都在 mysql 中查找“AS”引用昨晚。我将提供更多详细信息,因为我可以为你们收集它们。不幸的是,我的 Query Builder php 文件超过 50k,所以我无法发布整个文件供你们查看。 【参考方案1】:

在实际循环本身的计算过程中使用 $row['distance'] AS 距离变量时,存在一个基本缺陷,导致计算返回 false。因此我从来没有得到任何回报。

我只是改变了

if ($row['distance'] != 0) else 

if ($row['distance'] > 0) else 

我开始得到结果。在这种情况下,由于它总是返回 false,因此在 if 之后的 else 语句中存在空白结果或任何触发变量擦除的情况。

我的错误是在一个非常大的文件中进行了简单的 typeo。

【讨论】:

以上是关于通过 SQL/PHP 回显计算的距离的主要内容,如果未能解决你的问题,请参考以下文章

如何通过计算像素来计算距离

如何计算和回显值

如何通过经纬度计算距离来优化 SQL 查询?

通过距离和摩擦计算速度

通过转换为 utm 计算纬度/经度距离与使用近似方法给出不同的结果

通过欧几里得距离(或任何其他距离计算技术)基于提取的 SIFT 描述符估计两幅图像的相似度得分