안녕하세요.
오늘은 위도·경도 데이터를 이용해서 두 지점간의 거리를 구해주는 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]
반응형
'Programming > Python' 카테고리의 다른 글
파이썬 브라우저 구글 코랩 소개 및 사용법 (0) | 2022.03.18 |
---|---|
파이썬 리스트 중복 제거 (방법 및 예시) (0) | 2021.11.29 |
[Python] 순열, 조합 itertools 설명 및 예제 (0) | 2021.08.24 |
파이썬 문제 및 연습 사이트 추천 (5) | 2021.08.03 |
[파이썬] 유튜브 댓글 크롤링 (BTS MV) (3) | 2021.07.19 |
댓글