質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2845閲覧

pythonによる緯度経度から距離を算出するプログラムにおいて計算が合わない時がある

Tera0724

総合スコア18

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/10/22 05:10

現在、2地点の(緯度, 経度)を入力すると距離を算出するプログラムを書いています。
プログラムは以下に示す通りです。

python

1def cal_distance(point_A, point_B): 2 # 緯度経度をラジアンに変換 3 pole_radius = 6356752.314245 # 極半径 4 equator_radius = 6378137.0 5 rad_pointA = np.radians(point_A) 6 rad_pointB = np.radians(point_B) 7 lat_pointA = rad_pointA[:, 0:1] 8 lon_pointA = rad_pointA[:, 1:2] 9 lat_pointB = rad_pointB[:, 0:1] 10 lon_pointB = rad_pointB[:, 1:2] 11 12 lat_difference = lat_pointA - lat_pointB # 緯度差 13 lon_difference = lon_pointA - lon_pointB # 経度差 14 lat_average = (lat_pointA + lat_pointB) / 2 # 平均緯度 15 16 e2 = (np.power(equator_radius, 2) - np.power(pole_radius, 2)) \ 17 / np.power(equator_radius, 2) # 第一離心率^2 18 w = np.sqrt(1- e2 * np.power(np.sin(lat_average), 2)) 19 20 m = equator_radius * (1 - e2) / np.power(w, 3) # 子午線曲率半径 21 22 n = equator_radius / w # 卯酉線曲半径 23 24 distance = np.sqrt(np.power(m * lat_difference, 2) \ 25 + np.power(n * lon_difference * np.cos(lat_average), 2)) # 距離計測 26 print(distance / 1000)

プログラムにおいて、すべての値が正の時(2点がともに北緯、東経にある場合)は国土地理院のサイトで計測した値に近い出力となるのですが、負の値(2点のどちらかが南緯or西経にある場合)において、上記サイトで計測した値と3000km近く離れた値となってしまいます。
数式を見直してみたのですが、自分では解決できませんでした。
数式等の説明については以下を参考にしました。
距離計算サイト
この問題について、解決法を教えていただけるとありがたいです。
数学的な質問となってしまい申し訳ありませんが、回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

国土地理院の解説のほうがより細かく場合分けしてあるのでそちらを参考にどうぞ

投稿2021/10/22 05:44

ozwk

総合スコア13553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問