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); } }