Exemple #1
0
        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);
        }
Exemple #2
0
        /**
         * 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);
        }