33
2点間の距離を計算する方法 Last update: 2012/12/12 K. Morishita *スライド用というより、読んで分かることを心がけてます。 詳細は、参考文献を参照してください。 想定読者は、GPSについて初心者の方です。 (30.2552, 130.5348) (30.2488, 130.5294)

Calc Method of Distance on The Earth (地球上での距離の計算)

Embed Size (px)

DESCRIPTION

2点間の距離を緯度経度から求める方法に関するスライドです。 具体的な計算方法は各種リンクや用語検索で探してください。 サンプルプログラムはhttp://morimori2008.web.fc2.com/contents/GPS/GPS_programing/gps_tools.html#GPSclass_Csharpにもあります。

Citation preview

Page 1: Calc Method of Distance on The Earth (地球上での距離の計算)

2点間の距離を計算する方法 Last update: 2012/12/12

K. Morishita

*スライド用というより、読んで分かることを心がけてます。

詳細は、参考文献を参照してください。

想定読者は、GPSについて初心者の方です。

(30.2552, 130.5348)

(30.2488, 130.5294)

Page 2: Calc Method of Distance on The Earth (地球上での距離の計算)

計算の前に

座標系について知ろう

2

Page 3: Calc Method of Distance on The Earth (地球上での距離の計算)

地球上での位置を表す方法には2通りある

緯度経度+楕円体高

3軸直交座標系

緯度経度と直交座標系

縦線が経線

横線が緯線

Google Earth 3

Page 4: Calc Method of Distance on The Earth (地球上での距離の計算)

地球はおおむね球状なので、地球上での位置座標は地球の中心からの角度と距離で表すことができる

角度は、緯度と経度

緯度≒赤道面からの角度

北極方向を普通はプラス+にとります(もしくは北緯・南緯と言い分け)

経度=本初子午線を基準とした赤道面内の角度

北極方向から見て反時計回りを普通はプラス+にとります(又は東経・西経)

地球中心からの距離は使い難いので、地球表面からの高さを使う

ただし、地球は厳密には楕円体

自転しているから、遠心力で膨れる

という訳で、楕円体表面からの高さである楕円体高を使う

まずは 緯度経度+楕円体高

4

Page 5: Calc Method of Distance on The Earth (地球上での距離の計算)

緯度を図で説明してみると…

Z

Y or X

φ: Latitude

楕円体面に垂直に下す

5

Page 6: Calc Method of Distance on The Earth (地球上での距離の計算)

楕円体高を図で説明してみると…

Z

Y or X H: Altitude

6

Page 7: Calc Method of Distance on The Earth (地球上での距離の計算)

経度を図で説明してみると…

X

Z

Y

θ: Longitude

赤道面に直角に下す

7

Page 8: Calc Method of Distance on The Earth (地球上での距離の計算)

楕円体を定義すれば、地球の形が決まる

これを地球上の複数の点で固定すれば座標系が定まる

Ex. 「熊本大学のXX点を緯度**°経度@@°と定める」の様に

楕円体の定義に必要なパラメータ

長半径(=赤道半径)

扁平率(どれだけ円が潰れているかの度合い)

楕円体と座標系とジオイド(重力の定義)を合わせて測地系

楕円体と座標系の定義

8

Page 9: Calc Method of Distance on The Earth (地球上での距離の計算)

地球は楕円体だが、厳密には重力加速度の違いによりでこぼこしている(右図)

そこで、各国は楕円体が最も自国にフィットするように局地座標系を定義した

最近では地球重心を原点とする世界測地系へ移行しつつある

が、過去の遺産が膨大なので過去の測地系が使われる場合もある

そのため、GPS受信機は任意の測地系で出力できるように作られている

同じ楕円体の定義でも、地表へのあてはめ方(座標系)の違いで、地表上の点の座標値が異なることに留意

さまざまな測地系

図はWikipediaより

「鉛直下向き」を伸ばしていっても、地心には達しない

地下の密度の違いで重力加速度にむらが生じる

9

Page 10: Calc Method of Distance on The Earth (地球上での距離の計算)

日本の測地系は、

旧日本測地系

日本測地系2000

日本測地系2011(311地震の影響で改定された)

と移り変わってきた

特に、旧日本測地系と日本測地系2000との差は同じ座標値の地点間で約400 mにも達する

*なお、日本測地系2000と2011の差は東日本で数mです。2012年春の段階でも地殻変動は継続中なので座標の利用には留意してください。

測地系の違いの影響

10

Page 11: Calc Method of Distance on The Earth (地球上での距離の計算)

標高の基準は各国が独自に定めている

日本では、東京湾の平均海水面高を標高0 mとしている

地図作りでは、これを基準にして水準測量を繰り返す

重力加速度も測ります

楕円体表面と平均海水面高は一致しない

熊大周辺で約30 mも異なる

