Exemplo n.º 1
0
        private void AddGeometries([NotNull] IEnumerable <IGeometry> lowLevelGeometries,
                                   [NotNull] IGeometry toHighLevelGeometry)
        {
            var geometryCollection = (IGeometryCollection)toHighLevelGeometry;

            var multiPatch = toHighLevelGeometry as IMultiPatch;

            object missing = Type.Missing;

            foreach (IGeometry geometry in lowLevelGeometries)
            {
                if (toHighLevelGeometry.SpatialReference == null)
                {
                    toHighLevelGeometry.SpatialReference = geometry.SpatialReference;
                }

                geometryCollection.AddGeometry(geometry, ref missing, ref missing);

                var ring = geometry as IRing;

                if (multiPatch != null && ring != null)
                {
                    if (InnerRings.Contains(geometry))
                    {
                        multiPatch.PutRingType(
                            ring, esriMultiPatchRingType.esriMultiPatchInnerRing);
                    }
                    else
                    {
                        // TODO: do we need to maintain the original ring type -> test with FirstRing!
                        multiPatch.PutRingType(
                            ring, esriMultiPatchRingType.esriMultiPatchOuterRing);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void AddInnerRingGeometry([NotNull] IGeometry geometry)
        {
            LowLevelGeometries.Add(geometry);

            InnerRings.Add(geometry);
        }
Exemplo n.º 3
0
 public void JoinPart([NotNull] GeometryPart other)
 {
     LowLevelGeometries.AddRange(other.LowLevelGeometries);
     InnerRings.AddRange(other.InnerRings);
 }