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); } } }
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; }
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); }
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); }
public virtual IFeatureRelationInteractor Activate(IFeature feature, IFeature cloneFeature, AddRelatedFeature addRelatedFeature, int level, IFallOffPolicy fallOffPolicy) { return null; }