Pythonを使用して点と線の距離を計算したいのですが、方法がわかりません。
こちらのサイトを拝見し、距離を計算するための公式を知ることはできました。
私は現在、地図上に目標とする座標を打ち、その点々でできた線を実際に歩いてみてGPSの座標を取得しています。
ですので、目標とする座標でできた線と、実際に歩いてできた座標のデータがあります。
上でリンクを貼ったサイトの図を流用して説明すると、点a
と点b
が目標とする座標で、それらの間に実際の座標の点c
がたくさんあるような感じです。
また、目標の線も実際の座標も一方向だけに向かって進んでいるのではなく、途中で折り返す部分があったりして、どうやって処理すればいいか思い浮かびません。
今のところ、目標地点の座標が入っているリストをforループで回して、その中でさらに実際の座標が入っているリストをforループで回してます。二つ目のforループの中で、リンク先の公式を使い距離を求めています。
ですが、思っているような動きになりませんでした。
Python3
1 2import numpy as np 3 4target_list = [(,), ..., (,)] # 座標のタプルのリストになっている 5actual_list = [(,),....,(,)] # 座標のタプルのリストになっている 6block = 0 7length = 0 8 9for a in range(len(target_list) - 1): 10 for point in actual_list: 11 u = np.array([target_list[block+1][0] - target_list[block][0], target_list[block+1][1] - target_list[block][1]]) 12 v = np.array([point[0] - target_list[block][0], point[1] - target_list[block][1]]) 13 14 distance = abs(np.cross(u, v) / np.linalg.norm(u)) 15 if length < distance: 16 length = distance 17 # if文で条件分岐してblockをインクリメントする?
以上のような流れになるように思ったのですが、block
を進めていくためのインクリメントの方法もよくわかりません。
ループの回し方がおかしいのだと思うのですが、どのように考えればいいのでしょうか?
