public static double RD2lng(double b, double c) { var lngpqL = new pqK[13]; for (var i = 0; i < lngpqL.Length; i++) lngpqL[i] = new pqK(); lngpqL[1].p = 1; lngpqL[1].q = 0; lngpqL[1].K = 5260.52916; lngpqL[2].p = 1; lngpqL[2].q = 1; lngpqL[2].K = 105.94684; lngpqL[3].p = 1; lngpqL[3].q = 2; lngpqL[3].K = 2.45656; lngpqL[4].p = 3; lngpqL[4].q = 0; lngpqL[4].K = -0.81885; lngpqL[5].p = 1; lngpqL[5].q = 3; lngpqL[5].K = 0.05594; lngpqL[6].p = 3; lngpqL[6].q = 1; lngpqL[6].K = -0.05607; lngpqL[7].p = 0; lngpqL[7].q = 1; lngpqL[7].K = 0.01199; lngpqL[8].p = 3; lngpqL[8].q = 2; lngpqL[8].K = -0.00256; lngpqL[9].p = 1; lngpqL[9].q = 4; lngpqL[9].K = 0.00128; lngpqL[10].p = 0; lngpqL[10].q = 2; lngpqL[10].K = 2.2E-4; lngpqL[11].p = 2; lngpqL[11].q = 0; lngpqL[11].K = -2.2E-4; lngpqL[12].p = 5; lngpqL[12].q = 0; lngpqL[12].K = 2.6E-4; const double lng0 = 5.38720621; var a = 0.0; var dX = 1E-5 * (b - X0); var dY = 1E-5 * (c - Y0); for (var i = 1; 13 > i; i++) a += lngpqL[i].K * Math.Pow(dX, lngpqL[i].p) * Math.Pow(dY, lngpqL[i].q); return lng0 + a / 3600; }
public static double RD2lat(double b, double c) { var latpqK = new pqK[12]; for (int i = 0; i < latpqK.Length; i++) latpqK[i] = new pqK(); latpqK[1].p = 0; latpqK[1].q = 1; latpqK[1].K = 3235.65389; latpqK[2].p = 2; latpqK[2].q = 0; latpqK[2].K = -32.58297; latpqK[3].p = 0; latpqK[3].q = 2; latpqK[3].K = -0.2475; latpqK[4].p = 2; latpqK[4].q = 1; latpqK[4].K = -0.84978; latpqK[5].p = 0; latpqK[5].q = 3; latpqK[5].K = -0.0665; latpqK[6].p = 2; latpqK[6].q = 2; latpqK[6].K = -0.01709; latpqK[7].p = 1; latpqK[7].q = 0; latpqK[7].K = -0.00738; latpqK[8].p = 4; latpqK[8].q = 0; latpqK[8].K = 0.0053; latpqK[9].p = 2; latpqK[9].q = 3; latpqK[9].K = -3.9E-4; latpqK[10].p = 4; latpqK[10].q = 1; latpqK[10].K = 3.3E-4; latpqK[11].p = 1; latpqK[11].q = 1; latpqK[11].K = -1.2E-4; const double lat0 = 52.1551744; var a = 0.0; var dX = 1E-5 * (b - X0); var dY = 1E-5 * (c - Y0); for (var i = 1; 12 > i; i++) a += latpqK[i].K * Math.Pow(dX, latpqK[i].p) * Math.Pow(dY, latpqK[i].q); return lat0 + a / 3600.0; }