private static INoder CreateFloatingPrecisionNoder(bool doValidation) { var mcNoder = new MCIndexNoder(); var li = new RobustLineIntersector(); mcNoder.SegmentIntersector = new IntersectionAdder(li); INoder noder = mcNoder; if (doValidation) { noder = new ValidatingNoder(mcNoder); } return(noder); }
/** * Runs a noder on one or two sets of input geometries * and validates that the result is fully noded. * * @param geom1 a geometry * @param geom2 a geometry, which may be null * @param noder the noder to use * @return the fully noded linework * * @throws TopologyException */ public static Geometry NodeValidated(Geometry geom1, Geometry geom2, INoder noder) { var lines = new List <Geometry>(LineStringExtracter.GetLines(geom1)); if (geom2 != null) { lines.AddRange(LineStringExtracter.GetLines(geom2)); } var ssList = ToSegmentStrings(lines); var noderValid = new ValidatingNoder(noder); noderValid.ComputeNodes(ssList); var nodedList = noder.GetNodedSubstrings(); var result = ToLines(nodedList, geom1.Factory); return(result); }