2016-03-03 264 views
0

我們使用rethinkdb地理空間功能來計算兩個緯度和經度,而是由rethinkdb返回的結果之間的距離是不同的,看起來錯的,如果我交叉檢查的谷歌地圖或任何距離計算器網站。我已經複製給rethinkdb幫助相同的代碼。使用rethinkdb 2個經緯度點之間計算距離

var point1 = r.point(-122.423246,37.779388); 
var point2 = r.point(-117.220406,32.719464); 
r.distance(point1, point2, {unit: 'km'}) 
// result returned 
734.1252496021841 km 

,但是當我在http://www.onlineconversion.com/map_greatcircle_distance.htm測試同一點上返回以下結果642.1854781517294公里。

回答

1

從一些其它地理系統不同的是,使用RethinkDB具有第一經度的慣例,隨後緯度。 爲了與GeoJSON格式保持一致,我們做了這個決定。

http://www.rethinkdb.com/api/javascript/point/

從看着你的榜樣,它看起來就像你計算出的距離正確RethinkDB,但在在線工具進入相反的方向座標。

隨着緯度和進入正確的領域經度,我得到一致的結果: enter image description here

更先進的注意事項: 有小數點後面的一些差異。在線計算器聲稱「腳本使用」Haversine「公式,其結果近似小於1%。」我認爲這意味着高達1%的誤差,所以這種偏差是可以預料的。

RethinkDB根據C.F.F.Karney 1的算法,使用橢圓體上的測地線計算距離。這是一個非常精確的算法,它可以計算直到雙精度浮點數限制的測地線。

你會看到更多的谷歌地圖偏離(這給了我735.234653公里這兩點)。它看起來像谷歌地圖使用大圓距離,根本不考慮橢球形地球。

1http://link.springer.com/article/10.1007%2Fs00190-012-0578-z

+1

感謝細節。它解決了我的問題。我認爲rethinkDB使用類似於其他地理系統的經度和緯度位置。 –

相關問題