【近傍分析】緯度軽度から指定範囲の場所を抽出する
Aテーブルにある緯度経度と、Bテーブルにある緯度経度を総当たりさせて、Bの事業所の半径250m圏内にあるA事業所を抽出したい。
geopy
を使用
!pip install geopy
コード
import pandas as pd A = pd.read_csv('A.csv') B = pd.read_csv('B.csv') A_list = hp.values.tolist() B_list = ph.values.tolist() from geopy.distance import geodesic match_lists = [] for B_item in B_list: B_id = B_item[0] B_lat = B_item[1] B_lng = B_item[2] for A_item in A_list: match_list = {} A_id = A_item[0] A_lat = A_item[1] A_lng = A_item[2] bStation = (B_lat,B_lng) aStation = (A_lat,a_lng) dis = geodesic(bStation,aStation).m if(dis < 250): match_list['A_id'] = A_id match_list['B_id'] = B_id match_list['distance'] = dis match_lists.append(match_list) else: pass df = pd.DataFrame(match_lists)
ロジックは簡単で、単純にループで総当たりさせて、
geodesic(bStation,aStation).m
で、2点間の距離をだした。
データフレームには、250m範囲の事業所が縦持ちで入っているので、商圏分析的に使用できる。