Ruby on GeoTools で距離計算 1

電子国土地図でハチ公の経緯度を計測し

Ruby on GeoTools を使って、2点間の直線距離を計算してみます。
地球は回転楕円体なので、距離の計算は単純ではありません。「直線距離」の定義すら明確とは言えません。一般的には、平面に投影したときのユークリッド距離(いわゆる、地図上の距離)あるい回転楕円体の表面に沿った距離(たぶん、大圏距離と言うと思う)がよく使われます。通常、標高差による傾斜などは考慮しないようです。
このあたりの詳細を、geotools.rb を使いながら実験的に理解していきたいと思っています。

距離を測る2点は

渋谷のハチ公とつくば市のエキスポセンターの H-II ロケットとします。

経緯度の計測は

Safari でも使える、電子国土地図を使います。
地図の真ん中に十字が出てくる、いわゆる Limited 版モードで、その十字に目標物を当てて、右下にある「座標」という緑色のボタンを押せば、その場所の経緯度が表示されます。実際にやってみたところ、

渋谷のハチ公
北緯35度39分32.44秒、東経139度42分2.3秒
つくば市のエキスポセンターの H-II ロケット
北緯36度5分10.43秒、東経140度6分40.7秒

となりました。しかし、IT 的には経緯度は度分秒ではなくて度(十進経緯度, decimal degree と呼ぶことが多いようです)で表示することが多いので、度分秒から十進度への変換をする必要があります。この変換は、geotools.rb に用意した、Geo::dms2dec を使います:

$ irb
irb(main):001:0> require 'geotools'
DEBUG: rjb primitive_conversion mode
=> true
irb(main):002:0> Geo::dms2dec(35, 39, 32.44)
=> 35.6590111111111
irb(main):003:0> Geo::dms2dec(139, 42, 2.3)
=> 139.700638888889
irb(main):004:0> Geo::dms2dec(36, 5, 10.43)
=> 36.0862305555556
irb(main):005:0> Geo::dms2dec(140, 6, 40.7)
=> 140.111305555556
irb(main):006:0> 

ということで、2点の十進経緯度が分かりました:

地点名 経度 緯度
渋谷のハチ公 139.700638888889 35.6590111111111
つくば市のエキスポセンターの H-II ロケット 140.111305555556 36.0862305555556

この情報が正しいかどうか、はてなmap記法 を使って検証(クロスチェック?)することができます:


map記法では今のところ縮尺を指定できないようですので、[+] ボタンを使って地図を拡大していただく必要がありますが、位置はかなり良く合っているようです。電子国土地図で閲覧した地図は 1:25,000 相当ですので、規定精度の10メートル台のずれがありますから、このくらいのずれがあるのは仕様、となります。

距離の計算は

を算出して、比べてみたいと思います。実際の計算は、近々別エントリで。

このエントリの信頼性について

このエントリの内容には誤りがあるかもしれません。

geotools.rb

http://svgmapdata.sakura.ne.jp/geotools/ に公開されています。