Пример #1
0
        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);
        }
Пример #2
0
        private static TargetBufferOptions GetTargetBufferOptions(
            [CanBeNull] TargetBufferOptionsMsg targetBufferOptionsMsg)
        {
            if (targetBufferOptionsMsg == null)
            {
                return(new TargetBufferOptions());
            }

            var targetBufferOptions = new TargetBufferOptions(
                targetBufferOptionsMsg.BufferDistance,
                targetBufferOptionsMsg.BufferMinimumSegmentLength);

            return(targetBufferOptions);
        }