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); }