Beispiel #1
0
        public void TestDMStoDMS()
        {
            int    d, m;
            double s;

            SurMath.DMStoDMS(123.4052,
                             out d, out m, out s);
            Assert.AreEqual <int>(123, d);
            Assert.AreEqual <int>(40, m);
            Assert.AreEqual(52, s, 1e-8);

            SurMath.DMStoDMS(-123.4052,
                             out d, out m, out s);
            Assert.AreEqual <int>(-123, d);
            Assert.AreEqual <int>(-40, m);
            Assert.AreEqual(-52, s, 1e-8);

            SurMath.DMStoDMS(1.4000,
                             out d, out m, out s);
            Assert.AreEqual <int>(1, d);
            Assert.AreEqual <int>(40, m);
            Assert.AreEqual(0, s, 1e-8);

            SurMath.DMStoDMS(-1.4000,
                             out d, out m, out s);
            Assert.AreEqual <int>(-1, d);
            Assert.AreEqual <int>(-40, m);
            Assert.AreEqual(0, s, 1e-8);
        }
Beispiel #2
0
        public void TestBltoxy()
        {
            {
                //Spheroid BJ = new Spheroid(6378245, 298.3);

                IProj proj = new GaussProj(Spheroid.CreateBeiJing1954());

                double B = SurMath.DMStoRAD(21.58470845);
                double l = SurMath.DMStoRAD(2.25314880);
                proj.Bltoxy(B, l, out double x, out double y, out _, out _);
                //B = 21 ◦ 58 ′ 47.0845 ′′ ,L = 113 ◦ 25 ′ 31.4880 ′′ ,
                //x = 2433586.692,y = 250547.403
                Assert.AreEqual(2433586.692, x, 1e-3);
                Assert.AreEqual(250547.403, y, 1e-3);
            }

            {
                //B = 21 ◦ 58 ′ 47.0845 ′′ ,L = 113 ◦ 25 ′ 31.4880 ′′ ,
                //x = 2433586.692,y = 250547.403
                IProj proj = new GaussProj(Spheroid.CreateBeiJing1954());

                double B  = SurMath.DMStoRAD(21.58470845);
                double L  = SurMath.DMStoRAD(113.25314880);
                double L0 = SurMath.DMStoRAD(111);
                proj.BLtoXYKM(B, L, L0, 0, 0, out double x, out double y);

                Assert.AreEqual(2433586.692, x, 1e-3);
                Assert.AreEqual(250547.403, y, 1e-3);
            }
        }
Beispiel #3
0
        public void TestRadtoString()
        {
            string dms = SurMath.RadtoString(0.0234165007975906);

            Assert.AreEqual <string>("1¡ã20¡ä30¡å", dms);

            dms = SurMath.RadtoString(-0.0234165007975906);
            Assert.AreEqual <string>("-1¡ã20¡ä30¡å", dms);

            dms = SurMath.RadtoString(0.02908882086657220);
            Assert.AreEqual <string>("1¡ã40¡ä00¡å", dms);

            dms = SurMath.RadtoString(-0.02908882086657220);
            Assert.AreEqual <string>("-1¡ã40¡ä00¡å", dms);

            dms = SurMath.RadtoString(0.02908930568025330);
            Assert.AreEqual <string>("1¡ã40¡ä00.1¡å", dms);

            dms = SurMath.RadtoString(-0.02908930568025330);
            Assert.AreEqual <string>("-1¡ã40¡ä00.1¡å", dms);

            dms = SurMath.RadtoString(0.69580806988502100); //39 52 0.71672
            Assert.AreEqual <string>("39¡ã52¡ä00.71672¡å", dms);

            dms = SurMath.RadtoString(-0.69580806988502100); //-39 52 0.71672
            Assert.AreEqual <string>("-39¡ã52¡ä00.71672¡å", dms);
        }
Beispiel #4
0
        public void TestRadtoDMS()
        {
            var rad   = SurMath.DMStoRad(101.03201);
            var angle = SurMath.Rad2DMS(rad); // 1.763752656690170 // 101.03201

            Assert.AreEqual(101, angle.d);
            Assert.AreEqual(3, angle.m);
            Assert.AreEqual(20.1, angle.s, 1e-8);

            angle = SurMath.Rad2DMS(-1.763752656690170);
            Assert.AreEqual(-101, angle.d);
            Assert.AreEqual(-3, angle.m);
            Assert.AreEqual(-20.1, angle.s, 1e-8);

            angle = SurMath.Rad2DMS(0.0290888208665722);
            Assert.AreEqual(1, angle.d);
            Assert.AreEqual(40, angle.m);
            Assert.AreEqual(0, angle.s, 1e-8);

            angle = SurMath.Rad2DMS(-0.0290888208665722);
            Assert.AreEqual(-1, angle.d);
            Assert.AreEqual(-40, angle.m);
            Assert.AreEqual(0, angle.s, 1e-8);

            angle = SurMath.Rad2DMS(-0.0290936690033833000);
            Assert.AreEqual(-1, angle.d);
            Assert.AreEqual(-40, angle.m);
            Assert.AreEqual(-1, angle.s, 1e-8);
        }
