Exemplo n.º 1
0
        public void epsg29871()
        {
            var crs = EpsgMicroDatabase.Default.GetCrs(29871);

            Assert.IsNotNull(crs);

            var prj = Proj4Crs.CreateProjection(crs);

            Assert.IsNotNull(prj);
            Assert.AreEqual("omerc", prj.Transform.Proj4Name);
            Assert.AreEqual(4, prj.LatitudeOfOrigin);
            Assert.AreEqual(115, prj.LongitudeOfCenter);
            Assert.AreEqual(53.31, prj.alpha, 0.1);
            Assert.AreEqual(0.99984, prj.ScaleFactor);
            Assert.AreEqual(590476, prj.FalseEasting, 1);
            Assert.AreEqual(442857, prj.FalseNorthing, 1);

            var wgs      = EpsgMicroDatabase.Default.GetCrs(4326);
            var posWgs   = new GeographicCoordinate(4.26, 114.46);
            var pos29871 = new Point2(26368.683206333983, 23434.55243084071);

            var tx            = new Proj4Transform(wgs, crs);
            var forwardResult = (Point2)tx.TransformValue(posWgs);

            Assert.AreEqual(pos29871.X, forwardResult.X, 10);
            Assert.AreEqual(pos29871.Y, forwardResult.Y, 10);

            var inv           = tx.GetInverse();
            var reverseResult = (GeographicCoordinate)inv.TransformValue(pos29871);

            Assert.AreEqual(posWgs.Longitude, reverseResult.Longitude, 0.002);
            Assert.AreEqual(posWgs.Latitude, reverseResult.Latitude, 0.002);
        }
Exemplo n.º 2
0
        public void epsg3832()
        {
            var crs = EpsgMicroDatabase.Default.GetCrs(3832);

            Assert.IsNotNull(crs);

            var prj = Proj4Crs.CreateProjection(crs);

            Assert.IsNotNull(prj);
            Assert.AreEqual("merc", prj.Transform.Proj4Name);
            Assert.AreEqual(150, prj.CentralMeridian);
            Assert.AreEqual(1, prj.ScaleFactor);
            Assert.AreEqual(0, prj.FalseEasting);
            Assert.AreEqual(0, prj.FalseNorthing);

            Assert.AreEqual(6378137, prj.GeographicInfo.Datum.Spheroid.EquatorialRadius, 0.001);
            Assert.AreEqual(298.257223563, prj.GeographicInfo.Datum.Spheroid.InverseFlattening, 0.001);

            var wgs    = EpsgMicroDatabase.Default.GetCrs(4326);
            var ptWgs  = new GeographicCoordinate(7, -160);
            var pt3832 = new Point2(5565974, 775978);

            var tx         = new Proj4Transform(wgs, crs);
            var actual3832 = (Point2)tx.TransformValue(ptWgs);

            Assert.AreEqual(pt3832.X, actual3832.X, 1);
            Assert.AreEqual(pt3832.Y, actual3832.Y, 1);

            var inv        = tx.GetInverse();
            var actual4326 = (GeographicCoordinate)inv.TransformValue(pt3832);

            Assert.AreEqual(ptWgs.Longitude, actual4326.Longitude, 0.001);
            Assert.AreEqual(ptWgs.Latitude, actual4326.Latitude, 0.001);
        }
