👋 들어가기전
- python스럽게 개발 전반적인 지식을 다음 페이지에 모아두고 있습니다. 필요시 확인하세요~
2022.07.19 - [Python/파이썬스럽게 개발하기] - [python] 파이썬스럽게 개발하기 다수의 링크
🚨 급한사람!! 이거만 보세요
- haversine은 두개 이상의 점(위도, 경도)를 이용하여 거리를 구하는 모듈이다.
- lyon = (45.7597, 4.8422) , paris = (48.8567, 2.3508)
- haversine(lyon, paris) -> 392.2172595594006km
- 설치
pip install haversine
- 사용법
from haversine import haversine
lyon = (45.7597, 4.8422) # (lat, lon)
paris = (48.8567, 2.3508) # (lat, lon)
seoul = (37.541, 126.986) # (lat, lon)
haversine(lyon, paris) # -> 392.2172595594006 # km
- 성능 최적화(haversine과 for문을 조합하는것 보다 데이터 개수가 늘어 날때마다 매우 빨라짐)
from haversine import haversine_vector, Unit
lyon = (45.7597, 4.8422) # (lat, lon)
london = (51.509865, -0.118092)
paris = (48.8567, 2.3508)
new_york = (40.7033962, -74.2351462)
haversine_vector([lyon, london], [paris, new_york], Unit.KILOMETERS, comb=True)
0. haversine 이란?
- 두 점 사이의 거리를 구하는것은 피타고라스 정리를 사용하면 간단하게 구할 수 있습니다.
- 하지만 지구는 둥글기 때문에 구하는 방법이 조금 다릅니다. 이떄 사용하는 공식이 하버사인 공식입니다.
- 하버사인을 직접 구하는 공식은 다음과 같습니다.
- 다행히 Balthazar Rouberol라는 분께서 하버사인을 구하는 파이썬 모듈을 오픈소스로 배포 해놓았습니다.
- 설치
pip install haversine
1.Python haversine 두 지점간의 거리 구하기
- haversine은 두개 이상의 점(위도, 경도)를 이용하여 거리를 구하는 모듈이다.
- 위도의 범위는 -90~90, 경도의 범위는 -180~180 사이여야한다.
- 벗어난다면 에러가 난다.
from haversine import haversine, Unit
lyon = (45.7597, 4.8422) # (lat, lon)
paris = (48.8567, 2.3508)
haversine(lyon, paris)
>> 392.2172595594006 # in kilometers
haversine(lyon, paris, unit=Unit.MILES)
>> 243.71201856934454 # in miles
# 단어의 약어를 사용하여 단위를 설정 가능
haversine(lyon, paris, unit='mi')
>> 243.71201856934454 # in miles
haversine(lyon, paris, unit=Unit.NAUTICAL_MILES)
>> 211.78037755311516 # in nautical miles
2.Python haversine 단위
- haversine 모듈에서 제공하는 단위
- km, Unit.KILOMETERS
- m, Unit.METERS
- mi, Unit.MILES
- nmi, Unit.NAUTICAL_MILES
- ft, Unit.FEET
- in, Unit.INCHES
- rad, Unit.RADIANS
- deg, Unit.DEGREES
- 모든 단위를 확인하는 방법
import haversine
print(tuple(haversine.Unit))
(<Unit.KILOMETERS: 'km'>, <Unit.METERS: 'm'>,
<Unit.MILES: 'mi'>, <Unit.NAUTICAL_MILES: 'nmi'>,
<Unit.FEET: 'ft'>, <Unit.INCHES: 'in'>, <Unit.RADIANS: 'rad'>, <Unit.DEGREES: 'deg'>)
3. Python haversine 역 공식(Inverse Haversine Formula)
- 시작점을 기준으로 주어진 벡터(거리 및 방향)를 계산한다.
- 시작점 - 튜플 (위도, 경도)
- 거리 - 정수
- 방향
- 명시적으로 8개의 방향을 지정할 수 있음
- cardinal (north, east, south, west)
- intercardinal (northeast, southeast, southwest, northwest)
- 라디안으로 표시된 각도도 구할 수 있음
- 명시적으로 8개의 방향을 지정할 수 있음
4.Python haversine 성능 최적화(Combine matrix)
- 행렬 두개를 이용하여 성능을 최적화 할 수 있음
- 성능 최적화(haversine과 for문을 조합하는것 보다 데이터 개수가 늘어 날때마다 매우 빨라짐)
- 데이터 개수의 따라 1.1 ~ 2배 그 이상 성능향상 가능
from haversine import haversine_vector, Unit
lyon = (45.7597, 4.8422) # (lat, lon)
london = (51.509865, -0.118092)
paris = (48.8567, 2.3508)
new_york = (40.7033962, -74.2351462)
haversine_vector([lyon, london], [paris, new_york], Unit.KILOMETERS, comb=True)
>> array([[ 392.21725956, 343.37455271],
[6163.43638211, 5586.48447423]])
https://pypi.org/project/haversine/
'Python > 파이썬스럽게 개발하기' 카테고리의 다른 글
[python] mimesis - 파이썬 mock 데이터 (0) | 2022.08.18 |
---|---|
[python] *args and **kwargs (0) | 2022.07.19 |
[python] 파이썬스럽게 개발하기 다수의 링크 (0) | 2022.07.19 |
[python] itertools (0) | 2022.03.17 |
[Python3] 동시성과 병렬성 (0) | 2021.04.16 |