> 백엔드 개발 > 파이썬 튜토리얼 > Haversine 공식을 사용하여 GPS 거리와 방위를 어떻게 정확하게 계산할 수 있습니까?

Haversine 공식을 사용하여 GPS 거리와 방위를 어떻게 정확하게 계산할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-02 08:42:11
원래의
1005명이 탐색했습니다.

How Can I Accurately Calculate GPS Distance and Bearing Using the Haversine Formula?

GPS 계산을 위한 Haversine 공식: 거리 및 방위

문제:

거리 계산 두 GPS 지점 사이의 방위에는 Haversine 거리 공식을 활용하는 경우가 많습니다. 그러나 올바른 방위를 구할 때 특히 음수 값이 생성되는 경우 문제가 발생할 수 있습니다.

해결책:

거리를 계산하려면 Haversine 공식을 사용할 수 있습니다.

from math import radians, cos, sin, asin, sqrt

def haversine(lon1, lat1, lon2, lat2):
    """
    Calculate the great circle distance in kilometers between two points 
    on the earth (specified in decimal degrees)
    """
    # convert decimal degrees to radians 
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])

    # haversine formula 
    dlon = lon2 - lon1 
    dlat = lat2 - lat1 
    a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
    c = 2 * asin(sqrt(a)) 
    r = 6371 # Radius of earth in kilometers. Use 3956 for miles. Determines return value units.
    return c * r
로그인 후 복사

베어링을 결정하려면 베어링 변수를 다음과 같이 조정합니다. 다음은 다음과 같습니다.

Bearing = atan2(sin(lon2-lon1)*cos(lat2), cos(lat1)*sin(lat2) - sin(lat1)*cos(lat2)*cos(lon2-lon1))
Bearing = degrees(Bearing)
로그인 후 복사

이 수정으로 베어링이 0도에서 360도 사이에 놓이게 됩니다.

위 내용은 Haversine 공식을 사용하여 GPS 거리와 방위를 어떻게 정확하게 계산할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