我正在測試不同的公式,用於查找給定經度/緯度範圍內給定半徑內地球上的特定點。我一直在使用'餘弦球形法則',我相信這是實施Haversine。SQL查詢中的半正定/球形定律/ vincenty查詢
對於下列公式,這些都是變量:
[$緯度/ $經度] =原點
[緯度/經度] =第二點的點
[$半徑] =餘弦
3959 * acos(cos(radians('.$lat.')) * cos(radians(latitude)) * cos(radians(longitude) - radians('.$lon.')) + sin(radians('.$lat.')) * sin(radians(latitude)))) <= '.$radius.';
半正矢半徑
球法(至少我覺得是!)
3959*3.1415926*sqrt((latitude-'.$lat.')*(latitude-'.$lat.') + cos(latitude/57.29578)*cos('.$lat.'/57.29578)*(longitude-'.$lon.')*(longitude-'.$lon.'))/180) <= '.$radius.';';
我最初遇到了很多的信息說,半正弦波是黃金標準儘可能準確度來了。然而,似乎也有一種觀點認爲,餘弦的球形定律比Haversine更準確,只要被測量的距離大於5米左右即可。此外,有人說,文森特被稱爲在準確性方面勝出。
三個問題:
是我haversine公式實際上是半正弦波或別的東西?
任何想法都勝出最準確?
任何人都可以爲我提供Vincenty的配方,沿着上述論壇的路線嗎?
謝謝!
Q1:你的推薦配方開始與'SELECT ID,(3959個* ACOS('...了'acos'品牌作爲餘弦公式的球形規律,絕對不是haversine公式Q2.1半胱氨酸的速度並不快,Q2.2球形的餘弦定律在小的差異上是LESS準確的。 –