私は与えられた緯度/経度から特定の半径内の地球上の特定の点を見つけるために異なる式を試しています。私は '余弦の球法則'とHaversineの実装と信じているものを使ってきました。下記式についてsqlクエリの余弦/球面法則
、これらは変数である:
[$ LAT/$のLON] =原点
[緯度/経度] =第二の点の点が
[$半径=余弦
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メートル以上である限り、より正確であるという意見もあるようです。さらに、Vincentyは正確さを両立すると言われています。
3つの質問:
は私の半正矢公式実際半正矢またはそれが何か他のものですか?
どのような考えが最も正確ですか?
誰でも私に上記フォーラムのラインに沿ってVincentyのための配合を教えてもらえますか?
ありがとうございました!
Q1:あなたのお勧めの式は 'SELECT IDから始まり、(3959の* ACOS(' ...余弦式の球状の法則として 'acos'ブランドそれは、間違いない半正矢式Q2.1余弦はより高速ではありません。Q2.2余弦の球法則は、小さな差よりも正確ではありません。 –