2013-07-12 14 views
6

初めての方はこちら。Geopy:GPSの方位/方位を計算する

私は橋の検査ROVのoctorotorのために収集されたGPSデータのいくつかのデータ分析を行っています。私たちはoctorotorをROSに3DスキャンLIDAR、ステレオビジョン、INS、およびいくつかの他のきちんとした技術を使用して実行しています。私は現在、Doug Weibel'sの設定と同様の設定で、キャリア位相、ドップラーシフト、衛星エフェメリスのような生のGPSデータを収集するようにublox LEA-6Tを使用しています。次に、オープンソースプロジェクトRTKLIBを使用して、ローカルのNOAA CORSステーションでDGPS後処理を行い、ブリッジの3Dポイントクラウドを再構築する際のポーズ推定精度をcm単位で取得します。

とにかく、私はscipyのほとんどを使って、私のテスト結果を統計的に検証しています。
具体的にかかわらず、この部分のために、私は使用しています:

が、私は私の測定からのオフセットに対する私の位置共分散を間柱てきましたgeopyの便利な距離関数を使用して地面の真理。引数をほとんどマッサージすることなく、行列内の各標準偏差要素によって表される各方向に対する距離を見つけることができます。ノース、イースト、アップ、そして3つの方向があります。

ただし、これらの距離は絶対的なものであり、方向を示すものではありません。
と言ってください:陽性、陰性は、それぞれ北側または南側に相関します。 Iは、の値を信じるよう

Iは、単に方向の極性を検出するために、緯度と経度を使用することができ


しかし、私は代わり記載距離のベアリングを指すように正確なポイントを見つけることができるようにしたいと思い、
グローバルな見出しは、私の現在のアプリケーション以外のアプリケーションにも役立ちます。

私は他の誰かが同様の質問
を提起しかし、その大円近似私は、少なくともWGS-84楕円体モデル、またはそのことができ、同じモデルのいずれかを使用して希望
を想定しているように見えることがわかりました


-ruffsl
任意の提案が理解 Jump to Calculating distances

ソース興味場合:

geopyで使用することが
+2

あなたは多く話していますが、少しは質問しています。正確に何が必要ですか? 2つの緯度/経度WG84座標間のベアリングを計算する関数? – AlexWien

+0

@AlexWien、はい、それは私が目指しているものです。私は、人々が自分自身を練習するときに過去の投稿からの回答を探したり、他の人に関連性が高く検索可能なキーワードを作成したりするときに役立ちます。 – ruffsl

+0

しかし私にとって有益なことは、特にRTKlib – AlexWien

答えて

5

Python用geographiclibパッケージを使用。これは、楕円体上の距離やベアリングなどを計算します。

pip install geographiclib 

後にあなたが

>>> from geographiclib.geodesic import Geodesic 
>>> Geodesic.WGS84.Inverse(-41.32, 174.81, 40.96, -5.50) 
{'lat1': -41.32, 'a12': 179.6197069334283, 's12': 19959679.26735382, 'lat2': 40.96, 'azi2': 18.825195123248392, 'azi1': 161.06766998615882, 'lon1': 174.81, 'lon2': -5.5} 

を行うことができます。これは、サラマンカにウェリントン、ニュージーランド(41.32S 174.81E)から測地線を計算し、例えば、(あなたは、などの経路、測定領域を、補間することができます) 、スペイン(40.96N 5.50W)。距離はs12(19959679メートル)で与えられ、初期方位角(方位角)はazi1(北から時計回りに161.067度)で与えられます。

+0

'Geodesic.WGS84.Inverse'の結果セットについてもう少し詳しく説明し、実際にGPSの見出し/方位を計算するのに役立つでしょう。 – swdon

+0

上記の編集を参照してください... – cffk

3

ベアリング:(LAT1、lon1)、(LAT2、lon2)LAT1、lon1、LAT2、lon2以下のコードで

はasumendラジアンでなければなりません。
度を度からラジアンに変換します。

dLon = lon2 - lon1; 
y = Math.sin(dLon) * Math.cos(lat2); 
x = Math.cos(lat1)*Math.sin(lat2) - 
     Math.sin(lat1)*Math.cos(lat2)*Math.cos(dLon); 
brng = Math.atan2(y, x).toDeg(); 

ベアリングは現在-180/180の範囲です。ベアリングコンパスために正規化する

(0-360)

if (brng < 0) { 
     brng+= 360; 
    } 
+1

私はエレガントな数学が好きですが、これは球面座標を使っていると信じています。 極性をチェックする目的を含め、航行および一般的な方向のアプリケーションについては、これはWG84と比較して十分だと思います。 測量やサイトの点検では、これはあまりにも粗すぎるかもしれないし、地元のエピソードの推定には適用されないかもしれません。素晴らしいです。 – ruffsl

+0

はいこれらの公式は地球を回転楕円体として表します。より正確には、楕円体ベースの式/実装を使用する必要があります。 – AlexWien

+1

私は混乱しています...なぜgeopyは距離を計算するvincenty関数に沿ってこれを計算する関数を持っていませんか? – Michael

関連する問題