• ベストアンサー

GPS(緯度,経度)座標から,XYZ座標を求めるには?

GPSの初心者です。GPS受信機から出力されるNMEAのGPGGA等で出力される緯度,経度から,地球を中心とするXYZ座標に変換する場合, 下記のURLの計算式(http://vldb.gsi.go.jp/sokuchi/surveycalc/trans_alg/trans_alg.html) から求められるようですが,GPSから得られる,緯度,経度以外に, 「楕円体高」,「卯酉線曲率半径」,「ジオイド高」,「第一離心率」,「標高」は,どのようにして求めているのでしょうか? ご教授ください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

もし測地系の変更が可能な機種なら WGS-84 を選択します。(通常デフォルトでWGS-84だと思いますが取り扱い説明書をご覧下さい) GPGGAメッセージ(センテンス)のフォーマットは、 ----- 参考文献1のP.87の5行目より引用 ここから ----- $GPGGA,hhmmss.ss,llll.lll,a,yyyyy.yyy,a,Q,NN,H.H,A.A,M,G.G,,M,T.T,RSID*CS<CR><LF> -------------------- ここまで -------------------- (注意!「G.G,,M」は「G.G,M」の間違いです) 「A.A(可変長)」のフィールドがアンテナ高度(平均海面からの高度) 「G.G(可変長)」のフィールドがジオイド(平均海面)とWGS-84楕円体との高度差です。 ですからお示しのホームページの式の h はこの二つのデータを加算したものになります。 WGS-84楕円体は、赤道半径 a = 6378137[m]、扁平率 f の逆数 1/f = 298.257223563 ですので、 第一離心率 e の二乗 e^2 = 2 * f - f^2 = 0.00669437999014 となり、 卯酉線曲率半径 N = a / sqrt( 1 - e^2 * sin(φ)^2 ) です。 ※ただし、φは緯度、「*」は乗算、「/」は除算、「^」はべき乗、sqrt()は平方根関数、sin()は正弦関数をそれぞれ表す。 NMEA-0183フォーマットの説明は次のページが参考になるでしょう。 http://bg66.soc.i.kyoto-u.ac.jp/forestgps/nmea.html 【参考文献】 1.「SVeeSix 6チャンネルGPSセンサ 仕様およびユーザーズマニュアル 第D版」トリンブル ジャパン株式会社 2.土屋淳・辻宏道著「やさしいGPS測量」社団法人 日本測量協会

参考URL:
http://bg66.soc.i.kyoto-u.ac.jp/forestgps/nmea.html
go_taka
質問者

お礼

sunspot_numberさん,ご丁寧な回答ありがとうございます。 専門用語や計算式でいろいろと迷っていましたが, とてもわかり易いご回答で理解できました。 WGS-84の測地系の設定で,やってみます。 今後とも,分からないことがありましたら, よろしくお願いします。 go_taka

関連するQ&A

  • GPS携帯(3キャリア)で撮られた写真のexifファイルから緯度経度が

    GPS携帯(3キャリア)で撮られた写真のexifファイルから緯度経度が取得出来ると思うんですが、 標高の情報もわかりますか?au以外のGPSでは数値地図が必要ですか? 何がしたいかと言うと、例えば、写メールから「この写真は富士山の標高2000mで撮られたものだ」と特定出来るものが作りたいんです。 何か方法があれば教えて下さい。

    • ベストアンサー
    • PHP
  • 現在携帯GPSを探しています。

    現在携帯GPSを探しています。 お世話になります。 求める機能としては、その場所に足ってボタンを押すと、緯度経度と標高(精度は1mくらいで十分) がわかるということが必須条件です。標高というのが難しいと思っていたのですが、今はなにやら 出せるようになったらしいです。 さらに、 ・微妙に運転でも使える ・生活防水 というのもあるとなお素晴らしい感じです。 このような機能をもった携帯GPSで、オススメの機種がありましたら紹介してください。

  • ExcelVBAでi緯度と経度から距離を測りたい

    お世話になっております。ExcelVBAを使って2か所の 緯度と経度から距離を測定したいのですが上手くいきません。 データ(緯度と経度)が入っているセルはデータ型で小数点7ケタまで入っています。 これをVBAを使用し数値データからシリアル値に変換し計算をしたいのです。 緯度と経度から距離を求める式はヒュベニの計算式を使用しています。 公式は距離=sqrt((M*dP)*(M*dP)+(N*cos(P)*dR)*(N*cos(P)*dR))です。 P=2点の平均緯度 radians((緯度01+緯度02))*24 dP=2点の緯度差 (緯度01-緯度02)*24 dR=2点の経度差 (経度01-経度02)*24 M=子午線曲率半径 6334834/sqrt((1-0.006674*sin(P)*sin(P))^3) N=卯酉線曲率半径 6377397/sqrt(1-0.006674*sin(P)*sin(P)) 作成した関数は Function kyori(X1,Y1,X2,Y2) Dim Latit01 As Double Dim Longi01 As Double Dim Latit02 As Double Dim Longi01 As Double Dim LatitXX1 As Date Dim LongiYY1 As Date Dim LatitXX2 As Date Dim LongiYY2 As Date Dim D As Double Dim P As Double Dim dP As Double Dim dR As Double Dim M As Double Dim N As Double '値の代入 Latit01 = X1 Latit02 = X2 Longi01 = Y1 Longi02 = Y2 'シリアル値に変換 LatitXX1 = format((Latit01 /24), "[h]:mm:ss.000") LongiYY1 = format((Longi01 /24), "[h]:mm:ss.000") LatitXX2 = format((Latit02 /24), "[h]:mm:ss.000") LongiYY2 = format((Longi02 /24), "[h]:mm:ss.000") P = (Application.WorksheetFunction.Radians((LatitXX1 + LatitXX2) / 2)) * 24 dP = (LatitXX1 - LatitXX2) * 24 dR = (LongiYY1 - LongiYY2) *24 M = 6334834 / Application.WorksheetFunction.sqrt((1-0.006674 * Sin(P) * Sin(P))^3) N = 6377397 / Application.WorksheetFunction.sqrt((1-0.006674 * Sin(P) * Sin(P)) kyori = Application.WorksheetFunction.sqrt((M*dP*Application.WorksheetFunction.Pi()/180)*(M*dP*Application.WorksheetFunction.Pi()/180)+(N*sos(P)*dR*Application.WorksheetFunction.Pi()/180)*(N*cos(P)*dR*Application.WorksheetFunction.Pi/180)) これを実行するとシリアル値に変換するときに止まってしまいます。 エラーは出ず、Excekのセルには#VALUEと返されます。 どなたか教えてください。

  • ride with gpsの標高データ源

    自転車等のツーリングルートを描くのに便利なサービス、ride with gpsについての質問です。標高データ源は何でしょうか?入力された緯度経度座標情報から、なんの情報源に問い合わせて標高データを出してくるのかということです。 公式をみても、見当たりませんでした。 同様のサービス、ルートラボでは国土地理院の標高データ(航空レーザー測量)を用いているようです(認識ミス等あればご指摘ください)。

  • Androidアプリにて標高を取得する方法について

    こんにちは。最近Androidのアプリ作りを始めた者です。 今、google maps APIを用いて、現在地の緯度、経度、住所、標高の情報を取得するAndroidアプリケーション作りに励んでいます。 location.Geocoderクラスを用いて、GPSにて取得した緯度、経度情報を渡して住所情報を取得することができたのですが、同様の方法で標高の値を取得する方法がわからず困っています。 Google Elevation APIというものがあるようですが、これはandroidアプリからは参照することができないように思います。 importするだけでAndroidで簡単に高度を取得できるAPIをご存知の方がいらっしゃったら教えてほしいです。 なお、GPSのgetAltitude()の方法もあるのですが、精度がいまいちなのと、今後現在地と目的地のプロファイルを表示するアプリも作りたいので、やはり緯度経度を渡せば標高を返してくれる方法を知りたいです。 どなたかよろしくお願いします。

  • 林の中でも位置を知りたいのですが

    健康目的で「山歩き」を始めました。2~3時間歩いてます。 で、山道の地図を作りたいんです。緯度と経度がmust、標高はwantです。空が木の間にチラチラしか見えない場所でも動作しないと駄目なんですが。GPSなるもので大丈夫なんでしょうか? ご存知でしたらご教示ください。

  • 携帯で標高を知ることができます?

    パソコンのカシミールや、スマホのアンドロイドに対応しているアプリがあるらしいことは承知しております。 国土地理院つながりになると思いますが、携帯のGPS機能を使い、緯度経度の情報を送って、その地点の標高(大まかでいいのです)を知ることができる携帯用アプリや携帯用サイトが有りましたら教えて下さい。 津波がらみで、ある場所の大まかな標高を携帯で知りたいと思っています。 普通にドコモ、au携帯を各一台所持しています。 よろしくお願いします。

  • GPS(緯度,経度)から,ローカル(局所平面)のXYZ座標を求めるには?

    GPSに関して,何度か質問をさせていただいております。 以前,GPS(緯度,経度)から,地心座標系(XYZ)への変換について教えていただきました。 その方法で地心座標系(XYZ)を計算することができたのですが,緯度,経度,平均海水面からの高さ(MSL)から,局所平面(ローカル)座標系(X,Y)を求める方法について悩んでおります。 例を申しますと,平坦地の100m(南北方向100m,東西方向100m)の矩形のラインをGPSで計測し,地心座標系で軌跡を求めると,南北方向の100mに対して,距離が70mの長方形の走行軌跡になってしまいます。 GPSで平面での走行距離や方向を求めたいと思っております。 緯度,経度情報からローカルの平面座標系(X,Y)(m単位)を求める方法をご存知でしたら,教えてください。よろしくお願いします。

  • GPS 緯度経度などについて

    GPSの誤差は1mとかD-GPSとか利用したときと同じとか 聞きますが実際、もっと誤差があるのでしょうか? 誤差を小さくしたいのですが 何かよい方法はありませんか? 業務用を使うとかしかないのでしょうか? ハンディーGPSの 誤差 15RMS? アルファベットのところは どう読むのでしょうか? 緯度経度で英語では、どう発音(スペルなども知りたい)するのでしょうか? 例 東経135度 52分 31.5秒   北緯35度 23分 31.8秒

  • ESP8266 ARDUINO の配線について

    スイッチの配線方法を教えてください。 https://ambidata.io/blog/2017/08/04/gps-2/のサイトで、「ESPr DeveloperのIO16にスイッチを付けて、スイッチが押されていたらその時の緯度経度と標高をAmbientに送信しています。while文でスイッチが押されている時間を見ているのはチャタリング(スイッチの機械的なバタつき)防止です。」と書かれているのですが、IO16からどのような回路でスイッチをつけたらいいのでしょうか?