private IReferenceSystem ResolveCoordinateReferenceSystem(string id) { if (string.IsNullOrEmpty(id)) { return(GeographicCoordinateReferenceSystems.FromName("WGS84").FirstOrDefault()); } IList <IReferenceSystem> systems = GeocentricCoordinateReferenceSystems.FromIdentifier(id).ToList <IReferenceSystem>(); if (systems.Count > 0) { return(systems[0]); } systems = GeographicCoordinateReferenceSystems.FromIdentifier(id).ToList <IReferenceSystem>(); if (systems.Count > 0) { return(systems[0]); } systems = GridReferenceSystems.FromIdentifier(id).ToList <IReferenceSystem>(); if (systems.Count > 0) { return(systems[0]); } systems = ProjectedCoordinateReferenceSystems.FromIdentifier(id).ToList <IReferenceSystem>(); if (systems.Count > 0) { return(systems[0]); } systems = VerticalCoordinateReferenceSystems.FromIdentifier(id).ToList <IReferenceSystem>(); if (systems.Count > 0) { return(systems[0]); } return(GeographicCoordinateReferenceSystems.FromName("WGS84").FirstOrDefault()); }
/// <summary> /// Determines the ReferenceSystem from the Crs object. /// </summary> /// <param name="obj">The input crs object.</param> /// <returns>The determined ReferenceSystem.</returns> private IReferenceSystem GetReferenceSystem(CrsObject obj) { if (obj == null) { return(GeographicCoordinateReferenceSystems.FromName("WGS84").FirstOrDefault()); } if (obj.Type == "name") { if (obj.Properties.ContainsKey("name")) { IList <IReferenceSystem> systems = GeocentricCoordinateReferenceSystems.FromIdentifier(obj.Properties["name"]).ToList <IReferenceSystem>(); if (systems.Count > 0) { return(systems[0]); } systems = GeographicCoordinateReferenceSystems.FromIdentifier(obj.Properties["name"]).ToList <IReferenceSystem>(); if (systems.Count > 0) { return(systems[0]); } systems = GridReferenceSystems.FromIdentifier(obj.Properties["name"]).ToList <IReferenceSystem>(); if (systems.Count > 0) { return(systems[0]); } systems = ProjectedCoordinateReferenceSystems.FromIdentifier(obj.Properties["name"]).ToList <IReferenceSystem>(); if (systems.Count > 0) { return(systems[0]); } systems = VerticalCoordinateReferenceSystems.FromIdentifier(obj.Properties["name"]).ToList <IReferenceSystem>(); if (systems.Count > 0) { return(systems[0]); } throw new NotSupportedException("Not supported Coordinate Reference System: " + obj.Properties["name"]); } else { throw new IOException("Named Crs must have a \"name\" property with string value."); } } else if (obj.Type == "link") { if (obj.Properties.ContainsKey("href")) { if (!obj.Properties.ContainsKey("type") || obj.Properties.ContainsKey("type") && obj.Properties["type"] == "esriwkt") { return(ReadReferenceSystemFromFile(obj.Properties["href"])); } else { throw new NotSupportedException("The given Reference System type is not supported."); } } else { throw new InvalidDataException("Linked Crs must have an \"href\" property with string value."); } } else { throw new NotSupportedException("Not supported Coordinate Reference System type: " + obj.Type); } }