Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileMeshCrossOutputState.java @ 443:da21c256a0ba
"horizontale Schnittprofile" are now configured via conf.xml
gnv-artifacts/trunk@491 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 29 Dec 2009 14:54:17 +0000 |
parents | eb2ac62e853a |
children | 4e347624ee7c |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileMeshCrossOutputState.java Tue Dec 29 10:09:26 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileMeshCrossOutputState.java Tue Dec 29 14:54:17 2009 +0000 @@ -36,6 +36,8 @@ import de.intevation.gnv.utils.WKTUtils; import de.intevation.gnv.utils.StringUtils; +import de.intevation.gnv.artifacts.context.GNVArtifactContext; + import de.intevation.artifacts.CallContext; import org.jfree.chart.ChartTheme; @@ -43,8 +45,9 @@ import com.vividsolutions.jts.geom.Coordinate; /** - * @author Tim Englich <tim.englich@intevation.de> - * + * @author Tim Englich (tim.englich@intevation.de) + * @author Ingo Weinzierl (iweinzierl@intevation.de) + * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) */ public class HorizontalProfileMeshCrossOutputState extends HorizontalProfileOutputState { @@ -127,6 +130,16 @@ return chart; } + private static int numSamples(CallContext callContext) { + GNVArtifactContext context = + (GNVArtifactContext)callContext.globalContext(); + Integer samples = (Integer)context.get( + GNVArtifactContext.HORIZONTAL_CROSS_SECTION_PROFILE_SAMPLES_KEY); + return samples != null + ? samples.intValue() + : GNVArtifactContext.DEFAULT_HORIZONTAL_CROSS_SECTION_PROFILE_SAMPLES; + } + @Override protected Object getChartResult(String uuid, CallContext callContext) { log.debug("HorizontalProfileMeshCrossOutputState.getChartResult"); @@ -177,6 +190,7 @@ result = process( Arrays.asList(coords), + numSamples(callContext), queryExecutor.executeQuery( queryID, addedFilterValues)); @@ -206,9 +220,16 @@ public static Collection<Result> process( List<Coordinate> path, + int numSamples, Collection<Result> input ) { - log.debug("------ number of points before processing: " + input.size()); + boolean debug = log.isDebugEnabled(); + + if (debug) { + log.debug("--- number of points before processing: " + input.size()); + log.debug(" number samples: " + numSamples); + } + ArrayList<Result> output = new ArrayList<Result>(); Result last = null; @@ -239,6 +260,7 @@ sectionHandler = new SectionHandler( path, + numSamples, output, resultDescriptor); @@ -259,7 +281,9 @@ sectionHandler.finish(); } - log.debug("------ number of points after processing: " + output.size()); + if (debug) { + log.debug("--- number of points after processing: " + output.size()); + } return output; } @@ -278,9 +302,6 @@ public static final double EPSILON = 1e-5d; - public static final int INTERPOLATION_STEPS = - Integer.getInteger("interpolation.steps", 500).intValue(); - public static final class SectionHandler implements Interpolation2D.Consumer { @@ -290,16 +311,19 @@ private Result prototyp; private ResultDescriptor descriptor; private boolean lastWasSuccess; + private int numSamples; public SectionHandler() { } public SectionHandler( List<Coordinate> path, + int numSamples, Collection<Result> output, ResultDescriptor descriptor ) { this.path = path; + this.numSamples = numSamples; this.output = output; this.descriptor = descriptor; points = new ArrayList<Point2d>(); @@ -318,7 +342,7 @@ points, 0d, distance, - INTERPOLATION_STEPS, + numSamples, LinearMetrics.INSTANCE, this); }