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