private double centerMeridian = 0; // 中央子午线 /// <summary> /// 构造函数 /// </summary> /// <param name="sourceCoordinateSystem">坐标系统</param> /// <param name="centerMeridian">中央子午线</param> public GeodeticTransform(CoordinateSystemType sourceCoordinateSystem, double centerMeridian) { EllipsoidalParameters parameters = EllipsoidalType.GetEllipsoidalParametersByTpye(sourceCoordinateSystem); a = parameters.SemiMajorAxis; b = parameters.SemiMinorAxis; e = Math.Sqrt(a * a - b * b) / a; ep = Math.Sqrt(a * a - b * b) / b; this.centerMeridian = centerMeridian; }
private double ep2 = 0; // 第二偏心率平方 /// <summary> /// 构造函数 /// </summary> /// <param name="sourceCoordinateSystem">源坐标系统</param> public GaussKrugerTransform(CoordinateSystemType sourceCoordinateSystem) { EllipsoidalParameters parameters = EllipsoidalType.GetEllipsoidalParametersByTpye(sourceCoordinateSystem); a = parameters.SemiMajorAxis; b = parameters.SemiMinorAxis; e = Math.Sqrt(a * a - b * b) / a; ep = Math.Sqrt(a * a - b * b) / b; e2 = Math.Pow(e, 2); ep2 = Math.Pow(ep, 2); }
public static EllipsoidalParameters GetEllipsoidalParametersByTpye(CoordinateSystemType type) { EllipsoidalParameters parameters = null; switch (type) { case CoordinateSystemType.WGS84: parameters = new EllipsoidalParameters(); parameters.SemiMajorAxis = 6378137; parameters.SemiMinorAxis = 6356752.3142; break; case CoordinateSystemType.BJ54: parameters = new EllipsoidalParameters(); parameters.SemiMajorAxis = 6378245; parameters.SemiMinorAxis = 6356863.019; break; case CoordinateSystemType.XIAN80: parameters = new EllipsoidalParameters(); parameters.SemiMajorAxis = 6378140; parameters.SemiMinorAxis = 6356755.2882; break; case CoordinateSystemType.CGCS2000: parameters = new EllipsoidalParameters(); parameters.SemiMajorAxis = 6378137; parameters.SemiMinorAxis = 6356752.31414; break; default: break; } return(parameters); }