private void DragAdjacentFeaturesAlong(LinearNetworkNodeUpdater nodeUpdater) { var edgeFeatureUpdates = GetEdgeFeatures(_updatedInOperation.Keys).ToList(); var junctionUpdates = GetJunctionFeatures(_updatedInOperation.Keys).ToList(); foreach (IFeature edgeFeature in edgeFeatureUpdates) { var originalPolyline = (IPolyline)_updatedInOperation[edgeFeature]; IPolyline newPolyline = (IPolyline)edgeFeature.Shape; bool newPolylineChanged = nodeUpdater.UpdateEdgeNodes(edgeFeature, originalPolyline, newPolyline); if (newPolylineChanged) { GdbObjectUtils.SetFeatureShape(edgeFeature, newPolyline); edgeFeature.Store(); } } foreach (IFeature junctionFeature in junctionUpdates) { var originalPoint = (IPoint)_updatedInOperation[junctionFeature]; nodeUpdater.JunctionUpdated(junctionFeature, originalPoint, (IPoint)junctionFeature.Shape); } }
private IEnumerable <IFeature> DragAdjacentFeaturesAlong() { if (_updatedInOperation.Count == 0) { return(new List <IFeature>(0)); } LinearNetworkNodeUpdater nodeUpdater = new LinearNetworkNodeUpdater(NetworkFeatureFinder) { KnownInserts = _createdInOperation, KnownDeletes = _deletedInOperation }; DragAdjacentFeaturesAlong(nodeUpdater); if (nodeUpdater.RefreshEnvelope != null) { RefreshArea?.Union(nodeUpdater.RefreshEnvelope); } _msg.DebugFormat("Maintained connectivity by dragging end points with {0}", StringUtils.Concatenate(nodeUpdater.UpdatedFeatures, f => GdbObjectUtils.ToString(f), ", ")); return(nodeUpdater.UpdatedFeatures); }