3

私はこのメソッドを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つの高さでユークリッド距離を計算することですが、これは不正確に思えます。

よろしくお願いします!

4

3 に答える 3

1

問題の主な原因と思われるものを突き止めました。変換関数で緯度と経度が間違った方法で丸められました。

若いプレイヤー向けのトラップ: ポイント データは、緯度ではなく経度を最初に示します。

現在、アルゴリズムから 42,476.75、回転楕円体から 42,476.69 を取得しています。私の目的には十分近い。

みんなありがとう!

于 2009-11-07T18:42:44.807 に答える
0

このような計算には Google Maps Api を使用できます。私はこれを一度やった。

于 2009-11-19T01:18:23.700 に答える
0

Javascript の計算は簡単に正確なので、そこから問題が発生しているとは思いません。確かに、2.5% 程度のエラーではありません。

あなたは私が聞いたこともない言葉を投げかけているので、少なくとも私と同じくらい測地距離の計算に精通していると思います。私はずっと前にこれに手を出したことを覚えています。これを行うには、双曲線正弦と余弦を計算して「奇妙な」球面幾何学を行う必要がありました。ユークリッドの平面距離を単に「行う」と、地球の曲率が大きくなると、距離がずれます。

それで…ヒプシンやってるの?あなたのプログラムは指数関数や対数などを行っていますか? そうでない場合は、間違った式を適用している可能性があります。

そこに... それは、トピックについて私が知っているすべてです. 幸運を!

于 2009-11-07T17:54:33.080 に答える