Skip to content

Commit

Permalink
Code cleanup
Browse files Browse the repository at this point in the history
Signed-off-by: Martin Davis <[email protected]>
  • Loading branch information
dr-jts committed Aug 28, 2020
1 parent 259c8d5 commit 703240c
Showing 1 changed file with 33 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,27 @@ class OverlayNoder {
*/
private static final int MIN_LIMIT_PTS = 20;

private static final boolean IS_NODING_VALIDATED = true;

private static Noder createFixedPrecisionNoder(PrecisionModel pm) {
//Noder noder = new MCIndexSnapRounder(pm);
//Noder noder = new SimpleSnapRounder(pm);
Noder noder = new FastSnapRounder(pm);
return noder;
}

private static Noder createFloatingPrecisionNoder(boolean doValidation) {
MCIndexNoder mcNoder = new MCIndexNoder();
LineIntersector li = new RobustLineIntersector();
mcNoder.setSegmentIntersector(new IntersectionAdder(li));

Noder noder = mcNoder;
if (doValidation) {
noder = new ValidatingNoder( mcNoder);
}
return noder;
}

private PrecisionModel pm;
List<NodedSegmentString> segStrings = new ArrayList<NodedSegmentString>();
private Noder customNoder;
Expand Down Expand Up @@ -120,31 +141,23 @@ public boolean hasEdgesFor(int geomIndex ) {
return hasEdgesB;
}

/**
* Gets a noder appropriate for the precision model supplied.
* This is one of:
* <ul>
* <li>Fixed precision: a snap-rounding noder (which should be fully robust)
* <li>Floating precision: a conventional nodel (which may be non-robust).
* In this case, a validation step is applied to the output from the noder.
* </ul>
*
* @return
*/
private Noder getNoder() {
if (customNoder != null) return customNoder;
if (pm.isFloating())
return createFloatingPrecisionNoder(true);
return createFloatingPrecisionNoder(IS_NODING_VALIDATED);
return createFixedPrecisionNoder(pm);
}

private static Noder createFixedPrecisionNoder(PrecisionModel pm) {
//Noder noder = new MCIndexSnapRounder(pm);
//Noder noder = new SimpleSnapRounder(pm);
Noder noder = new FastSnapRounder(pm);
return noder;
}

static Noder createFloatingPrecisionNoder(boolean doValidation) {
MCIndexNoder mcNoder = new MCIndexNoder();
LineIntersector li = new RobustLineIntersector();
mcNoder.setSegmentIntersector(new IntersectionAdder(li));

Noder noder = mcNoder;
if (doValidation) {
noder = new ValidatingNoder( mcNoder);
}
return noder;
}

public void add(Geometry g, int geomIndex)
{
Expand Down

0 comments on commit 703240c

Please sign in to comment.