Exemplo n.º 1
0
        public void Start(INode node, AddRelatedFeature addRelatedFeature, int level)
        {
            lastFeature = node;
            lastRelatedFeatureGeometries.Clear();
            lastRelatedFeatures    = new List <IFeature>();
            lastRelatedNewFeatures = new List <IFeature>();

            lastCoordinate = (Coordinate)node.Geometry.Coordinates[0].Clone();
            foreach (IBranch branch in node.IncomingBranches)
            {
                lastRelatedFeatures.Add(branch);
                var clone = (IBranch)branch.Clone();
                lastRelatedNewFeatures.Add(clone);
                lastRelatedFeatureGeometries.Add((IGeometry)clone.Geometry.Clone());

                if (null != addRelatedFeature)
                {
                    activeInRules.Add(new List <IFeatureRelationInteractor>());
                    addRelatedFeature(activeInRules[activeInRules.Count - 1], branch, clone, level);
                }
            }
            foreach (var branch in node.OutgoingBranches)
            {
                lastRelatedFeatures.Add(branch);
                var clone = (IBranch)branch.Clone();
                lastRelatedNewFeatures.Add(clone);
                lastRelatedFeatureGeometries.Add((IGeometry)clone.Geometry.Clone());
                if (null != addRelatedFeature)
                {
                    activeOutRules.Add(new List <IFeatureRelationInteractor>());
                    addRelatedFeature(activeOutRules[activeOutRules.Count - 1], branch, clone, level);
                }
            }
        }
Exemplo n.º 2
0
        private void Start(IBranch branch, IBranch cloneBranch, AddRelatedFeature addRelatedFeature, int level)
        {
            originalBranch = branch;
            clonedBranch   = cloneBranch;

            originalBranchGeometry = (ILineString)branch.Geometry.Clone();

            fractionLookUp.Clear();
            cloneLookUp.Clear();

            var branchFeatures = branch.BranchFeatures.OfType <T>().ToList();

            foreach (var branchFeature in branchFeatures)
            {
                var clonedBranchFeature = (T)branchFeature.Clone();

                cloneLookUp[branchFeature] = clonedBranchFeature;
                cloneBranch.BranchFeatures.Add(clonedBranchFeature);

                fractionLookUp[branchFeature] = branchFeature.Chainage / branch.Length;

                if (addRelatedFeature == null)
                {
                    continue;
                }
                addRelatedFeature(activeRules, branchFeature, clonedBranchFeature, level);
            }
        }
        public void Start(INode node, AddRelatedFeature addRelatedFeature, int level)
        {
            lastFeature = node;
            lastRelatedFeatureGeometries.Clear();
            lastRelatedFeatures = new List<IFeature>();
            lastRelatedNewFeatures = new List<IFeature>();

            lastCoordinate = (ICoordinate)node.Geometry.Coordinates[0].Clone();
            foreach (IBranch branch in node.IncomingBranches)
            {
                lastRelatedFeatures.Add(branch);
                var clone = (IBranch)branch.Clone();
                lastRelatedNewFeatures.Add(clone);
                lastRelatedFeatureGeometries.Add((IGeometry)clone.Geometry.Clone());

                if (null != addRelatedFeature)
                {
                    activeInRules.Add(new List<IFeatureRelationInteractor>());
                    addRelatedFeature(activeInRules[activeInRules.Count - 1], branch, clone, level);
                }
            }
            foreach (var branch in node.OutgoingBranches)
            {
                lastRelatedFeatures.Add(branch);
                var clone = (IBranch) branch.Clone();
                lastRelatedNewFeatures.Add(clone);
                lastRelatedFeatureGeometries.Add((IGeometry)clone.Geometry.Clone());
                if (null != addRelatedFeature)
                {
                    activeOutRules.Add(new List<IFeatureRelationInteractor>());
                    addRelatedFeature(activeOutRules[activeOutRules.Count - 1], branch, clone, level);
                }
            }
        }
 public override IFeatureRelationInteractor Activate(IFeature feature, IFeature cloneFeature, AddRelatedFeature addRelatedFeature, int level, IFallOffPolicy fallOffPolicy)
 {
     FallOffPolicy = fallOffPolicy ?? new NoFallOffPolicy();
     INode node;
     if (null != (node = (feature as INode)))
     {
         var cloneRule = (NodeToBranchRelationInteractor)CloneRule();
         cloneRule.Start(node, addRelatedFeature, level);
         return cloneRule;
     }
     return null;
 }
Exemplo n.º 5
0
        public override IFeatureRelationInteractor Activate(IFeature feature, IFeature cloneFeature, AddRelatedFeature addRelatedFeature, int level, IFallOffPolicy fallOffPolicy)
        {
            FallOffPolicy = fallOffPolicy ?? new NoFallOffPolicy();

            var branch = feature as IBranch;

            if (branch == null || branch.BranchFeatures.Count <= 0)
            {
                return(null);
            }

            var cloneRule = (BranchToBranchFeatureRelationInteractor <T>)CloneRule();

            cloneRule.Start(branch, cloneFeature as IBranch, addRelatedFeature, level);

            return(cloneRule);
        }
 public virtual IFeatureRelationInteractor Activate(IFeature feature, IFeature cloneFeature, AddRelatedFeature addRelatedFeature, int level, IFallOffPolicy fallOffPolicy)
 {
     return(null);
 }
Exemplo n.º 7
0
        public override IFeatureRelationInteractor Activate(IFeature feature, IFeature cloneFeature, AddRelatedFeature addRelatedFeature, int level, IFallOffPolicy fallOffPolicy)
        {
            FallOffPolicy = fallOffPolicy ?? new NoFallOffPolicy();
            INode node;

            if (null != (node = (feature as INode)))
            {
                var cloneRule = (NodeToBranchRelationInteractor)CloneRule();
                cloneRule.Start(node, addRelatedFeature, level);
                return(cloneRule);
            }
            return(null);
        }
Exemplo n.º 8
0
 public virtual IFeatureRelationInteractor Activate(IFeature feature, IFeature cloneFeature, AddRelatedFeature addRelatedFeature, int level, IFallOffPolicy fallOffPolicy)
 {
     return null;
 }