Exemplo n.º 1
0
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="geodeticCrs">待转换坐标系统,类型必须是GeodeticCs</param>
        /// <param name="xyzCrs">目标坐标系统,类型必须是XyzCs</param>
        public GeodeticToXyzCsTranformOnDifferDatum(ICoordinateReferenceSystem geodeticCrs, ICoordinateReferenceSystem xyzCrs)
            : base(geodeticCrs, xyzCrs)
        {
            //第一个节点,统一坐标到XYZ
            ICoordinateReferenceSystem middleCrs = new CrsFactory().Create(CoordinateSystem.XyzCs, this.SourceCrs.Datum);

            TransformChain = new GeodeticToXyzCsTranform(this.SourceCrs, middleCrs);
            //第二个节点
            AbstractCoordTranform datumTrans = new GeodeticDatumTranform(middleCrs, this.TargetCrs);

            //设置链条
            TransformChain.Successor = (datumTrans);
        }
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="sourceCrs">待转换坐标系统,类型是XyzCs才符合</param>
        /// <param name="targetCrs">目标坐标系统,类型是GeodeticCs才符合</param>
        public XyzToGeodeticCsTranformOnDifferDatum(ICoordinateReferenceSystem sourceCrs, ICoordinateReferenceSystem targetCrs)
            : base(sourceCrs, targetCrs)
        {
            //第一个节点,统一基准
            ICoordinateReferenceSystem middleCrs = new CrsFactory().Create(CoordinateSystem.XyzCs, this.TargetCrs.Datum);

            this.TransformChain = new GeodeticDatumTranform(this.SourceCrs, middleCrs);
            //第二个节点,转换到大地坐标
            AbstractCoordTranform xyzToGeo = new XyzToGeodeticCsTranform(middleCrs, this.TargetCrs);

            //设置链条
            this.TransformChain.Successor = (xyzToGeo);
        }