さらに、GPS受信機が内部に保持しているジオイドモデル(重力モデル)とこの平均海水面高も一致しない

自転や海流の影響が大きい

従って、GPS受信機の出力するMSL(Mean Sea Level)値は日本の標高とは異なる

楕円体高と標高の差

11

Page 12: Calc Method of Distance on The Earth (地球上での距離の計算)

GPS受信機などの測位デバイスが、どの測地系で座標を出力しているのか把握する必要がある

必要なら、測地系の変換を要する

ちなみに、GPSが採用しているのはWGS84

大抵のハンディGPS受信機がデフォルトをWGS84としている

改定が数年毎に行われており、最新はG1674バージョン

プログラムを組む上での考慮点

12

Page 13: Calc Method of Distance on The Earth (地球上での距離の計算)

Z軸を地軸に一致させる

北向きに正を取る

X軸は本初子午線方向

厳密には一致しない

Y軸はXとZ軸に直行する方向にとる

原点は地球の重心

地球の自転に合わせて回転させる

GPSでは、上記のECEF座標系を使う

次に 3軸直交座標系

X

Z

Y

13

3軸直交座標系を下記の様に定義したものを

ECEF(earth centered, earth fixed)座標系と呼ぶ

Page 14: Calc Method of Distance on The Earth (地球上での距離の計算)

地球の地軸は一定していない

地球内の密度の移動などの影響でフラフラしています

そこで、平均的な地軸方向を基準にします

大陸移動により、地表の座標は常に動いています

大陸移動の速度を計算して、元期(がんき)とそれを基準とした時間で座標は補正可能です

言い換えると、座標を時間の関数で考えるということです

ただし、

14

Page 15: Calc Method of Distance on The Earth (地球上での距離の計算)

地球の重心点なんぞ高精度には測れない

そこで、地表の施設の座標を決め打ちする

座標には、「○○年××月△△日時点で」という元期が付く

VLBIというmm単位で正確な座標決定方法を利用

地球個体潮汐(引力で地球がひずむ現象)も考慮

座標系の実現

15

Page 16: Calc Method of Distance on The Earth (地球上での距離の計算)

距離の計算

16

Page 17: Calc Method of Distance on The Earth (地球上での距離の計算)

短距離では

求める精度によるが、10 km以下ではECEF座標系での差分で十分

長距離になると

船や航空機では実際に進むのに必要な距離が問題となる

移動の軌跡は地表(楕円体面)に沿って曲線を描く

緯度が変わると曲率半径が変わるので、式はかなり難解

普通はジオイドの凸凹(≒海水面の凸凹)は考慮しない

楕円体高も考慮しないのが普通

地球を一周すると、高度Hなら約Hだけ誤差がある

公式は短距離と長距離で

使い分けるが吉

17

Page 18: Calc Method of Distance on The Earth (地球上での距離の計算)

数cmの誤差を許容するなら

~10 km: ECEF座標系上でのユークリッド距離

~100 km: ヒュベニの公式などの簡易式

ヒュベニの公式は高度を考慮しない

それ以上: 長距離用の公式

高度を考慮するものは少ない(と思う。)

どうしても高精度が必要ならば、移動予定の軌跡(曲線)を離散化して、ECEF座標系に変換した上で積分する

具体的な使い分け

18

Page 19: Calc Method of Distance on The Earth (地球上での距離の計算)

まず赤道での経度1°当たりの距離𝑙𝑎を求める

予め計算して、定数で与えてok

おおよそで良ければ、緯度1°当たりの距離も𝑙𝑎とする

経度1°当たりの距離𝑙は、緯度𝜙の関数

𝑙 ≅ 𝑙𝑎cos 𝜙

2点の座標をそれぞれ 𝜃𝐴, 𝜙𝐴 , 𝜃𝐵 , 𝜙𝐵 とし、その差分をΔ𝜃𝐴𝐵, Δ𝜙𝐴𝐵とすれば、2点間の距離𝑑は

𝑑 = 𝑙𝐴Δ𝜃𝐴𝐵2 + 𝑙𝑎Δ𝜙𝐴𝐵

2

ちなみに、赤道半径は6,378,137 m @ GRS80 & WGS84

ごく短距離で

荒く距離を求めるなら

19

Page 20: Calc Method of Distance on The Earth (地球上での距離の計算)

計算結果の正誤確認方法

[注意]採用されているアルゴリズムの差により、1万km以上の距離になると数m異なり得ます

20

Page 22: Calc Method of Distance on The Earth (地球上での距離の計算)

Google Earth

Google社のリリースしているGISソフト衛星写真で表示されている

地図と座標間の誤差は多い場所で数 mとか

地球をぐるぐる回せる間隔が楽しい(人工衛星の気分?)

http://www.google.co.jp/intl/ja/earth/index.html

22

ソフトウェアでチェック

カシミール3D

