1

私はすでに同様の投稿を投稿していました。そして、私は理論的に答えを得ましたが、私を助けるために誰かが本当に必要です.

したがって、このを使用して GPS をテストしています。私がやりたいのは、緯度と経度の 56,322415 のような標準の 10 進数値を取得する方法です。今は 5304,254 の値を取得しているためです。

これをGoogleマップに使用するため、この形式で必要です。

コードを確認して、何を省略すべきか、またはそれを WGS84 形式に変換する方法を教えてください。

ありがとうございました。

編集:

これは、プログラムを実行したときに表示される内容を説明している図です ここに画像の説明を入力

そして、これは codeproject ページの 1 つです。

ここに画像の説明を入力

編集2:

したがって、THIS CONVERTERを使用して、学位を持っているときに取得する必要がある 10 進値を確認すると、同じ値が得られません。

これは私が得るべき値です:

ここに画像の説明を入力

そして、これは私がプログラムで得る値です:

46.64662666666667

同じ変換が得られない理由は何ですか?

4

2 に答える 2

2

ParseNMEA 関数の次の行は、WGS84 から British Ordinance Survey 座標への変換を行うものです。

return Transform(deciLat, deciLon, height);

したがって、その行を削除して deciLat と deciLon の値だけを使用すれば問題ありません...

質問の更新後の追加:

あなたが参照しているコードはローカル数値形式を考慮していないため、これがうまくいかない場合は、誤った小数点記号の一致が原因である可能性があります。

入力が常にインバリアント カルチャ (小数点あり) であると仮定すると、次の関数を使用して変換を行うことができます。

string[] arrLon = strLon.Split(new char[]{'°', '"'}, StringSplitOptions.RemoveEmptyEntries);
double dblLon = double.Parse(arrLon[0]) + double.Parse(arrLon[1], new System.Globalization.NumberFormatInfo()) / 60;
double deciLon = arrLon[2] == "E" ? dblLon : - dblLon;

追加情報:

NumberFormatInfo: http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.aspx

于 2012-05-11T18:17:29.167 に答える
1

あなたの問題は今解決されたようです、私はコメントの1つで提起され解決された異なるローカル番号フォーマットによって引き起こされた問題があったことを知っています:

http://www.codeproject.com/Articles/13577/GPS-Deriving-British-Ordnance-Survey-Grid-Referenc?msg=2106791#xx2106791xx

latとlonの10進値が必要な場合は、今すぐすべてを破棄して、Dirkが提供するソリューションを使用できると思います。= o)

アレックス

于 2012-05-14T07:51:29.303 に答える