Ejemplo n.º 1
0
        /// <summary>
        /// 转换操作。输入待转坐标,输出目标坐标。
        /// </summary>
        /// <param name="oldCoord">待转坐标,只取其数字部分,参考系取自属性本对象的TargetCrs属性 </param>
        /// <returns></returns>
        public override ICoordinate MatchedTrans(ICoordinate oldCoord)
        {
            IEllipsoid e = (TargetCrs.Datum as GeodeticDatum).Ellipsoid;

            IGeodeticCoord geo = (IGeodeticCoord)oldCoord;
            double         x, y, z;

            GeodeticUtils.GeodeticToXyzCoord(geo.Lon, geo.Lat, geo.Height, out x, out y, out z, e.SemiMajorAxis, e.InverseFlattening);

            return(CoordinateFactory.CreateXyzCoord(x, y, z, oldCoord.Weight));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 大地坐标转为空间直角坐标。
        /// </summary>
        /// <param name="ellipsoidCoord"></param>
        /// <returns></returns>
        public static XYZ GeoCoordToXyz(IGeodeticCoord ellipsoidCoord, Geo.Referencing.Ellipsoid el = null)
        {
            if (el == null)
            {
                el = Geo.Referencing.Ellipsoid.WGS84;
            }

            double lon    = ellipsoidCoord.Lon;
            double lat    = ellipsoidCoord.Lat;
            double height = ellipsoidCoord.Height;
            double a      = el.SemiMajorAxis;
            double e      = el.FirstEccentricity;

            return(GeoCoordToXyz(lon, lat, height, a, e, ellipsoidCoord.Unit));
        }