私はこのメソッドをJavascriptで実装しましたが、約2.5%アウトであり、その理由を理解したいと思います。
私の入力データは、緯度、経度、およびWGS84楕円体の上の高さとして表される点の配列です。これらのポイントは、マラソンレース中に手首に取り付けられたGPSデバイスから収集されたデータから取得されます。
私のアルゴリズムは、各ポイントをデカルトの地心座標に変換してから、ユークリッド距離を計算することでした(ピタゴラスを参照)。デカルトジオセントリックは、Earth CenteredEarthFixedとも呼ばれます。つまり、地球と一緒に回転するX、Y、Z座標系です。
私のテストデータはマラソンのデータだったので、距離は42.26kmに非常に近いはずです。ただし、距離は約43.4kmになります。私はさまざまなアプローチを試しましたが、結果が1メートル以上変わることはありません。たとえば、高さデータをNASA SRTMミッションのデータに置き換えたり、高さをゼロに設定したりしました。
Googleを使用して、lat、lon、heightが変換され、変換アルゴリズムが一致している2つのポイントを文献で見つけました。
これを説明できるのは何ですか?Javascriptの二重表現に期待しすぎていませんか?(X、Y、Zの数値は非常に大きいですが、2つのポイントの差は非常に小さいです)。
私の代替案は、Vincentyのアルゴリズム(または同様のもの)を使用してWGS84楕円体全体の測地線を計算し、2つの高さでユークリッド距離を計算することですが、これは不正確に思えます。
よろしくお願いします!