public Overlaps SelectNewOverlaps([CanBeNull] Predicate <Geometry> predicate) { var result = new Overlaps(); IDictionary <GdbObjectReference, IList <Geometry> > overlapsToAdd = OverlapGeometries; Add(overlapsToAdd, predicate, result); return(result); }
private static RemoveOverlapsRequest CreateRemoveOverlapsRequest( IEnumerable <Feature> selectedFeatures, Overlaps overlapsToRemove, IList <Feature> targetFeaturesForVertexInsertion, //RemoveOverlapsOptions options, out List <Feature> updateFeatures) { var request = new RemoveOverlapsRequest { ExplodeMultipartResults = true, // options.ExplodeMultipartResults, StoreOverlapsAsNewFeatures = false // options.StoreOverlapsAsNewFeatures }; updateFeatures = new List <Feature>(); var selectedFeatureList = CollectionUtils.GetCollection(selectedFeatures); ProtobufConversionUtils.ToGdbObjectMsgList( selectedFeatureList, request.SourceFeatures, request.ClassDefinitions); updateFeatures.AddRange(selectedFeatureList); foreach (var overlapsBySourceRef in overlapsToRemove.OverlapGeometries) { int classId = (int)overlapsBySourceRef.Key.ClassId; int objectId = (int)overlapsBySourceRef.Key.ObjectId; var overlapMsg = new OverlapMsg(); overlapMsg.OriginalFeatureRef = new GdbObjRefMsg() { ClassHandle = classId, ObjectId = objectId }; foreach (Geometry overlap in overlapsBySourceRef.Value) { overlapMsg.Overlaps.Add(ProtobufConversionUtils.ToShapeMsg(overlap, true)); } request.Overlaps.Add(overlapMsg); } if (targetFeaturesForVertexInsertion != null) { ProtobufConversionUtils.ToGdbObjectMsgList( targetFeaturesForVertexInsertion, request.UpdatableTargetFeatures, request.ClassDefinitions); updateFeatures.AddRange(targetFeaturesForVertexInsertion); } return(request); }
private static void Add(IDictionary <GdbObjectReference, IList <Geometry> > overlapsToAdd, Predicate <Geometry> predicate, Overlaps toResult) { foreach (var overlapsBySourceRef in overlapsToAdd) { List <Geometry> selectedGeometries = overlapsBySourceRef.Value.Where(g => predicate == null || predicate(g)) .ToList(); if (selectedGeometries.Count > 0) { toResult.AddGeometries(overlapsBySourceRef.Key, selectedGeometries); } } }
public static RemoveOverlapsResult RemoveOverlaps( RemoveOverlapsGrpc.RemoveOverlapsGrpcClient rpcClient, IEnumerable <Feature> selectedFeatures, Overlaps overlapsToRemove, IList <Feature> overlappingFeatures, CancellationToken cancellationToken) { List <Feature> updateFeatures; RemoveOverlapsRequest request = CreateRemoveOverlapsRequest( selectedFeatures, overlapsToRemove, overlappingFeatures, out updateFeatures); RemoveOverlapsResponse response = rpcClient.RemoveOverlaps(request, null, null, cancellationToken); return(GetRemoveOverlapsResult(response, updateFeatures)); }
public void AddGeometries([NotNull] Overlaps fromOverlaps, [CanBeNull] Predicate <Geometry> predicate) { Add(fromOverlaps.OverlapGeometries, predicate, this); }