private static string GetVCSDisplayName([NotNull] ISpatialReference spatialReference) { IVerticalCoordinateSystem vcs = SpatialReferenceUtils.GetVerticalCoordinateSystem(spatialReference); return(vcs == null ? LocalizableStrings.QaSchemaSpatialReference_NotDefined : vcs.Name); }
public static ISpatialReference GetUniqueSpatialReference( [NotNull] IEnumerable <ISpatialReference> spatialReferences, bool requireEqualVerticalCoordinateSystems) { Assert.ArgumentNotNull(spatialReferences, nameof(spatialReferences)); IVerticalCoordinateSystem uniqueVcs = null; ISpatialReference uniqueSref = null; double bestResolution = double.MaxValue; foreach (ISpatialReference sref in spatialReferences) { if (uniqueSref == null) { uniqueSref = sref; bestResolution = SpatialReferenceUtils.GetXyResolution(uniqueSref); } else { if (requireEqualVerticalCoordinateSystems) { IVerticalCoordinateSystem vcs = SpatialReferenceUtils.GetVerticalCoordinateSystem(sref); if (vcs != null) { if (uniqueVcs == null) { uniqueVcs = vcs; } else { if (vcs != uniqueVcs && !((IClone)uniqueVcs).IsEqual((IClone)vcs)) { throw new ArgumentException( string.Format( "Defined vertical coordinate systems are not equal: {0}, {1}", vcs.Name, uniqueVcs.Name)); } } } } if (uniqueSref != sref) { var compareSpatialReferences = (ICompareCoordinateSystems)uniqueSref; if (!compareSpatialReferences.IsEqualNoVCS(sref)) { throw new ArgumentException( string.Format( "Coordinate systems are not equal: {0}, {1}", sref.Name, uniqueSref.Name)); } // if the resolution is higher --> use as new unique double resolution = SpatialReferenceUtils.GetXyResolution(sref); if (resolution < bestResolution) { bestResolution = resolution; uniqueSref = sref; } } } } return(uniqueSref); }