簡體   English   中英

如何計算Java中兩個gps點之間的距離?

[英]How can i calculate the distance between two gps points in Java?

我使用了這段代碼,但它不起作用:

需要兩個gps坐標之間的距離,如41.1212,11.2323英里(Java)

double d2r = (180 / Math.PI);
double distance = 0;

try{
    double dlong = (endpoint.getLon() - startpoint.getLon()) * d2r;
    double dlat = (endpoint.getLat() - startpoint.getLat()) * d2r;
    double a =
        Math.pow(Math.sin(dlat / 2.0), 2)
            + Math.cos(startpoint.getLat() * d2r)
            * Math.cos(endpoint.getLat() * d2r)
            * Math.pow(Math.sin(dlong / 2.0), 2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    double d = 6367 * c;

    return d;

} catch(Exception e){
    e.printStackTrace();
}

經度和緯度以度(0-360)給出。 如果要將度數轉換為弧度(0-2π),則需要除以360並乘以2π(或等效地乘以π/ 180 )。 但是,在你的代碼中, 你乘以180 /π

也就是說,改變

double d2r = (180 / Math.PI);

double d2r = Math.PI / 180;

看看Geocalc

Coordinate lat = new GPSCoordinate(41, .1212);
Coordinate lng = new GPSCoordinate(11, .2323);
Point point = new Point(lat, lng);

lat = new DegreeCoordinate(51.4613418);
lng = new DegreeCoordinate(-0.3035466);
Point point2 = new Point(lat, lng);
System.out.println("Distance is " + EarthCalc.getDistance(point2, point) / 1000 + " km");

全長1448.7325760822912千米

我為我的一個項目寫了那個庫。

來自http://www.androidsnippets.com/distance-between-two-gps-coordinates-in-meter的解決方案。

僅當點足夠接近以至於可以省略地球不是常規形狀時才有效。

private double gps2m(float lat_a, float lng_a, float lat_b, float lng_b) {
    float pk = (float) (180/3.14169);

    float a1 = lat_a / pk;
    float a2 = lng_a / pk;
    float b1 = lat_b / pk;
    float b2 = lng_b / pk;

    float t1 = FloatMath.cos(a1)*FloatMath.cos(a2)*FloatMath.cos(b1)*FloatMath.cos(b2);
    float t2 = FloatMath.cos(a1)*FloatMath.sin(a2)*FloatMath.cos(b1)*FloatMath.sin(b2);
    float t3 = FloatMath.sin(a1)*FloatMath.sin(b1);
    double tt = Math.acos(t1 + t2 + t3);

    return 6366000*tt;
}
//

以米為單位的兩個GPS坐標之間的距離

兩點之間的距離(以及許多其他有用的東西)可以在以下網址找到: http//www.movable-type.co.uk/scripts/latlong.html

可以使用Esri Geometry庫計算距離: geodesicDistanceOnWGS84

我認為JTS還有一種計算距離的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM