有时,
ACOS()当距离很小时,to的参数可能只是略大于1(略微超出该函数的范围)。由于Vincenty,有更好的距离公式。它使用
ATAN2(y,x)函数而不是
ACOS()函数,因此在数值上更稳定。
就是这个。
DEGREES( ATAN2( SQRT( POW(COS(RADIANS(lat2))*SIN(RADIANS(lon2-lon1)),2) + POW(COS(RADIANS(lat1))*SIN(RADIANS(lat2)) - (SIN(RADIANS(lat1))*COS(RADIANS(lat2)) * COS(RADIANS(lon2-lon1))) ,2)), SIN(RADIANS(lat1))*SIN(RADIANS(lat2)) + COS(RADIANS(lat1))*COS(RADIANS(lat2))*COS(RADIANS(lon2-lon1))))
此函数以度为单位返回其结果。一个学位有111.045公里。60海里。69英里。因此,将结果乘以这些数字之一即可得出距离。有一个更完整的书面记录,包括存储的功能定义为MySQL,这里。
另一个解决方案是使用
ISNULL(ACOS(formula), 0.0)



