空間ポイントを含む MySQL テーブルがあり、距離を計算する必要があります。Haversine 式を使用してこれを行うことに関する多くの資料を見つけましたが、これらはすべてポイント間の距離が大きいことを前提としています。私の場合、短距離 (< 1 マイル) しか気にしないので、地球の曲率を補正する必要はありません。私の直感では、Haversine 式を使用すると、このような短い距離では不正確になります。助言がありますか?
2 に答える
あなたの直感は間違っています。ウィキペディア ( φは緯度、ψは経度)によると、haversine 式と hasersine の定義を考えてみましょう。
関連するさらなる事実があります。 θ の値が小さい場合、 sin θはθにほぼ等しくなります。より適切には、θでほぼ線形です。したがって、haversin θ はおよそ ( θ /2)² になります。この近似は、θ が 0 に近づくにつれて良くなります。
緯度と経度が近い場合、ここで hasersine 関数が適用されるφ ₂ - φ 1 とψ ₂ - ψ 1 はゼロに近くなり、式はほぼ次のようになります。
(d/2r)² = (( φ ₂ - φ ₁) / 2)² + cos( φ ₁) cos( φ ₂) (( ψ ₂ - ψ ₁) / 2)²
ここで、この式は 2 次元のユークリッド距離と同じ形をしており、いくつかの任意のスケーリング係数があることに注意してください (( kx )² = k ² x ² を思い出してください。これにより、定数を正方形の内外に移動できます)。
k ₁ d ² = k ₂ ∆<em>φ² + k ₃ ∆<em>ψ²
最後に、これらの任意のスケーリング係数は、緯度/経度の変化を直線距離に変換するものと同じであることが判明することを証明なしで主張します。
したがって、harsine 式は短い距離では不正確になりません。これは通常のユークリッド距離の計算とまったく同じで、距離が小さいという制限があります。