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 중국어 웹사이트의 기타 관련 기사를 참조하세요!