>  기사  >  Java  >  Java에서 위도-경도 점을 사용하여 거리를 어떻게 계산하고 경계 상자를 생성합니까?

Java에서 위도-경도 점을 사용하여 거리를 어떻게 계산하고 경계 상자를 생성합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-02 04:30:29181검색

How do you calculate distance and create bounding boxes using latitude-longitude points in Java?

Java에서 위도-경도 점을 사용하여 거리 및 경계 상자 계산

이 질문은 두 점 사이의 거리를 측정하고 북쪽과 동쪽 방향 모두에서 주어진 거리를 고려하여 첫 번째 점 주변의 경계 상자입니다. 이를 달성하려면 Haversine 공식이라고도 알려진 Great Circle Distance 공식을 사용해야 합니다. 이 공식은 구형 지구에서의 거리를 정확하게 계산합니다.

아래는 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>

두 점 사이의 거리가 계산되면 좌표를 결정할 수 있습니다. 첫 번째 점의 위도와 경도에 지정된 거리를 더하여 경계 상자의 오른쪽 상단 모서리에 배치합니다.

예:

제공된 시작점 (37.7749, -122.4194)이고 거리가 0.5마일이면 경계 상자의 오른쪽 상단 모서리는 다음과 같이 계산됩니다.

<code class="java">double lat = 37.7749 + 0.009045; // Calculated using the Haversine formula
double lng = -122.4194 + 0.012990; // Calculated using the Haversine formula</code>

결과 경계 상자는 좌표로 정의됩니다. (37.7749 , -122.4194) 및 (lat, lng)

위 내용은 Java에서 위도-경도 점을 사용하여 거리를 어떻게 계산하고 경계 상자를 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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