首頁 >Java >java教程 >如何使用 Java 中的經緯度點計算距離並建立邊界框?

如何使用 Java 中的經緯度點計算距離並建立邊界框?

Barbara Streisand
Barbara Streisand原創
2024-11-02 04:30:29286瀏覽

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

使用Java 中的經緯度點計算距離和邊界框

這個問題解決了測量兩點之間的距離並創建考慮到北向和東向的給定距離,圍繞第一個點的邊界框。為了實現這一點,我們需要使用大圓距離公式,也稱為半正矢公式。這個公式可以精確計算球形地球上的距離。

下面是半正弦公式的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