5

我需要知道如何使用适当的 SQL 标准在 MYSQL 中计算具有特定纬度和经度的所需半径或距离?我在互联网上找到了许多解决方案,但他们花费了很多时间来涉及 cos 和其他术语。请帮助!

4

2 回答 2

3

看看这个链接。这可能会对你有所帮助。

计算距离。

于 2013-01-14T10:29:44.987 回答
3

为了计算两个 GPS 点之间的距离,我使用了 MySQL 函数:

CREATE FUNCTION `distance`(lat1 FLOAT(10,7), lng1 FLOAT(10,7), lat2 FLOAT(10,7), lng2 FLOAT(10,7)) RETURNS FLOAT(20,2)
    RETURN ROUND(6371 * 2 * ASIN(SQRT( POWER(SIN((lat1 -ABS( lat2 )) * PI()/180 / 2),2) + COS(lat1 * PI()/180 ) * COS( ABS ( lat2 ) *  PI()/180) * POWER(SIN((lng1 - lng2) *  PI()/180 / 2), 2) )), 2);

然后很容易使用它:

SELECT
    distance( city1.latitude, city1.longtitude, city2.latitude, city2.longtitude) AS distanceKM
FROM
    city1, city2 ...

您可以在此处阅读如何将坐标转换为公里

注意: 6371是以公里为单位的地球半径,因此如果您需要以英里为单位的距离,则必须将其替换为3959

于 2013-01-14T10:37:09.607 回答