/// <summary> /// Returns the inverse of this projection. /// </summary> /// <returns>IMathTransform that is the reverse of the current projection.</returns> public override IMathTransform Inverse() { if (_inverse == null) { _inverse = new KrovakProjection(this._Parameters, !_isInverse); } return(_inverse); }
private static IMathTransform CreateCoordinateOperation(IProjection projection, IEllipsoid ellipsoid, ILinearUnit unit) { List<ProjectionParameter> parameterList = new List<ProjectionParameter>(projection.NumParameters); for (int i = 0; i < projection.NumParameters; i++) parameterList.Add(projection.GetParameter(i)); parameterList.Add(new ProjectionParameter("semi_major", ellipsoid.SemiMajorAxis)); parameterList.Add(new ProjectionParameter("semi_minor", ellipsoid.SemiMinorAxis)); parameterList.Add(new ProjectionParameter("unit", unit.MetersPerUnit)); IMathTransform transform = null; switch (projection.ClassName.ToLower(CultureInfo.InvariantCulture).Replace(' ', '_')) { case "mercator": case "mercator_1sp": case "mercator_2sp": //1SP transform = new Mercator(parameterList); break; case "transverse_mercator": transform = new TransverseMercator(parameterList); break; case "albers": case "albers_conic_equal_area": transform = new AlbersProjection(parameterList); break; case "krovak": transform = new KrovakProjection(parameterList); break; case "lambert_conformal_conic": case "lambert_conformal_conic_2sp": case "lambert_conic_conformal_(2sp)": transform = new LambertConformalConic2SP(parameterList); break; default: throw new NotSupportedException(String.Format("Projection {0} is not supported.", projection.ClassName)); } return transform; }
/// <summary> /// Returns the inverse of this projection. /// </summary> /// <returns>IMathTransform that is the reverse of the current projection.</returns> public override IMathTransform Inverse() { if (_inverse == null) { _inverse = new KrovakProjection(this._Parameters, !_isInverse); } return _inverse; }