예제 #1
0
        private CoordinateType targetCoordinateType; // 目标坐标类型

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="transformationParameters"></param>
        public SevenParamsTransformationService(TransformationParameters transformationParameters)
        {
            // 参数检查
            if (transformationParameters == null)
            {
                throw new ArgumentNullException("转换参数为空");
            }

            if (transformationParameters.SevenParams == null)
            {
                throw new ArgumentNullException("七参数为空");
            }

            if (transformationParameters.SourceEllipsoid == null)
            {
                throw new ArgumentNullException("源椭球为空");
            }

            if (transformationParameters.TargetEllipsoid == null)
            {
                throw new ArgumentNullException("目标椭球为空");
            }
            // 局部变量赋值
            this.sevenParams          = transformationParameters.SevenParams;
            this.sourceEllipsoid      = transformationParameters.SourceEllipsoid;
            this.targetEllipsoid      = transformationParameters.TargetEllipsoid;
            this.sourceCenterMeridian = transformationParameters.SourceCenterMeridian;
            this.targetCenterMeridian = transformationParameters.TargetCenterMeridian;
            this.sourceCoordinateType = transformationParameters.SourceCoordinateType;
            this.targetCoordinateType = transformationParameters.TargetCoordinateType;
        }
예제 #2
0
        /// <summary>
        /// 参数反转
        /// </summary>
        /// <returns></returns>
        public SevenParameters Reverse()
        {
            SevenParameters result = new SevenParameters();

            result.XaxisRotateRadian = -this.XaxisRotateRadian;
            result.YaxisRotateRadian = -this.YaxisRotateRadian;
            result.ZaxisRotateRadian = -this.ZaxisRotateRadian;
            result.XaxisDeviation    = -this.XaxisDeviation;
            result.YaxisDeviation    = -this.YaxisDeviation;
            result.ZaxisDeviation    = -this.ZaxisDeviation;
            result.ScaleParameter    = -this.ScaleParameter;

            return(result);
        }
예제 #3
0
        private CoordinateType targetCT;       // 目标坐标类型

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="parameters">转换参数</param>
        public CoordinateTransform(ConversionParameters parameters)
        {
            if (parameters == null || parameters.ConversionSevenParams == null)
            {
                throw new Exception("转换参数或转换七参数为空");
            }

            this.sevenParams    = parameters.ConversionSevenParams;
            this.sourceCS       = parameters.SourceCoordinateSystem;
            this.targetCS       = parameters.TargetCoordinateSystem;
            this.sourceMeridian = parameters.SourceCenterMeridian;
            this.targetMeridian = parameters.TargetCenterMeridian;
            this.sourceCT       = parameters.SourceCoordinateType;
            this.targetCT       = parameters.TargetCoordinateType;
        }
예제 #4
0
        private double m;          // 尺度参数

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="parameters">七参数</param>
        public BursaWolfTransform(SevenParameters parameters)
        {
            if (parameters == null)
            {
                throw new Exception("转换七参数为空");
            }

            this.rx = parameters.XaxisRotateRadian;
            this.ry = parameters.YaxisRotateRadian;
            this.rz = parameters.ZaxisRotateRadian;
            this.dx = parameters.XaxisDeviation;
            this.dy = parameters.YaxisDeviation;
            this.dz = parameters.ZaxisDeviation;
            this.m  = parameters.ScaleParameter;
        }