Exemplo n.º 3
0
        public void epsg3575()
        {
            var crs = EpsgMicroDatabase.Default.GetCrs(3575);

            Assert.IsNotNull(crs);

            var prj = Proj4Crs.CreateProjection(crs);

            Assert.IsNotNull(prj);
            Assert.AreEqual("laea", prj.Transform.Proj4Name);
            Assert.AreEqual(90, prj.LatitudeOfOrigin);
            Assert.AreEqual(10, prj.CentralMeridian);
            Assert.AreEqual(0, prj.FalseEasting);
            Assert.AreEqual(0, prj.FalseNorthing);
            Assert.AreEqual(6378137, prj.GeographicInfo.Datum.Spheroid.EquatorialRadius);
            Assert.AreEqual(298.257223563, prj.GeographicInfo.Datum.Spheroid.InverseFlattening, 0.0000001);

            var wgs                 = EpsgMicroDatabase.Default.GetCrs(4326);
            var wgsProj4            = Proj4Crs.CreateProjection(wgs);
            var somePlaceInMichigan = new GeographicCoordinate(40.4, -91.8);
            var expected3575        = new Point2(-5244224.354585549, 1095575.5476152631);

            var proj4_3575_to_4326 = new Proj4Transform(crs, wgs);
            var c = (GeographicCoordinate)proj4_3575_to_4326.TransformValue(expected3575);

            Assert.AreEqual(somePlaceInMichigan.Latitude, c.Latitude, 0.2);
            Assert.AreEqual(somePlaceInMichigan.Longitude, c.Longitude, 0.2);

            var proj4_4326_to_3575 = new Proj4Transform(wgs, crs);
            var d = (Point2)proj4_4326_to_3575.TransformValue(somePlaceInMichigan);

            Assert.AreEqual(expected3575.X, d.X, 50000);
            Assert.AreEqual(expected3575.Y, d.Y, 50000);
        }
Exemplo n.º 4
0
        public void epsg3395()
        {
            var crs = EpsgMicroDatabase.Default.GetCrs(3395);

            Assert.IsNotNull(crs);

            var prj = Proj4Crs.CreateProjection(crs);

            Assert.IsNotNull(prj);
            Assert.AreEqual("merc", prj.Transform.Proj4Name);
            Assert.AreEqual(0, prj.CentralMeridian);
            Assert.AreEqual(0, prj.FalseEasting);
            Assert.AreEqual(0, prj.FalseNorthing);

            var wgs    = EpsgMicroDatabase.Default.GetCrs(4326);
            var ptWgs  = new GeographicCoordinate(40, -105);
            var pt3395 = new Point2(-11688546, 4838471);

            var tx         = new Proj4Transform(wgs, crs);
            var actual3395 = (Point2)tx.TransformValue(ptWgs);

            Assert.AreEqual(pt3395.X, actual3395.X, 1);
            Assert.AreEqual(pt3395.Y, actual3395.Y, 1);

            var inv        = tx.GetInverse();
            var actual4326 = (GeographicCoordinate)inv.TransformValue(pt3395);

            Assert.AreEqual(ptWgs.Longitude, actual4326.Longitude, 0.001);
            Assert.AreEqual(ptWgs.Latitude, actual4326.Latitude, 0.001);
        }
Exemplo n.º 5
0
 public void epsg2039_to_epsg28191()
 {
     var from = EpsgMicroDatabase.Default.GetCrs(2039);
     var to = EpsgMicroDatabase.Default.GetCrs(28191);
     var pathGenerator = new EpsgCrsCoordinateOperationPathGenerator();
     var epsgPath = pathGenerator.Generate(from, to);
     Assert.IsNotEmpty(epsgPath);
     var proj4Transform = new Proj4Transform(from, to);
     Assert.IsNotNull(proj4Transform);
 }
Exemplo n.º 6
0
        public void epsg3031_to_epsg3293()
        {
            var from          = EpsgMicroDatabase.Default.GetCrs(3031);
            var to            = EpsgMicroDatabase.Default.GetCrs(3293);
            var pathGenerator = new EpsgCrsCoordinateOperationPathGenerator();
            var epsgPath      = pathGenerator.Generate(from, to);

            Assert.IsNotEmpty(epsgPath);
            var proj4Transform = new Proj4Transform(from, to);

            Assert.IsNotNull(proj4Transform);
        }
Exemplo n.º 7
0
        public void epsg3079_to_epsg3575_proj4()
        {
            var from      = EpsgMicroDatabase.Default.GetCrs(3079);
            var fromProj4 = Proj4Crs.CreateProjection(from);
            var to        = EpsgMicroDatabase.Default.GetCrs(3575);
            var toProj4   = Proj4Crs.CreateProjection(to);

            var expected3079 = new Point2(6992.885640195105, -644.956855237484);
            var expected3575 = new Point2(-5244224.354585549, 1095575.5476152631);

            var proj   = new Proj4Transform(from, to);
            var actual = (Point2)proj.TransformValue(expected3079);

            Assert.AreEqual(expected3575.X, actual.X, 10);
            Assert.AreEqual(expected3575.Y, actual.Y, 10);
        }
