Exemplo n.º 1
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);
        }
 /// <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 IGeometry ScaledNoding(IGeometry 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);
 }