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