>Java >java지도 시간 >위도, 경도, 고도를 사용하여 두 점 사이의 거리를 정확하게 계산하는 방법은 무엇입니까?

위도, 경도, 고도를 사용하여 두 점 사이의 거리를 정확하게 계산하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-02 18:44:311084검색

How to Accurately Calculate Distance Between Two Points Using Latitude, Longitude, and Altitude?

위도와 경도를 사용하여 두 점 사이의 거리 계산

문제:

제공된 Java 코드 스니펫은 두 점 사이의 거리를 계산합니다. 위도와 경도를 기준으로 한 두 개의 점입니다. 문제는 특히 상당한 거리에 걸쳐 여러 점이 있는 경우 사용된 공식이 약간 부정확한 결과를 생성할 수 있다는 것입니다.

해결책:

이 문제를 해결하려면 다음을 따르세요. 높이 차이도 고려하는 Haversine 메소드의 Java 구현:

<code class="java">/**
 * Calculate distance between two points in latitude and longitude taking
 * into account height difference. If you are not interested in height
 * difference pass 0.0. Uses Haversine method as its base.
 *
 * lat1, lon1 Start point lat2, lon2 End point el1 Start altitude in meters
 * el2 End altitude in meters
 * @returns Distance in Meters
 */
public static double distance(double lat1, double lat2, double lon1,
        double lon2, double el1, double el2) {

    final int R = 6371; // Radius of the earth

    double latDistance = Math.toRadians(lat2 - lat1);
    double lonDistance = Math.toRadians(lon2 - lon1);
    double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
            + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
            * Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    double distance = R * c * 1000; // convert to meters

    double height = el1 - el2;

    distance = Math.pow(distance, 2) + Math.pow(height, 2);

    return Math.sqrt(distance);
}</code>

이 구현은 높이 차이를 통합하는 동시에 거리를 정확하게 계산합니다. 두 지점의 높이 차이를 고려하면서 Haversine 방식을 기초로 사용합니다.

위 내용은 위도, 경도, 고도를 사용하여 두 점 사이의 거리를 정확하게 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.