国土地理院が発行する「ウォッ地図」の他、様々な地図を利用可能

http://www.kashmir3d.com/

Page 23: Calc Method of Distance on The Earth (地球上での距離の計算)

GNSS測量のイロハ

23

Page 24: Calc Method of Distance on The Earth (地球上での距離の計算)

GPSなどの衛星を利用して位置を測ること

衛星からの電波が届かないと測位できません

GPS受信機はアンテナの位置座標を計算する

あくまで、位置座標は受信機が計算する

GPS受信機は電波を衛星に対して送信しない

受信のみ

測位の仕組み別に、大きく分けて2種類の測位方法がある

24

GNSS測量とは

Page 25: Calc Method of Distance on The Earth (地球上での距離の計算)

単独測位

受信機1台で測位(位置を測る)

価格が安い

代わりに、精度は悪い

相対測位

受信機は2台必要

公共の基準局を用いる場合は1台

アンテナとケーブルも良い奴を受信機と同数を調達する必要がある

作業に時間がかかる

作業者の慣れも必要

受信機が高価

精度は2周波ならmm オーダ, 1周波ならcmオーダ 25

GNSS測量の種類

Page 26: Calc Method of Distance on The Earth (地球上での距離の計算)

GPS受信機を用いて、ある地点の座標を単独測位する場合

どんなに性能が良くても、10 mの誤差を見込む

時間をかけても無駄

20分ほど取れば十分

これ以上に時間をかけても無駄

誤差量は余り変わらず

1万円以上の受信機なら、さほど精度(厳密には確度)は変わらない

速度マスク(=移動しないと値を更新しない機能)に注意

相対測位なら、1時間ほど測量すれば数 mm ~ cmで測位できる

2周波受信機なら、15分ほどでOK

測量の精度と作業時間について

26

Page 27: Calc Method of Distance on The Earth (地球上での距離の計算)

単独測位なら、ハンディタイプの安い受信機+PCの組み合わせ

通信ケーブルと、PCのバッテリ持続時間にご注意

測位結果をNMEAというフォーマットで出力できるならbetter

水平方向に動かないと内部メモリには記録しないのがスタンダード

一部機種では定期的に保存させる機能があります

相対測位なら・・・ 1周波の安い奴で8万くらいからある

2周波は・・・3桁万(レンタルなら、1~2日で保険込みで40万円くらい) 測量サービスもあります

周囲が開けていないと測位は難しい

解析のために、近所の基準局が必要

国土地理院のGEONETが使える

ただし、1周波受信機だと距離が5 kmを超えると厳しい

測量用の受信機の用意と注意

27

Page 28: Calc Method of Distance on The Earth (地球上での距離の計算)

GPS受信機は、起動直後の測位には非常に時間がかかります

衛星の軌道情報を受信するため

電源を久しぶりに入れた場合や、電池の入れ替えで内部メモリがクリアされるような機種だとその度に最低12分30秒かかる

特に測量用だと念には念を入れる設計になっているので時間がかかる

実際の測量の前に屋外で20分ほど放置しておくと良い

前日に起動させていた場合、通常なら40秒ほどで測位できる

相対測位を行う場合は、2周波受信機でなければ、少なくとも30分は固定位置での測位が必要

ここ4・5年より前にリリースされた機種だと、少し時間がかかります

28

測位にかかる時間

Page 30: Calc Method of Distance on The Earth (地球上での距離の計算)

相対測位では、基準点の観測データが必要

独自に基準局を設けるのでなければ、国土地理院のGEONETや民間サービスを利用する

GEONET(無償) http://terras.gsi.go.jp/ja/index.html

データ配信サービス http://www.jsurvey.jp/9.htm

GEONETの場合、測量作業直後には観測データが手に入らない

数時間後に手に入る

観測時刻によっては、いくつかに分割された観測データを結合する必要がある

フリーのソフトを使って結合は可能

3日ほど経てば、結合済みのデータが供用される

30

相対測位の場合の処理

Page 31: Calc Method of Distance on The Earth (地球上での距離の計算)

ユーザ位置を基に、仮想のスタンプを押すアプリを作ることを想定した場合

ユーザの受信機は単独測位

Waypointを精密に計測する必要があまりない

従って、測量は単独測位でOK

仮想スタンプを置く間隔を30 m以上空ければ問題なし

*企画として面白いかどうかは別ですよ?

31

スタンプラリー等での利用の一例

Page 32: Calc Method of Distance on The Earth (地球上での距離の計算)

参考文献

32

Page 33: Calc Method of Distance on The Earth (地球上での距離の計算)

ヒュベニの公式

http://yamadarake.jp/trdi/report000001.html

その他

http://homepage3.nifty.com/kubota01/distance.htm

http://www.toyama-

cmt.ac.jp/~mkawai/lecture/sailing/geodetic/geosail.ht

ml#note1

33

距離の計算に関する参考文献