Exemplo n.º 8
0
        private ConversionResult ExecuteProj4(TestCase testCase)
        {
            var result = new ConversionResult();

            try {
                var transformation = new Proj4Transform(testCase.Source, testCase.Target);
                if (transformation == null)
                {
                    throw new InvalidOperationException("No transformation");
                }

                result.ResultData = transformation.TransformValues(testCase.InputCoordinates).ToArray();
            }
            catch (Exception ex) {
                result.Exception = ex;
            }
            return(result);
        }
Exemplo n.º 9
0
        public void epsg3140()
        {
            var crs = EpsgMicroDatabase.Default.GetCrs(3140);

            Assert.IsNotNull(crs);

            var prj = Proj4Crs.CreateProjection(crs);

            Assert.IsNotNull(prj);
            Assert.AreEqual("cass", prj.Transform.Proj4Name);
            Assert.AreEqual(-18, prj.LatitudeOfOrigin);
            Assert.AreEqual(178, prj.CentralMeridian);
            Assert.AreEqual(109435, prj.FalseEasting, 1);
            Assert.AreEqual(141622, prj.FalseNorthing, 1);

            Assert.AreEqual(6378306, prj.GeographicInfo.Datum.Spheroid.EquatorialRadius, 1);
            Assert.AreEqual(6356571.996, prj.GeographicInfo.Datum.Spheroid.PolarRadius, 1);

            var wgs    = EpsgMicroDatabase.Default.GetCrs(4326);
            var ptWgs  = new GeographicCoordinate((-17.25 + -18.32) / 2.0, (178.74 + 177.2) / 2.0);
            var pt3140 = new Point2(530138.52663372, 821498.68898981); // units in links

            Assert.IsNotNull(prj.GeographicInfo.Datum.ToWGS84);
            Assert.AreEqual(3, prj.GeographicInfo.Datum.ToWGS84.Length);
            Assert.AreEqual(51, prj.GeographicInfo.Datum.ToWGS84[0]);
            Assert.AreEqual(391, prj.GeographicInfo.Datum.ToWGS84[1]);
            Assert.AreEqual(-36, prj.GeographicInfo.Datum.ToWGS84[2]);


            var tx            = new Proj4Transform(wgs, crs);
            var actualForward = (Point2)tx.TransformValue(ptWgs);

            Assert.AreEqual(pt3140.X, actualForward.X, 1);
            Assert.AreEqual(pt3140.Y, actualForward.Y, 1);

            var inv           = tx.GetInverse();
            var actualReverse = (GeographicCoordinate)inv.TransformValue(pt3140);

            Assert.AreEqual(ptWgs.Longitude, actualReverse.Longitude, 0.01);
            Assert.AreEqual(ptWgs.Latitude, actualReverse.Latitude, 0.01);
        }
Exemplo n.º 10
0
        public void epsg3079()
        {
            var crs = EpsgMicroDatabase.Default.GetCrs(3079);

            Assert.IsNotNull(crs);

            var prj = Proj4Crs.CreateProjection(crs);

            Assert.IsNotNull(prj);
            Assert.AreEqual("omerc", prj.Transform.Proj4Name);
            Assert.AreEqual(45.30916666666666, prj.LatitudeOfOrigin, 0.00000001);
            Assert.AreEqual(-86, prj.LongitudeOfCenter);
            Assert.AreEqual(337.25556, prj.alpha);
            Assert.AreEqual(0.9996, prj.ScaleFactor);
            Assert.AreEqual(2546731.496, prj.FalseEasting);
            Assert.AreEqual(-4354009.816, prj.FalseNorthing);
            Assert.AreEqual(6378137, prj.GeographicInfo.Datum.Spheroid.EquatorialRadius);
            Assert.AreEqual(298.257222101, prj.GeographicInfo.Datum.Spheroid.InverseFlattening, 0.0000001);

            var wgs      = EpsgMicroDatabase.Default.GetCrs(4326);
            var wgsProj4 = Proj4Crs.CreateProjection(wgs);

            var somePlaceInMichigan = new GeographicCoordinate(40.4, -91.8);
            var expected3079        = new Point2(6992.885640195105, -644.956855237484);

            var proj4_3079_to_4326 = new Proj4Transform(crs, wgs);
            var a = (GeographicCoordinate)proj4_3079_to_4326.TransformValue(expected3079);

            Assert.AreEqual(somePlaceInMichigan.Latitude, a.Latitude, 0.001);
            Assert.AreEqual(somePlaceInMichigan.Longitude, a.Longitude, 0.001);

            var proj4_4326_to_3079 = new Proj4Transform(wgs, crs);
            var b = (Point2)proj4_4326_to_3079.TransformValue(somePlaceInMichigan);

            Assert.AreEqual(expected3079.X, b.X, 5);
            Assert.AreEqual(expected3079.Y, b.Y, 5);
        }
