Haversine

Ryu Jihoon·2024년 10월 18일
post-thumbnail

Haversine Library 사용법 정리

1. Haversine 공식이란?

Haversine 공식은 두 지점 간의 위도와 경도를 사용하여, 구형 지구 상에서의 대원거리(두 점 사이의 최단 거리)를 계산하는 공식입니다. haversine 라이브러리는 이를 손쉽게 계산할 수 있도록 도와줍니다.

2. Haversine Library 설치

pip install haversine

3. Haversine 사용 예시

from haversine import haversine, Unit

# 두 지점의 위도와 경도 (서울과 부산)
point1 = (37.5665, 126.9780)  # 서울
point2 = (35.1796, 129.0756)  # 부산

# 두 지점 간의 거리 계산 (킬로미터 단위, 기본값)
distance_km = haversine(point1, point2)
print(f"Distance: {distance_km} km")

# 두 지점 간의 거리 계산 (미터 단위)
distance_m = haversine(point1, point2, unit=Unit.METERS)
print(f"Distance: {distance_m} meters")

4. 거리 단위 설정

haversine 함수의 단위는 기본적으로 킬로미터(km)입니다. 다른 단위로 변환하려면, Unit 클래스를 사용하여 단위를 설정할 수 있습니다.

  • Unit.KILOMETERS (기본값)
  • Unit.METERS
  • Unit.MILES
  • Unit.NAUTICAL_MILES

5. Haversine 공식을 사용한 거리 계산 원리

Haversine 공식은 두 위도 및 경도의 차이를 이용해 구형 지구 상에서의 거리를 계산합니다. 공식은 다음과 같습니다:

a=sin2(Δϕ2)+cos(ϕ1)cos(ϕ2)sin2(Δλ2)c=2atan2(a,1a)d=Rc\begin{aligned} a& = \sin^2\left(\frac{\Delta \phi}{2}\right) + \cos(\phi_1) \cdot \cos(\phi_2) \cdot \sin^2\left(\frac{\Delta \lambda}{2}\right)\\ c& = 2 \cdot \text{atan2}\left(\sqrt{a}, \sqrt{1-a}\right)\\ d& = R \cdot c \end{aligned}

여기서:

Δϕ\Delta \phi: 두 위도 간의 차이
Δλ\Delta \lambda: 두 경도 간의 차이
RR: 지구의 반경 (기본값: 6371km)
dd: 두 지점 간의 거리

6. Haversine을 사용한 벡터화 연산

벡터화된 연산을 사용하여 다수의 점들 사이의 거리를 효율적으로 계산할 수 있습니다. haversine 라이브러리를 사용하면 이를 쉽게 처리할 수 있습니다.

7. 사용 시 유의 사항

  • 위도와 경도를 (위도, 경도) 순으로 입력해야 합니다.
  • 거리 계산 시 필요한 단위가 있다면, unit 인자를 사용하여 설정할 수 있습니다.
profile
CSE Junior

0개의 댓글