锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

java实现CGS2000大地坐标和WGS84经纬度坐标互转,亲测准确

时间:2023-04-03 18:07:01 cgs传感器plc继电器

WGS84转CGS2000

根据实际情况设置中央子午线,参数为经度,纬度,输出值为经度(x),纬度(y)

    public static Point WGS84ToCGS2000(double longitude, double latitude)//参数 经度,纬度     {         Point pt = null;         double[] output = new double[2];         double longitude1,latitude1, longitude0, X0,Y0, xval,yval;         //NN在测量学中,用N表示曲率半径         //M测量学用大X表示子午线弧长。         //fai底点纬度由子午弧长反算公式得到,用于测量Bf表示         //R曲率半径,测量学里用Nf表示         double a,f, e2,ee, NN, T,C,A, M, iPI;         iPI = 0.0174532925199433; //3.1415926535898/180.0;         a=6378137.0; f=1/298.257222101; //CGCS2000坐标系参数         //a=6378137.0; f=1/298.2572236; //wgs84坐标系参数         longitude0 = 117./中央子午线 根据实际情况进行配置         longitude0 = longitude0 * iPI ;///中央子午线转换为弧度         longitude1 = longitude * iPI ; ///经度转化为弧度         latitude1 = latitude * iPI ; //纬度转换为弧度         e2=2*f-f*f;         ee=e2*(1.0-e2);         NN=a/Math.sqrt(1.0-e2*Math.sin(latitude1)*Math.sin(latitude1));         T=Math.tan(latitude1)*Math.tan(latitude1);         C=ee*Math.cos(latitude1)*Math.cos(latitude1);         A=(longitude1-longitude0)*Math.cos(latitude1);         M=a*((1-e2/4-3*e2*e2/64-5*e2*e2*e2/256)*latitude1-(3*e2/8 3*e2*e2/32 45*e2*e2                 *e2/1024)*Math.sin(2*latitude1)                  (15*e2*e2/256 45*e2*e2*e2/1024)*Math.sin(4*latitude1)-(35*e2*e2*e2/3072)*Math.sin(6*latitude1));         xval = NN*(A (1-T C)*A*A*A/6 (5-18*T T*T 72*C-58*ee)*A*A*A*A*A/120);         yval = M NN*Math.tan(latitude1)*(A*A/2 (5-T 9*C 4*C*C)*A*A*A*A/24                  (61-58*T T*T 600*C-330*ee)*A*A*A*A*A*A/720);         X0 = 500000L;         Y0 = 0;         xval = xval X0; yval = yval Y0;          //转换为投影         output[0] = xval;         output[1] = yval;         pt = new Point(output[0],output[1]);         return pt;     }

CGS2000转WGS84

根据实际情况设置中央子午线,输入参数为纬度,经度,输出result的顺序为result[0]纬度(y),result[1]经度(x)

private static double formatby6(double num) {         String result = String.format("%.6f", num);         return Double.valueOf(result);     }     //2000转84     public static Point CGS2000ToWGS84(double X, double Y) {         Point pt = null;         double L0 = 117.//中央子午线应根据实际情况设置         double lat ,lon;         Y-=500000;         double []  result  = new double[2];         double iPI = 0.0174532925199433;//pi/180         double a = 6378137.0; //长半轴 m         double b = 6356752.31414; //短半轴 m         double f = 1/298.257222101;//扁率 a-b/a         double e = 0.0818191910428; //第一偏心率 Math.sqrt(5)         double ee = Math.sqrt(a*a-b*b)/b; //第二偏心率         double bf = 0; ///底点纬度         double a0 = 1 (3*e*e/4)   (45*e*e*e*e/64)   (175*e*e*e*e*e*e/256)   (11025*e*e*e*e*e*e*e*e/16384)   (43659*e*e*e*e*e*e*e*e*e*e/65536);         double b0 = X/(a*(1-e*e)*a0);         double c1 = 3*e*e/8  3*e*e*e*e/16   213*e*e*e*e*e*e/2048   255*e*e*e*e*e*e*e*e/4096;         double c2 = 21*e*e*e*e/256   21*e*e*e*e*e*e/256   533*e*e*e*e*e*e*e*e/8192;         double c3 = 151*e*e*e*e*e*e*e*e/6144   151*e*e*e*e*e*e*e*e/4096;         double c4 = 1097*e*e*e*e*e*e*e*e/131072;         bf = b0   c1*Math.sin(2*b0)   c2*Math.sin(4*b0)  c3*Math.sin(6*b0)   c4*Math.sin(8*b0); // bf =b0 c1*sin2b0   c2*sin4b0   c3*sin6b0  c4*sin8b0  ...         double tf = Math.tan(bf);         double n2 = ee*ee*Math.cos(bf)*Math.cos(bf); ///bf余弦平方         double c = a*a/b;         double v=Math.sqrt(1  ee*ee*Math.cos(bf)*Math.cos(bf));         double mf = c/(v*v*v); //子午圈半径         double nf = c/v;//毛酉圈半径          //纬度计算         lat=bf-(tf/(2*mf)*Y)*(Y/nf) * (1-1/12*(5 3*tf*tf n2-9*n2*tf*tf)*(Y*Y/(nf*nf)) 1/360*(61 90*tf*tf 45*tf*tf*tf*tf)*(Y*Y*Y*Y/(nf*nf*nf*nf)));         ///经度偏差         lon=1/(nf*Math.cos(bf))*Y -(1/(6*nf*nf*nf*Math.cos(bf)))*(1 2*tf*tf  n2)*Y*Y*Y   (1/(120*nf*nf*nf*nf*nf*Math.cos(bf)))*(5 28*tf*tf 24*tf*tf*tf*tf)*Y*Y*Y*Y*Y;         result[0] =formatby6(lat/iPI);         result[1] =formatby6(L0 lon/iPI);         //System.out.println(result[1] "," result[0]);         pt = new Point(result[1],result[0]);         return pt;     }

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章