/// <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 TransverseMercator(_Parameters.ToProjectionParameter(), this); } return(_inverse); }
/// <summary> /// Creates an instance of an TransverseMercatorProjection projection object. /// </summary> /// <param name="parameters">List of parameters to initialize the projection.</param> /// <param name="inverse">Flag indicating wether is a forward/projection (false) or an inverse projection (true).</param> /// <remarks> /// <list type="bullet"> /// <listheader><term>Items</term><description>Descriptions</description></listheader> /// <item><term>semi_major</term><description>Semi major radius</description></item> /// <item><term>semi_minor</term><description>Semi minor radius</description></item> /// <item><term>scale_factor</term><description></description></item> /// <item><term>central meridian</term><description></description></item> /// <item><term>latitude_origin</term><description></description></item> /// <item><term>false_easting</term><description></description></item> /// <item><term>false_northing</term><description></description></item> /// </list> /// </remarks> protected TransverseMercator(IEnumerable <ProjectionParameter> parameters, TransverseMercator inverse) : base(parameters, inverse) { Name = "Transverse_Mercator"; Authority = "EPSG"; AuthorityCode = 9807; _esp = _es / (1.0 - _es); _ml0 = mlfn(lat_origin, Math.Sin(lat_origin), Math.Cos(lat_origin)); /* * e = Math.Sqrt(_es); * ml0 = _semiMajor*mlfn(lat_origin, Math.Sin(lat_origin), Math.Cos(lat_origin)); * esp = _es / (1.0 - _es); */ }