본문 바로가기
Programming/Python

파이썬 haversine 위경도 거리 계산하기

by 코딩하는 금융인 2021. 11. 19.

안녕하세요.

오늘은 위도·경도 데이터를 이용해서 두 지점간의 거리를 구해주는 haversine 패키지에 대해서 알아보겠습니다.

 

 haversine 정의

▣ 하버사인(haversine) 공식이란?

하버사인(haversine) 공식은 평면이 아닌 둥근 지구표면에 있는 두 지점 사이의 직선 거리를 구하는 방법입니다.

출처: 위키피디아

 

 haversine 활용

▣ 라이브러리 설치 및 불러오기

## 라이브러리 설치
pip install haversine

## 라이브러리 불러오기
from haversine import haversine, Unit

 

거리 계산해보기

# 위경도 입력
lyon = (45.7597, 4.8422) # (latitude, longtitude)
paris = (48.8567, 2.3508)

# 거리 계산
haversine(lyon, paris, unit = 'mi')
# >>> 243.71250609539814

unit = ' '을 통해 출력값 단위 정할 수 있으며 단위는 다음과 같습니다.

단위 unit = 단위 unit = 
FEET ft INCHES in
KILOMETERS km METERS m
MILES mi NAUTICAL_MILES nmi

 

데이터 적용 활용사례

# Sample Data : hb_city

hb_city hb_lat hb_lng
Eixample 41.3944 2.15003
Caleta de Fuste 28.3985 -13.8547
Puerto de la Cruz 28.4174 -16.5423
Sevilla 37.3875 -6.00786
Lisboa 38.7271 -9.14621
Vilamoura 37.0761 -8.11759
Playa de las Americas 28.0531 -16.7301

 

# Sample Data : hc_city

hc_city hc_lat hc_lng
Belek 36.8419 31.1009
Pamucak 37.9326 27.2789
Palmanova 39.5253 2.5421
Old City 41.0045 28.9801
Marmaris 36.8408 28.2498
Playa Blanca 28.8636 -13.823
Port d' Alcudia 39.8383 3.13103

 

# Python Code

from haversine import haversine
import openpyxl

## 데이터 다운로드
df = pd.read_excel('C:/Users/코딩하는 금융인/Desktop/hb_city.xlsx')
df2 = pd.read_excel('C:/Users/코딩하는 금융인/Desktop/hc_city.xlsx')

distance_compare_list = []

## for문으로 비교
for i in range(df.shape[0]):
    hbl = (df["hb_lat"][i], df["hb_lng"][i])
    hcl = (df2["hc_lat"][i], df2["hc_lng"][i])
    result = haversine(hbl, hcl, unit='m')
    distance_compare_list.append(result)

## 출력
print(distance_compare_list)

# >> [2535940.051371611, 3938401.011160537, 2142613.458317287, 3021362.361718228, 3270245.5447358205, 1056424.5235224082, 2243921.2321133437]
반응형

댓글