コード例 #1
0
ファイル: Overlaps.cs プロジェクト: sungaoyong/ProSuite
        public Overlaps SelectNewOverlaps([CanBeNull] Predicate <Geometry> predicate)
        {
            var result = new Overlaps();

            IDictionary <GdbObjectReference, IList <Geometry> > overlapsToAdd = OverlapGeometries;

            Add(overlapsToAdd, predicate, result);

            return(result);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: Overlaps.cs プロジェクト: sungaoyong/ProSuite
        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);
                }
            }
        }
コード例 #4
0
        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));
        }
コード例 #5
0
ファイル: Overlaps.cs プロジェクト: sungaoyong/ProSuite
 public void AddGeometries([NotNull] Overlaps fromOverlaps,
                           [CanBeNull] Predicate <Geometry> predicate)
 {
     Add(fromOverlaps.OverlapGeometries, predicate, this);
 }