Exemplo n.º 11
0
        public void epsg3832()
        {
            var crs = EpsgMicroDatabase.Default.GetCrs(3832);
            Assert.IsNotNull(crs);

            var prj = Proj4Crs.CreateProjection(crs);
            Assert.IsNotNull(prj);
            Assert.AreEqual("merc", prj.Transform.Proj4Name);
            Assert.AreEqual(150, prj.CentralMeridian);
            Assert.AreEqual(1, prj.ScaleFactor);
            Assert.AreEqual(0, prj.FalseEasting);
            Assert.AreEqual(0, prj.FalseNorthing);

            Assert.AreEqual(6378137, prj.GeographicInfo.Datum.Spheroid.EquatorialRadius, 0.001);
            Assert.AreEqual(298.257223563, prj.GeographicInfo.Datum.Spheroid.InverseFlattening, 0.001);

            var wgs = EpsgMicroDatabase.Default.GetCrs(4326);
            var ptWgs = new GeographicCoordinate(7, -160);
            var pt3832 = new Point2(5565974, 775978);

            var tx = new Proj4Transform(wgs, crs);
            var actual3832 = (Point2)tx.TransformValue(ptWgs);
            Assert.AreEqual(pt3832.X, actual3832.X, 1);
            Assert.AreEqual(pt3832.Y, actual3832.Y, 1);

            var inv = tx.GetInverse();
            var actual4326 = (GeographicCoordinate)inv.TransformValue(pt3832);
            Assert.AreEqual(ptWgs.Longitude, actual4326.Longitude, 0.001);
            Assert.AreEqual(ptWgs.Latitude, actual4326.Latitude, 0.001);
        }
Exemplo n.º 12
0
        public void epsg29871()
        {
            var crs = EpsgMicroDatabase.Default.GetCrs(29871);
            Assert.IsNotNull(crs);

            var prj = Proj4Crs.CreateProjection(crs);
            Assert.IsNotNull(prj);
            Assert.AreEqual("omerc", prj.Transform.Proj4Name);
            Assert.AreEqual(4, prj.LatitudeOfOrigin);
            Assert.AreEqual(115, prj.LongitudeOfCenter);
            Assert.AreEqual(53.31, prj.alpha, 0.1);
            Assert.AreEqual(0.99984, prj.ScaleFactor);
            Assert.AreEqual(590476, prj.FalseEasting, 1);
            Assert.AreEqual(442857, prj.FalseNorthing, 1);

            var wgs = EpsgMicroDatabase.Default.GetCrs(4326);
            var posWgs = new GeographicCoordinate(4.26, 114.46);
            var pos29871 = new Point2(26368.683206333983, 23434.55243084071);

            var tx = new Proj4Transform(wgs, crs);
            var forwardResult = (Point2)tx.TransformValue(posWgs);
            Assert.AreEqual(pos29871.X, forwardResult.X, 10);
            Assert.AreEqual(pos29871.Y, forwardResult.Y, 10);

            var inv = tx.GetInverse();
            var reverseResult = (GeographicCoordinate)inv.TransformValue(pos29871);
            Assert.AreEqual(posWgs.Longitude, reverseResult.Longitude, 0.002);
            Assert.AreEqual(posWgs.Latitude, reverseResult.Latitude, 0.002);
        }
