计算两个纬度/经度点之间的距离不一致
Posted
技术标签:
【中文标题】计算两个纬度/经度点之间的距离不一致【英文标题】:Inconsistency in Calculating Distance Between Two Lat/Long Points 【发布时间】:2015-03-26 20:22:47 【问题描述】:我在使用 SQL 咨询计算距离与 CLLocation
之间存在不一致。我怎样才能得到真正的距离?
使用此 Swift 代码的距离:334.599618308747 公里
var latitude = 19.395039;
var longitude = -99.156203;
var fromLocation = CLLocation(latitude: self.latitude , longitude: self.longitude)
var toLocation = CLLocation(latitude: latitudeDestion , longitude: longitudeDestinaton)
let distance = fromLocation.distanceFromLocation(toLocation)
距离 SQL : 207.91730456420444 公里
SELECT id_gasolineria,
( 3959 * acos( cos( radians(19.395039) ) * cos( radians( gasolinerias.latitud ) )
* cos( radians(gasolinerias.longitud) - radians(-99.156203)) + sin(radians(19.395039))
* sin( radians(gasolinerias.latitud)))) AS distance
FROM gasolinerias
ORDER BY distance;
如何使用SQL获取实际距离?
【问题讨论】:
【参考方案1】:没有(真正的)不一致。中的主导因素
Haversine formula
是地球半径,您的 SQL 公式中的 3959
是(近似值)
以 miles 为单位的半径,因此结果为 207.9 英里,
也就是334.6公里。
如果您将3959
替换为6371
(大约地球半径以公里)
那么你应该得到与你的 Swift 代码相同的结果。
【讨论】:
以上是关于计算两个纬度/经度点之间的距离不一致的主要内容,如果未能解决你的问题,请参考以下文章