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); } } } }
public void AddInnerRingGeometry([NotNull] IGeometry geometry) { LowLevelGeometries.Add(geometry); InnerRings.Add(geometry); }
public void JoinPart([NotNull] GeometryPart other) { LowLevelGeometries.AddRange(other.LowLevelGeometries); InnerRings.AddRange(other.InnerRings); }