我想计算结果中所有地理位置之间的距离(表示为纬度和经度)
MySQL表如下所示:
输出应该是从位置1到位置2的距离,以及位置2和位置3之间的距离,等等。
我知道如何计算两个位置之间的距离,但我不知道如何总结距离以及如何总是计算两个连续位置/行之间的距离
感谢您的帮助!
编辑:我打算使用以下函数计算两个位置之间的距离
CREATE FUNCTION `GeoDistance`(
latitude1 numeric (9,6),
longitude1 numeric (9,6),
latitude2 numeric (9,6),
longitude2 numeric (9,6)
) RETURNS decimal(10,5)
READS SQL DATA
BEGIN
DECLARE x decimal (20,20);
DECLARE pi decimal (21,20);
SET pi = 3.14159265358979323846;
SET x = sin( lat1 * pi/180 ) * sin( lat2 * pi/180 )
+ cos( lat1 * pi/180 ) * cos( lat2 * pi/180 )
* cos( abs( (lon2 * pi/180) - (lon1 *pi/180)));
SET x = acos( x );
RETURN ( 1.852 * 60.0 * ((x/pi)*180) );
END
答案 0 :(得分:2)
假设该表为LOCATIONS (ID, LAT, LON)
,为简化起见:
SELECT SUM(SQRT(POW(A.LAT - B.LAT, 2)+POW(A.LON - B.LON, 2)))
FROM LOCATIONS A
JOIN LOCATIONS B ON (A.ID = B.ID - 1)
基本上,我们自己连接位置,位置之间的偏移量为1(我可以自由地假设ID没有间隙),然后对于每对点我们计算距离(公式非常简单,由谷歌详细解释,然后总结所有这些距离。