Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/math/GridCell.java @ 517:96a1e92e7ed2
If the number of data points to generate a "Horizontalschnitt"
is above a given threshold, they are culled against an 5% extented
bounding box of the interpolation area.
gnv-artifacts/trunk@611 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sat, 23 Jan 2010 17:42:04 +0000 |
parents | d9d933e06875 |
children | 4e347624ee7c |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/math/GridCell.java Sat Jan 23 14:03:26 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/math/GridCell.java Sat Jan 23 17:42:04 2010 +0000 @@ -16,12 +16,16 @@ import java.util.HashMap; import java.util.List; +import org.apache.log4j.Logger; + /** * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) */ public class GridCell implements Serializable { + private static Logger log = Logger.getLogger(GridCell.class); + public static final class CellFinder implements ItemVisitor { @@ -85,6 +89,13 @@ public static List<GridCell> pointsToGridCells( List<? extends Point2d> points ) { + return pointsToGridCells(points, null); + } + + public static List<GridCell> pointsToGridCells( + List<? extends Point2d> points, + Envelope relevantArea + ) { int minI = Integer.MAX_VALUE; int maxI = Integer.MIN_VALUE; int minJ = Integer.MAX_VALUE; @@ -93,8 +104,15 @@ HashMap<Integer, HashMap<Integer, Point2d>> rows = new HashMap<Integer, HashMap<Integer, Point2d>>(); + int culled = 0; + for (Point2d p: points) { + if (relevantArea != null && !relevantArea.contains(p.x, p.y)) { + ++culled; + continue; + } + if (p.i < minI) minI = p.i; if (p.i > maxI) maxI = p.i; if (p.j < minJ) minJ = p.j; @@ -109,6 +127,10 @@ row.put(p.j, p); } + if (log.isDebugEnabled()) { + log.debug("culled points: " + culled); + } + ArrayList<GridCell> cells = new ArrayList<GridCell>(points.size()); for (int i = minI + 1; i <= maxI; ++i) {