计算两个 Lat/Long 点之间的距离不一致
Inconsistency in Calculating Distance Between Two Lat/Long Points
我在 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得到实际距离?
没有(真正的)不一致。的主导因素
Haversine formula
是 地球半径 ,SQL 公式中的 3959
是(近似值)
半径 英里 ,因此结果为 207.9 英里,
也就是334.6公里。
如果将 3959
替换为 6371
(地球半径约为 公里 )
那么你应该得到与你的 Swift 代码相同的结果。
我在 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得到实际距离?
没有(真正的)不一致。的主导因素
Haversine formula
是 地球半径 ,SQL 公式中的 3959
是(近似值)
半径 英里 ,因此结果为 207.9 英里,
也就是334.6公里。
如果将 3959
替换为 6371
(地球半径约为 公里 )
那么你应该得到与你的 Swift 代码相同的结果。