private static string GetVCSDisplayName([NotNull] ISpatialReference spatialReference)
        {
            IVerticalCoordinateSystem vcs =
                SpatialReferenceUtils.GetVerticalCoordinateSystem(spatialReference);

            return(vcs == null
                                       ? LocalizableStrings.QaSchemaSpatialReference_NotDefined
                                       : vcs.Name);
        }
Exemplo n.º 2
0
        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);
        }