/// <summary> /// 高度校正 /// </summary> /// <param name="fac">自空校正对象</param> static void DoHeightCorrection(FreeAirCorrection fac) { fac.HeightCorrection = 0.3086 * (1 + 0.0007 * Math.Cos(2 * Radian(fac.Latitude))) * fac.Height - 7.2e-8 * fac.Height * fac.Height; }
/// <summary> /// 计算正常重力 /// </summary> /// <param name="fac">自空校正对象</param> /// <param name="choice">校正方法</param> static void CalculateNormalGravity(FreeAirCorrection fac, int choice) { double a = 0.0, b = 0.0, c = 0.0; switch (choice) { case 1://(1)1901-1909年的赫尔默特(R.Helment)公式 a = 978030.00; b = 0.005302; c = 0.000007; break; case 2://(2)1930年卡西尼(Cassinis)国际正常重力公式 a = 978049.00; b = 0.0052884; c = 0.0000059; break; case 3://(3)1971年国际正常重力公式 a = 978031.80; b = 0.0053024; c = 0.0000059; break; case 4://(4)1979年IUGG确定的正常重力公式 a = 978032.70; b = 0.0053024; c = 0.000005; break; default: throw new Exception("公式编号不正确!"); } fac.NormalGravity = a * (1 + b * Math.Sin(Radian(fac.Latitude)) * Math.Sin(Radian(fac.Latitude)) - c * Math.Sin(2 * Radian(fac.Latitude))); }