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; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。