예제 #1
0
        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;
        }
예제 #2
0
        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;
        }