簡體   English   中英

計算兩個緯度/經度點之間的距離不一致

[英]Inconsistency in Calculating Distance Between Two Lat/Long Points

我在用SQL咨詢和CLLocation計算距離之間存在不一致。 如何獲得真實距離?

使用此Swift代碼的距離:334.599618308747 km

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 km

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公式中的首要因素是地球半徑 ,而SQL公式中的3959是半徑(以英里為單位) ,因此結果是207.9英里(334.6公里)。

如果將3959替換為6371 (約地球半徑,以km為單位 ),則結果應與Swift代碼相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM