private static IList <CutSubcurve> CalculateReshapeLines( [NotNull] IList <IFeature> sourceFeatures, [NotNull] IList <IFeature> targetFeatures, [NotNull] CalculateReshapeLinesRequest request, [CanBeNull] ITrackCancel trackCancel, out ReshapeAlongCurveUsability usability) { Stopwatch watch = Stopwatch.StartNew(); IEnvelope visibleExtent; ReshapeCurveFilterOptions filterOptions = GetLineFilterOptions(request.FilterOptions, out visibleExtent); TargetBufferOptions targetBufferOptions = GetTargetBufferOptions(request.TargetBufferOptions); IList <CutSubcurve> resultLines = new List <CutSubcurve>(); usability = ChangeGeometryAlongUtils.CalculateReshapeCurves( sourceFeatures, targetFeatures, visibleExtent, request.Tolerance, targetBufferOptions, filterOptions, resultLines, trackCancel); _msg.DebugStopTiming(watch, "Calculated {0} reshape lines", resultLines.Count); return(resultLines); }
private static TargetBufferOptions GetTargetBufferOptions( [CanBeNull] TargetBufferOptionsMsg targetBufferOptionsMsg) { if (targetBufferOptionsMsg == null) { return(new TargetBufferOptions()); } var targetBufferOptions = new TargetBufferOptions( targetBufferOptionsMsg.BufferDistance, targetBufferOptionsMsg.BufferMinimumSegmentLength); return(targetBufferOptions); }