public void Setup() { TransformationFactory = new CoordinateTransformationFactory(); Grid = GridFile.Open(GetType().Assembly.GetManifestResourceStream("ProjNet.NTv2.Tests.BETA2007.gsb"), true); Data = LoadData(); }
public void TestNAD() { var NAD27 = SRIDReader.GetCSbyID(4267); var NAD83 = SRIDReader.GetCSbyID(4269); // https://github.com/OSGeo/proj-datumgrid/tree/master/north-america var grid = GridFile.Open(@"ntv2_0.gsb"); var ct = TransformationFactory.CreateFromCoordinateSystems(NAD27, NAD83, grid, false); // http://www.apsalin.com/nad-conversion.aspx // https://www.ngs.noaa.gov/NCAT/ double[] input = new[] { -79.378243, 43.664087 }; double[] expected = new[] { -79.3780316, 43.6641356 }; var actual = ct.MathTransform.Transform(input); CollectionAssert.AreEqual(expected, actual); }
/// <summary> /// Creates a transformation between two coordinate systems. /// </summary> /// <param name="factory">The coordinate transformation factory.</param> /// <param name="sourceCS">Source coordinate system.</param> /// <param name="targetCS">Target coordinate system.</param> /// <param name="gridFile">The grid file path.</param> /// <param name="inverse">Indicates whether to use the inverse grid transform.</param> /// <returns></returns> public static ICoordinateTransformation CreateFromCoordinateSystems(this CoordinateTransformationFactory factory, CoordinateSystem sourceCS, CoordinateSystem targetCS, string gridFile, bool inverse) { return(CreateFromCoordinateSystems(factory, sourceCS, targetCS, GridFile.Open(gridFile), inverse)); }