>Java >java지도 시간 >Java에서 위도와 경도를 사용하여 거리와 경계 상자 좌표를 계산하는 방법은 무엇입니까?

Java에서 위도와 경도를 사용하여 거리와 경계 상자 좌표를 계산하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-02 05:42:29610검색

How to Calculate Distance and Bounding Box Coordinates Using Latitude and Longitude in Java?

위도/경도를 사용하여 Java에서 거리 및 경계 상자 좌표 계산

두 위도와 경도 지점 사이의 거리를 측정하고 경계 만들기 주어진 지점 주위의 상자는 매핑 및 위치 기반 응용 프로그램에서 일반적인 작업입니다. 이러한 요구를 해결하기 위해 Java 개발자는 Haversine 공식을 활용하여 큰 원 거리를 정확하게 계산할 수 있습니다.

거리 계산

수학 방정식인 Haversine 공식은 다음을 정확하게 계산할 수 있습니다. 지구 표면의 두 지점 사이의 거리. 다음은 공식의 Java 구현입니다.

<code class="java">public static double distFrom(double lat1, double lng1, double lat2, double lng2) {
    double earthRadius = 3958.75; // miles (or 6371.0 kilometers)
    double dLat = Math.toRadians(lat2-lat1);
    double dLng = Math.toRadians(lng2-lng1);
    double sindLat = Math.sin(dLat / 2);
    double sindLng = Math.sin(dLng / 2);
    double a = Math.pow(sindLat, 2) + Math.pow(sindLng, 2)
            * Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2));
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    double dist = earthRadius * c;

    return dist;
    }</code>

경계 상자 생성

거리를 계산하면 북쪽 지점을 결정하여 경계 상자를 생성할 수 있습니다. 그리고 지정된 지점에서 지정된 거리만큼 동쪽으로 이동합니다. 다음 의사코드는 이 프로세스를 보여줍니다.

// Assuming distance is in miles

// Calculate North and East edges
northEdge = lat + (distance / 69);  // Divide by 69 to convert to degrees
eastEdge = lng + (distance / 53);   // Divide by 53 to convert to degrees

// Create bounding box coordinates
boundingBox = [lat, lng, northEdge, eastEdge]

위 내용은 Java에서 위도와 경도를 사용하여 거리와 경계 상자 좌표를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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