/// <summary>
        /// Creates an instance of this class
        /// </summary>
        public DotSpatialSpatialReference(ProjectionInfo projectionInfo)
        {
            _oid = projectionInfo.ToProj4String();
            Definition = projectionInfo.ToProj4String();
            ProjectionInfo = projectionInfo;

        }
Beispiel #2
0
        /// <summary>
        /// Reads the authority code.
        /// </summary>
        /// <param name="authority">
        /// The authority.
        /// </param>
        /// <param name="epsgCode">
        /// The code.
        /// </param>
        private static ProjectionInfo ReadAuthorityCode(string authority, int epsgCode)
        {
            ProjectionInfo pi =
                AuthorityCodeHandler.Instance[string.Format("{0}:{1}", authority, epsgCode)];

            if (pi != null)
            {
                // we need to copy the projection information because the Authority Codes implementation returns its one and only
                // in memory copy of the ProjectionInfo. Passing it to the caller might introduce unintended results.
                var info = FromProj4String(pi.ToProj4String());
                info.NoDefs = false;
                return(info);
            }

            throw new ArgumentOutOfRangeException("Authority Code not found.");
        }
Beispiel #3
0
        /// <summary>
        /// The code that actually tests an input projection
        /// </summary>
        public static void TestProjection(ProjectionInfo pStart)
        {
            ProjectionInfo pEnd = KnownCoordinateSystems.Geographic.World.WGS1984;
            double[] xy = new double[2];
            double x = 0;
            if (pStart.FalseEasting != null)
            {
                x = pStart.FalseEasting.Value;
                xy[0] = pStart.FalseEasting.Value;
            }
            double[] z = new double[1];
            Reproject.ReprojectPoints(xy, z, pStart, pEnd, 0, 1);

            double y = 0;
            string source = pStart.ToProj4String();
            Proj4.ProjectPoint(ref x, ref y, source, pEnd.ToProj4String());
            if (Math.Abs(x - xy[0]) > 0.00000001)
            {
                Assert.Fail(String.Format("The longitude was off by {0} decimal degrees from proj4", (x - xy[0])));
            }
            if (Math.Abs(y - xy[1]) > 0.00000001)
            {
                Assert.Fail(String.Format("The latitude was off by {0} decimal degrees from proj4", (y - xy[1])));
            }
            z[0] = 0;
            Reproject.ReprojectPoints(xy, z, pEnd, pStart, 0, 1);
            Proj4.ProjectPoint(ref x, ref y, pEnd.ToProj4String(), source);
            if (Math.Abs(x - xy[0]) > 1 / pStart.Unit.Meters)
            {
                Assert.Fail(String.Format("The X coordinate was off by {0} {1}", (x - xy[0]), pStart.GetUnitText(xy[0])));
            }
            if (Math.Abs(y - xy[1]) > 1 / pStart.Unit.Meters)
            {
                Assert.Fail(String.Format("The Y coordinate was off by {0} {1}", (y - xy[1]), pStart.GetUnitText(xy[1])));
            }
        }
Beispiel #4
0
        /// <summary>
        /// Gets a boolean that is true if the Esri WKT string created by the projections matches.
        ///   There are multiple ways to write the same projection, but the output Esri WKT string
        ///   should be a good indicator of whether or not they are the same.
        /// </summary>
        /// <param name="other">
        /// The other projection to compare with.
        /// </param>
        /// <returns>
        /// Boolean, true if the projections are the same.
        /// </returns>
        public bool Equals(ProjectionInfo other)
        {
            if (other == null)
            {
                return(false);
            }

            return(ToEsriString().Equals(other.ToEsriString()) || ToProj4String().Equals(other.ToProj4String()));
        }
Beispiel #5
0
        /// <summary>
        /// Gets a boolean that is true if the Esri WKT string created by the projections matches.
        ///   There are multiple ways to write the same projection, but the output Esri WKT string
        ///   should be a good indicator of whether or not they are the same.
        /// </summary>
        /// <param name="other">
        /// The other projection to compare with.
        /// </param>
        /// <returns>
        /// Boolean, true if the projections are the same.
        /// </returns>
        public bool Equals(ProjectionInfo other)
        {
            if (other == null)
            {
                return false;
            }

            return ToEsriString().Equals(other.ToEsriString()) || ToProj4String().Equals(other.ToProj4String());
        }
        public void ProjectionInfoConstructorTest1()
        {
            string proj4String = "+proj=longlat +ellps=WGS84 +no_defs ";
            ProjectionInfo expected = ProjectionInfo.FromProj4String(proj4String);

            ProjectionInfo actual = new ProjectionInfo();
            actual.GeographicInfo.Datum.Spheroid = new Spheroid("WGS84");
            actual.NoDefs = true;
            actual.IsLatLon = true;

            Assert.AreEqual(expected.ToProj4String(), actual.ToProj4String());
        }
        public void ProjectionInfoConstructorTest2()
        {
            string proj4String = null;
            ProjectionInfo actual = ProjectionInfo.FromProj4String(proj4String);
            ProjectionInfo expected = new ProjectionInfo();

            Assert.AreEqual(expected.ToProj4String(), actual.ToProj4String());
        }
Beispiel #8
0
        public static ProjectionInfo CreateProjection(ICrsGeographic crsGeographic)
        {
            if (crsGeographic == null) throw new ArgumentNullException("crsGeographic");
            Contract.Ensures(Contract.Result<ProjectionInfo>() != null);

            var geographic = CreateGeographic(crsGeographic);

            var result = new ProjectionInfo {
                GeographicInfo = geographic,
                IsLatLon = true,
                Transform = new DotSpatial.Projections.Transforms.LongLat()
            };

            var finalResult = ProjectionInfo.FromProj4String(result.ToProj4String()); // TODO: fix this hack
            return finalResult;
        }