/// <summary>
        /// Runs a ScaledNoder on input.
        /// Input vertices should be rounded to precision model.
        /// </summary>
        /// <param name="geom"></param>
        /// <param name="scaleFactor"></param>
        /// <returns>The noded geometry</returns>
        public static Geometry ScaledNoding(Geometry geom, double scaleFactor)
        {
            var segs    = CreateSegmentStrings(geom);
            var fixedPM = new PrecisionModel(scaleFactor);
            var noder   = new ScaledNoder(new MCIndexSnapRounder(new PrecisionModel(1.0)),
                                          fixedPM.Scale);

            noder.ComputeNodes(segs);
            var nodedSegStrings = noder.GetNodedSubstrings();

            return(SegmentStringUtil.ToGeometry(nodedSegStrings, geom.Factory));
        }
Example #2
0
        private void BufferFixedPrecision(IPrecisionModel fixedPrecModel)
        {
            INoder noder = new ScaledNoder(new MCIndexSnapRounder(new PrecisionModel(1.0)),
                                           fixedPrecModel.Scale);

            var bufBuilder = new BufferBuilder(_bufParams);

            bufBuilder.WorkingPrecisionModel = fixedPrecModel;
            bufBuilder.Noder = noder;
            // this may throw an exception, if robustness errors are encountered
            _resultGeometry = bufBuilder.Buffer(_argGeom, _distance);
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="fixedPM"></param>
        private void BufferFixedPrecision(IPrecisionModel fixedPM)
        {
            INoder noder = new ScaledNoder(new MCIndexSnapRounder(new PrecisionModel(1.0)), fixedPM.Scale);

            BufferBuilder bufBuilder = new BufferBuilder();

            bufBuilder.WorkingPrecisionModel = fixedPM;
            bufBuilder.Noder            = noder;
            bufBuilder.QuadrantSegments = quadrantSegments;
            bufBuilder.EndCapStyle      = endCapStyle;
            // this may throw an exception, if robustness errors are encountered
            resultGeometry = bufBuilder.Buffer(argGeom, distance);
        }