Exemplo n.º 13
0
        public void epsg3575()
        {
            var crs = EpsgMicroDatabase.Default.GetCrs(3575);
            Assert.IsNotNull(crs);

            var prj = Proj4Crs.CreateProjection(crs);
            Assert.IsNotNull(prj);
            Assert.AreEqual("laea", prj.Transform.Proj4Name);
            Assert.AreEqual(90, prj.LatitudeOfOrigin);
            Assert.AreEqual(10, prj.CentralMeridian);
            Assert.AreEqual(0, prj.FalseEasting);
            Assert.AreEqual(0, prj.FalseNorthing);
            Assert.AreEqual(6378137, prj.GeographicInfo.Datum.Spheroid.EquatorialRadius);
            Assert.AreEqual(298.257223563, prj.GeographicInfo.Datum.Spheroid.InverseFlattening, 0.0000001);

            var wgs = EpsgMicroDatabase.Default.GetCrs(4326);
            var wgsProj4 = Proj4Crs.CreateProjection(wgs);
            var somePlaceInMichigan = new GeographicCoordinate(40.4, -91.8);
            var expected3575 = new Point2(-5244224.354585549, 1095575.5476152631);

            var proj4_3575_to_4326 = new Proj4Transform(crs, wgs);
            var c = (GeographicCoordinate)proj4_3575_to_4326.TransformValue(expected3575);
            Assert.AreEqual(somePlaceInMichigan.Latitude, c.Latitude, 0.2);
            Assert.AreEqual(somePlaceInMichigan.Longitude, c.Longitude, 0.2);

            var proj4_4326_to_3575 = new Proj4Transform(wgs, crs);
            var d = (Point2)proj4_4326_to_3575.TransformValue(somePlaceInMichigan);
            Assert.AreEqual(expected3575.X, d.X, 50000);
            Assert.AreEqual(expected3575.Y, d.Y, 50000);
        }
Exemplo n.º 14
0
        public void epsg3079()
        {
            var crs = EpsgMicroDatabase.Default.GetCrs(3079);
            Assert.IsNotNull(crs);

            var prj = Proj4Crs.CreateProjection(crs);
            Assert.IsNotNull(prj);
            Assert.AreEqual("omerc", prj.Transform.Proj4Name);
            Assert.AreEqual(45.30916666666666, prj.LatitudeOfOrigin, 0.00000001);
            Assert.AreEqual(-86, prj.LongitudeOfCenter);
            Assert.AreEqual(337.25556, prj.alpha);
            Assert.AreEqual(0.9996, prj.ScaleFactor);
            Assert.AreEqual(2546731.496, prj.FalseEasting);
            Assert.AreEqual(-4354009.816, prj.FalseNorthing);
            Assert.AreEqual(6378137, prj.GeographicInfo.Datum.Spheroid.EquatorialRadius);
            Assert.AreEqual(298.257222101, prj.GeographicInfo.Datum.Spheroid.InverseFlattening, 0.0000001);

            var wgs = EpsgMicroDatabase.Default.GetCrs(4326);
            var wgsProj4 = Proj4Crs.CreateProjection(wgs);

            var somePlaceInMichigan = new GeographicCoordinate(40.4, -91.8);
            var expected3079 = new Point2(6992.885640195105, -644.956855237484);

            var proj4_3079_to_4326 = new Proj4Transform(crs, wgs);
            var a = (GeographicCoordinate)proj4_3079_to_4326.TransformValue(expected3079);
            Assert.AreEqual(somePlaceInMichigan.Latitude, a.Latitude, 0.001);
            Assert.AreEqual(somePlaceInMichigan.Longitude, a.Longitude, 0.001);

            var proj4_4326_to_3079 = new Proj4Transform(wgs, crs);
            var b = (Point2)proj4_4326_to_3079.TransformValue(somePlaceInMichigan);
            Assert.AreEqual(expected3079.X, b.X, 5);
            Assert.AreEqual(expected3079.Y, b.Y, 5);
        }
