Home >Java >javaTutorial >How do you calculate distance and create bounding boxes using latitude-longitude points in Java?
Calculating Distance and Bounding Boxes Using Latitude-Longitude Points in Java
This question addresses the need to measure the distance between two points and create a bounding box around the first point, considering a given distance in both the north and east directions. To achieve this, we need to employ the great circle distance formula, also known as the Haversine formula. This formula accurately calculates distances on a spherical Earth.
Below is a Java implementation of the Haversine formula:
<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>
Once the distance between the two points is calculated, we can determine the coordinates of the top-right corner of the bounding box by adding the given distance to both the latitude and longitude of the first point.
Example:
Given the starting point (37.7749, -122.4194) and a distance of 0.5 miles, the top-right corner of the bounding box would be calculated as follows:
<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>
The resulting bounding box would be defined by the coordinates: (37.7749, -122.4194) and (lat, lng).
The above is the detailed content of How do you calculate distance and create bounding boxes using latitude-longitude points in Java?. For more information, please follow other related articles on the PHP Chinese website!