# HG changeset patch # User Sascha L. Teichmann # Date 1264270234 0 # Node ID 464e03bf786baa2b2abf47e476b1351bd9bc4647 # Parent 96a1e92e7ed22da20aa9430edba66b6e642a1828 Try to cull points from set of input points when generating "Profilschnitte". gnv-artifacts/trunk@612 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 96a1e92e7ed2 -r 464e03bf786b gnv-artifacts/ChangeLog --- a/gnv-artifacts/ChangeLog Sat Jan 23 17:42:04 2010 +0000 +++ b/gnv-artifacts/ChangeLog Sat Jan 23 18:10:34 2010 +0000 @@ -1,3 +1,11 @@ +2010-01-23 Sascha L. Teichmann + + * src/main/java/de/intevation/gnv/math/Interpolation3D.java: + Apply same logic about the number of points to "Profilschnitte" + too. If there are more "gnv.interpolation3d.cull.point.threshold" + points they are culled against a 5% extended bounding box around + the path. Default threshold: 1000. + 2010-01-23 Sascha L. Teichmann * src/main/java/de/intevation/gnv/math/AreaInterpolation.java: diff -r 96a1e92e7ed2 -r 464e03bf786b gnv-artifacts/src/main/java/de/intevation/gnv/math/Interpolation3D.java --- a/gnv-artifacts/src/main/java/de/intevation/gnv/math/Interpolation3D.java Sat Jan 23 17:42:04 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/math/Interpolation3D.java Sat Jan 23 18:10:34 2010 +0000 @@ -22,6 +22,9 @@ { private static Logger log = Logger.getLogger(Interpolation3D.class); + public static final int CULL_POINT_THRESHOLD = Integer.getInteger( + "gnv.interpolation3d.cull.point.threshold", 1000); + public static final int DEFAULT_WIDTH = 1024; public static final int DEFAULT_HEIGHT = 768; @@ -95,7 +98,23 @@ return false; } - List cells = GridCell.pointsToGridCells(points); + Envelope relevantArea = null; + + if (M > CULL_POINT_THRESHOLD) { + + relevantArea = new Envelope(path.get(N-1)); + + for (int i = N-2; i >= 0; --i) { + relevantArea.expandToInclude(path.get(i)); + } + + relevantArea.expandBy( + 0.05d*relevantArea.getWidth(), + 0.05d*relevantArea.getHeight()); + } + + List cells = GridCell.pointsToGridCells( + points, relevantArea); if (cells.isEmpty()) { log.warn("no cells found");