Beispiel #5
0
        public void TestAzimuth()
        {
            double xA = 50342.464;
            double yA = 3423.232;
            double xB = 50289.874;
            double yB = 3528.978;
            var    az = SurMath.Azimuth(xA, yA, xB, yB);

            Assert.AreEqual <string>("116¡ã26¡ä32.102984¡å", SurMath.RadtoString(az.a));

            xA = 50289.874;
            yA = 3528.978;
            xB = 50342.464;
            yB = 3423.232;
            az = SurMath.Azimuth(xA, yA, xB, yB);
            Assert.AreEqual <string>("296¡ã26¡ä32.102984¡å", SurMath.RadtoString(az.a));

            xA = 50342.464;
            yA = 3423.232;
            xB = 50389.874;
            yB = 3528.978;
            az = SurMath.Azimuth(xA, yA, xB, yB);
            Assert.AreEqual <string>("65¡ã51¡ä05.295961¡å", SurMath.RadtoString(az.a));

            xA = 50389.874;
            yA = 3528.978;
            xB = 50342.464;
            yB = 3423.232;
            az = SurMath.Azimuth(xA, yA, xB, yB);
            Assert.AreEqual <string>("245¡ã51¡ä05.295961¡å", SurMath.RadtoString(az.a));
        }
Beispiel #6
0
        public void TestDMStoRad()
        {
            double rad = SurMath.DMStoRad(101.03201);

            Assert.AreEqual(1.763752656690170, rad, 1e-14);
            rad = SurMath.DMStoRad(-101.03201);
            Assert.AreEqual(-1.763752656690170, rad, 1e-14);

            rad = SurMath.DMStoRad(1.4001);
            Assert.AreEqual(0.0290936690033833000, rad, 1e-14);

            rad = SurMath.DMStoRad(1.4000);
            Assert.AreEqual(0.0290888208665722, rad, 1e-14);
            rad = SurMath.DMStoRad(-1.4000);
            Assert.AreEqual(-0.0290888208665722, rad, 1e-14);
        }
Beispiel #7
0
        public void TestxytoBl()
        {
            {
                //B = 21 ◦ 58 ′ 47.0845 ′′ ,L = 113 ◦ 25 ′ 31.4880 ′′ ,

                IProj proj = new GaussProj(Spheroid.CreateBeiJing1954());

                double x = 2433586.692, y = 250547.403;
                proj.xytoBl(x, y, out double B, out double l, out _, out _);

                B = SurMath.RADtoDMS(B);
                l = SurMath.RADtoDMS(l);

                Assert.AreEqual(21.58470845, B, 1e-8);
                Assert.AreEqual(2.25314880, l, 1e-8);
            }
        }
        public void TestBLtoXY()
        {
            {
                double B  = SurMath.DMStoRad(21.58470845);
                double L  = SurMath.DMStoRad(113.25314880);
                double L0 = SurMath.DMStoRad(111);

                //Ellipsoid ellipsoid = new Ellipsoid(6378245, 298.3);
                Ellipsoid ellipsoid = Ellipsoid.CreateBeijing1954();
                IProj     proj      = new GaussProj(ellipsoid);
                var       xy        = proj.BLtoXY(B, L, L0, 0, 0);

                Assert.AreEqual(2433586.692, xy.X, 0.001);
                Assert.AreEqual(250547.403, xy.Y, 0.001);
            }

            //数据来自《大地测量学基础》2版P193
            {
                double B  = SurMath.DMStoRad(17.33557339);
                double L  = SurMath.DMStoRad(119.15521159);
                double L0 = SurMath.DMStoRad(117);

                Ellipsoid ellipsoid = Ellipsoid.CreateBeijing1954();
                IProj     proj      = new GaussProj(ellipsoid);
                var       xy        = proj.BLtoXY(B, L, L0, 0, 0);

                Assert.AreEqual(1944359.6070, xy.X, 0.003);
                Assert.AreEqual(240455.4563, xy.Y, 0.001);
            }

            //数据来自《大地测量学基础》2版P193
            {
                double B  = SurMath.DMStoRad(17.33557339);
                double L  = SurMath.DMStoRad(119.15521159);
                double L0 = SurMath.DMStoRad(117);

                Ellipsoid ellipsoid = Ellipsoid.CreateXiAn1980();
                IProj     proj      = new GaussProj(ellipsoid);
                var       xy        = proj.BLtoXY(B, L, L0, 0, 0);

                Assert.AreEqual(1944325.8030, xy.X, 0.001);
                Assert.AreEqual(240451.5085, xy.Y, 0.001);
            }
        }
