/// <summary> /// Converts an existing low precision spatial reference and returns a new high precision spatial reference. /// </summary> /// <param name="lowSpatialReference">An ISpatialReference interface that is the low spatial reference to be converted.</param> /// <param name="xyDoubler">A System.Int32 that is the amount of doubling (2^x) based on the input resolution; -1 produces a value close to the default resolution. Example: -1</param> /// <param name="mDoubler">A System.Int32 that determines doubling of m-resolution based on input m-resolution; the default is 0. Example: 0</param> /// <param name="zDoubler">A System.Int32 that determines doubling of z-resolution based on input z-resolution; default is 0. Example: 0</param> /// <returns>An ISpatialReference interface that is the new high precision spatial reference.</returns> public static ISpatialReference ConvertSpatialReferenceFromLowToHighPrecision(ISpatialReference lowSpatialReference, int xyDoubler, int mDoubler, int zDoubler) { IControlPrecision2 controlPrecision2 = lowSpatialReference as IControlPrecision2; if (controlPrecision2.IsHighPrecision) { throw new ArgumentException("Expected a low precision spatial reference.", "lowSpatialReference"); } ISpatialReferenceFactory3 spatialReferenceFactory3 = new SpatialReferenceEnvironmentClass(); ISpatialReference highSpatialReference = spatialReferenceFactory3.ConstructHighPrecisionSpatialReference(lowSpatialReference, xyDoubler, zDoubler, mDoubler); return(highSpatialReference); }