java 地心坐标系(ECEF)和WGS-84坐标系(WGS84)互转的实现
本文介绍了java地心坐标系(ECEF)和WGS-84坐标系(WGS84)互转的实现,分享给大家,具体如下:
publicstaticStringWGS84toECEF(doublelatitude,doublelongitude,doubleheight)
{
doubleX;
doubleY;
doubleZ;
doublea=6378137;
doubleb=6356752.314245;
doubleE=(a*a-b*b)/(a*a);
doubleCOSLAT=Math.cos(latitude*Math.PI/180);
doubleSINLAT=Math.sin(latitude*Math.PI/180);
doubleCOSLONG=Math.cos(longitude*Math.PI/180);
doubleSINLONG=Math.sin(longitude*Math.PI/180);
doubleN=a/(Math.sqrt(1-E*SINLAT*SINLAT));
doubleNH=N+height;
X=NH*COSLAT*COSLONG;
Y=NH*COSLAT*SINLONG;
Z=(b*b*N/(a*a)+height)*SINLAT;
returnX+","+Y+","+Z;
}
publicstaticStringECEFtoWGS84(doublex,doubley,doublez)
{
doublea,b,c,d;
doubleLongitude;//经度
doubleLatitude;//纬度
doubleAltitude;//海拔高度
doublep,q;
doubleN;
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;
returnLongitude+","+Latitude+","+Altitude;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。