Beispiel #9
0
        public void TestAzimuth()
        {
            double a = SurMath.Azimuth(12.234, 23.1234,
                                       13.2323, 24.232332);

            Assert.AreEqual(0.837851107, a, 1e-9);

            a = SurMath.Azimuth(12.234, 23.1234,
                                3.2323, 24.232332);
            Assert.AreEqual(3.019018832, a, 1e-9);

            a = SurMath.Azimuth(12.234, 23.1234,
                                3.2323, 4.232332);
            Assert.AreEqual(4.267712913, a, 1e-9);

            a = SurMath.Azimuth(12.234, 23.1234,
                                13.2323, 4.232332);
            Assert.AreEqual(4.765184951, a, 1e-9);
        }
Beispiel #10
0
        public void TestRAD2DMS()
        {
            int    d, m;
            double s;

            SurMath.RADtoDMS(0.410855952558766,
                             out d, out m, out s);
            Assert.AreEqual <int>(23, d);
            Assert.AreEqual <int>(32, m);
            Assert.AreEqual(25.12345, s, 1e-8);


            SurMath.RADtoDMS(-0.410855952558766,
                             out d, out m, out s);
            Assert.AreEqual <int>(-23, d);
            Assert.AreEqual <int>(-32, m);
            Assert.AreEqual(-25.12345, s, 1e-8);
            //Assert.AreEqual("-23°32′25.12345″", aa);
        }
        public void TestXYtoBL()
        {
            {
                double x = 2433586.692, y = 250547.403;
                double L0 = SurMath.DMStoRad(111);

                Ellipsoid ellipsoid = Ellipsoid.CreateBeijing1954();
                IProj     proj      = new GaussProj(ellipsoid);
                //IProj proj = new UTMProj(ellipsoid);
                var BL = proj.XYtoBL(x, y, L0, 0, 0);

                Assert.AreEqual(21.58470845, SurMath.RadtoDMS(BL.B), 1e-8);
                Assert.AreEqual(113.25314880, SurMath.RadtoDMS(BL.L), 1e-8);

                x  = 3380330.773; y = 320089.9761;
                BL = proj.XYtoBL(x, y, L0, 0, 0);

                //此处的秒按常规处理会出现59.999996秒的问题
                Assert.AreEqual(30.30, SurMath.RadtoDMS(BL.B), 1e-7);
                Assert.AreEqual(114.20, SurMath.RadtoDMS(BL.L), 1e-7);
            }

            //数据来自《大地测量学基础》2版P194
            {
                double x = 1944359.6070, y = 240455.4563;
                double L0 = SurMath.DMStoRad(117);

                Ellipsoid ellipsoid = Ellipsoid.CreateBeijing1954();
                IProj     proj      = new GaussProj(ellipsoid);
                //IProj proj = new UTMProj(ellipsoid);
                var BL = proj.XYtoBL(x, y, L0, 0, 0);

                Assert.AreEqual(17.33557338, SurMath.RadtoDMS(BL.B), 1e-8);
                Assert.AreEqual(119.15521150, SurMath.RadtoDMS(BL.L), 1e-8);
            }
        }
Beispiel #12
0
        public void TestDMStoString()
        {
            var str = SurMath.DMStoString(101.03201);

            Assert.AreEqual("101¡ã03¡ä20.1¡å", str);

            str = SurMath.DMStoString(-101.03201);
            Assert.AreEqual("-101¡ã03¡ä20.1¡å", str);

            str = SurMath.DMStoString(0.4001);
            Assert.AreEqual("0¡ã40¡ä01¡å", str);

            str = SurMath.DMStoString(-0.4001);
            Assert.AreEqual("-0¡ã40¡ä01¡å", str);

            str = SurMath.DMStoString(1.4001);
            Assert.AreEqual("1¡ã40¡ä01¡å", str);

            str = SurMath.DMStoString(1.4000);
            Assert.AreEqual("1¡ã40¡ä00¡å", str);

            str = SurMath.DMStoString(-1.4000);
            Assert.AreEqual("-1¡ã40¡ä00¡å", str);
        }