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