/// <summary> /// Creates an instance of this class /// </summary> public DotSpatialSpatialReference(ProjectionInfo projectionInfo) { _oid = projectionInfo.ToProj4String(); Definition = projectionInfo.ToProj4String(); ProjectionInfo = projectionInfo; }
/// <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."); }
/// <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]))); } }
/// <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())); }
/// <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()); }
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; }