【swift】緯度経度から距離を求める方法

どうもこんにちは。iOSをメインに開発しているロッキーカナイです。

私は現在、地図系アプリを開発しているのですが、緯度経度から距離を求める必要があって色々調べたのですが、Swiftで紹介しているサイトが無かったので、ここで紹介したいと思います。

計算方法

今回は3つの計算方法を紹介します。

  • 球面三角法
  • ヒュベニの公式
  • 測地線航海算法

 

球面三角法

GoogleMapAPIのgeometory.computeDistanceBetweenでも使用されています。誤差はあるものの計算式が簡素なのが特徴です。

 

ヒュベニの公式

一般的に使用されている方法で、国土交通省の距離計算にも使われているようです。

 

測地線航海算法

 

まとめ

上記の各計算式を用いて比較してみます。

現在地の緯度経度を東京都庁(緯度:35.68944 経度:139.69167)にし、目的地の緯度経度を埼玉県庁(緯度:35.85694 経度:139.64889)にしました。

県庁所在地の位置情報はこちらより拝借致しました。

各計算式の結果が以下の通りです。

 

ちなみに国土交通省の県庁所在地間の距離のデータがありますので答え合わせをしてみたいと思います。

東京都庁と埼玉県庁の距離は19.0kmとあるので、球面三角法とヒュベニの公式が近い値となりました。もしかしたら測地線航海算法の計算に誤りがあるかも。。。

今開発しているアプリでは計算方法がシンプルな球面三角法を使用する事になりそうです。

ではー

投稿者プロフィール

ロッキーカナイ
ロッキーカナイ
iOSをメインに、SwiftやObjective-C言語の開発をしてます。趣味は猫と戯れる事、PHPを使ったサイト作成やAndroidの開発もしております。ちなみに名前のロッキーカナイはよく昼飯を食べる所w