예제 #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);
        }
예제 #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);
        }
예제 #3
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);
        }
예제 #4
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);
        }
예제 #5
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);
        }
예제 #6
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);
        }
예제 #7
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);
        }
예제 #8
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);
        }