如果您的点彼此之间的距离在合理范围内(即,不在世界的一半范围内,也不在日期线之间),则可以对经度和纬度之间的差异进行校正(因为经度较短,除非在赤道处)
),然后像平地一样计算距离。
当您只想对值进行排序时,您甚至不必使用平方根,您只需添加差异的平方即可。
示例,其中
@lat和
@lng是您当前的位置,并且
2是差异校正:
select *from Pointsorder by (lat - @lat) * (lat - @lat) + ((lng - @lng) * 2) * ((lng - @lng) * 2)
您可以将特定纬度的差异校正计算为
1 / cos(lat)。
Cees Timmerman提出了这个公式,该公式也适用于日期范围:
pow(lat-lat2, 2) + pow(2 * min(abs(lon-lon2), 360 - abs(lon-lon2)), 2)



