java 地心坐标系(ECEF)和WGS-84坐标系(WGS84)互转

      2019-10-13 16:57      JAVA编程
这篇文章主要介绍了java 地心坐标系(ECEF)和WGS-84坐标系(WGS84)互转的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

本文介绍了java 地心坐标系(ECEF)和WGS-84坐标系(WGS84)互转的实现,分享给大家,具体如下:

 public static String WGS84toECEF(double latitude, double longitude, double height)  {    double X;    double Y;    double Z;    double a = 6378137;    double b = 6356752.314245;    double E = (a * a - b * b) / (a * a);    double COSLAT = Math.cos(latitude * Math.PI / 180);    double SINLAT = Math.sin(latitude * Math.PI / 180);    double COSLONG = Math.cos(longitude * Math.PI / 180);    double SINLONG = Math.sin(longitude * Math.PI / 180);    double N = a / (Math.sqrt(1 - E * SINLAT * SINLAT));    double NH = N + height;    X = NH * COSLAT * COSLONG;    Y = NH * COSLAT * SINLONG;    Z = (b * b * N / (a * a) + height) * SINLAT;    return X + "," + Y + "," + Z;  }    public static String ECEFtoWGS84(double x, double y, double z)   {    double a, b, c, d;    double Longitude;//经度    double Latitude;//纬度    double Altitude;//海拔高度    double p, q;    double N;    a = 6378137.0;    b = 6356752.31424518;    c = Math.sqrt(((a * a) - (b * b)) / (a * a));    d = Math.sqrt(((a * a) - (b * b)) / (b * b));    p = Math.sqrt((x * x) + (y * y));    q = Math.atan2((z * a), (p * b));    Longitude = Math.atan2(y, x);    Latitude = Math.atan2((z + (d * d) * b * Math.pow(Math.sin(q), 3)), (p - (c * c) * a * Math.pow(Math.cos(q), 3)));    N = a / Math.sqrt(1 - ((c * c) * Math.pow(Math.sin(Latitude), 2)));    Altitude = (p / Math.cos(Latitude)) - N;    Longitude = Longitude * 180.0 / Math.PI;    Latitude = Latitude * 180.0 / Math.PI;    return Longitude + "," + Latitude + "," + Altitude;  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。