Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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);
        }