首页  >  文章  >  Java  >  如何使用 Java 中的经纬度点计算距离并创建边界框?

如何使用 Java 中的经纬度点计算距离并创建边界框?

Barbara Streisand
Barbara Streisand原创
2024-11-02 04:30:29174浏览

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