Python: 地理座標間の距離を計算

二点の地理座標が与えられた時にその間の実際の距離を計算する。

環境:

Pythonはいつもどおり。 測量計算サイトは

  • 緯度・経度と地心直交座標の相互換算
  • 距離と方位角の計算
  • 平面直角座標への換算
  • 緯度、経度への換算
  • 世界測地系座標変換 (TKY2JGD)
  • PatchJGD
  • PatchJGD (標高版)
  • SemiDynaEXE
  • ジオイド高計算

をWeb上で計算できるサービスです。 REST APIも提供されているのでプログラムからも利用可能なのが嬉しいところです。 APIを使うためには、測量計算API 利用規約に同意する必要があるので注意してください。

今回は、「地理座標間の距離と方位角の計算」を行います。

つかったライブラリ

JSONを扱うためのライブラリ。 URLからデータを取得するためのライブラリ。

上記の規約の理由上、URLのパラメタ以外は "http://xxx" で書きます。 中身を知りたい人はAPIの規約に同意して先のページを見てください。

コード

  1. import json, urllib2
  2. r = urllib2.urlopen( "http://xxx?outputType=json&ellipsoid=bessel&latitude1=35.681517&longitude1=139.766057&latitude2=35.261577&longitude2=139.019892" )
  3. root = json.loads( r.read() )
  4. length = root['OutputData']['geoLength']

今回の例では、東京駅(35.681517,139.766057)から箱根山(35.261577,139.019892)までの距離を計算してみました。 パラメーターの「ellipsoid」は世界測地系(GRS80)で距離を計算するか、日本測地系(bessel)で計算するかを決めています。