Exemplo n.º 15
0
        public void epsg3395()
        {
            var crs = EpsgMicroDatabase.Default.GetCrs(3395);
            Assert.IsNotNull(crs);

            var prj = Proj4Crs.CreateProjection(crs);
            Assert.IsNotNull(prj);
            Assert.AreEqual("merc", prj.Transform.Proj4Name);
            Assert.AreEqual(0, prj.CentralMeridian);
            Assert.AreEqual(0, prj.FalseEasting);
            Assert.AreEqual(0, prj.FalseNorthing);

            var wgs = EpsgMicroDatabase.Default.GetCrs(4326);
            var ptWgs = new GeographicCoordinate(40, -105);
            var pt3395 = new Point2(-11688546, 4838471);

            var tx = new Proj4Transform(wgs, crs);
            var actual3395 = (Point2)tx.TransformValue(ptWgs);
            Assert.AreEqual(pt3395.X, actual3395.X, 1);
            Assert.AreEqual(pt3395.Y, actual3395.Y, 1);

            var inv = tx.GetInverse();
            var actual4326 = (GeographicCoordinate)inv.TransformValue(pt3395);
            Assert.AreEqual(ptWgs.Longitude, actual4326.Longitude, 0.001);
            Assert.AreEqual(ptWgs.Latitude, actual4326.Latitude, 0.001);
        }
Exemplo n.º 16
0
        public void epsg3140()
        {
            var crs = EpsgMicroDatabase.Default.GetCrs(3140);
            Assert.IsNotNull(crs);

            var prj = Proj4Crs.CreateProjection(crs);
            Assert.IsNotNull(prj);
            Assert.AreEqual("cass", prj.Transform.Proj4Name);
            Assert.AreEqual(-18, prj.LatitudeOfOrigin);
            Assert.AreEqual(178, prj.CentralMeridian);
            Assert.AreEqual(109435, prj.FalseEasting, 1);
            Assert.AreEqual(141622, prj.FalseNorthing, 1);

            Assert.AreEqual(6378306, prj.GeographicInfo.Datum.Spheroid.EquatorialRadius, 1);
            Assert.AreEqual(6356571.996, prj.GeographicInfo.Datum.Spheroid.PolarRadius, 1);

            var wgs = EpsgMicroDatabase.Default.GetCrs(4326);
            var ptWgs = new GeographicCoordinate((-17.25 + -18.32)/2.0, (178.74+177.2)/2.0);
            var pt3140 = new Point2(530138.52663372, 821498.68898981); // units in links

            Assert.IsNotNull(prj.GeographicInfo.Datum.ToWGS84);
            Assert.AreEqual(3, prj.GeographicInfo.Datum.ToWGS84.Length);
            Assert.AreEqual(51, prj.GeographicInfo.Datum.ToWGS84[0]);
            Assert.AreEqual(391, prj.GeographicInfo.Datum.ToWGS84[1]);
            Assert.AreEqual(-36, prj.GeographicInfo.Datum.ToWGS84[2]);

            var tx = new Proj4Transform(wgs, crs);
            var actualForward = (Point2)tx.TransformValue(ptWgs);
            Assert.AreEqual(pt3140.X, actualForward.X, 1);
            Assert.AreEqual(pt3140.Y, actualForward.Y, 1);

            var inv = tx.GetInverse();
            var actualReverse = (GeographicCoordinate)inv.TransformValue(pt3140);
            Assert.AreEqual(ptWgs.Longitude, actualReverse.Longitude, 0.01);
            Assert.AreEqual(ptWgs.Latitude, actualReverse.Latitude, 0.01);
        }
Exemplo n.º 17
0
        public void epsg3079_to_epsg3575_proj4()
        {
            var from = EpsgMicroDatabase.Default.GetCrs(3079);
            var fromProj4 = Proj4Crs.CreateProjection(from);
            var to = EpsgMicroDatabase.Default.GetCrs(3575);
            var toProj4 = Proj4Crs.CreateProjection(to);

            var expected3079 = new Point2(6992.885640195105, -644.956855237484);
            var expected3575 = new Point2(-5244224.354585549, 1095575.5476152631);

            var proj = new Proj4Transform(from, to);
            var actual = (Point2)proj.TransformValue(expected3079);
            Assert.AreEqual(expected3575.X, actual.X, 10);
            Assert.AreEqual(expected3575.Y, actual.Y, 10);
        }