[Dive4elements-commits] [PATCH] Create floodmap colorrange dynamically from artifact parameters. Theme setting for colorrange classes is currently not functioning (wasn't before either)
Wald Commits
scm-commit at wald.intevation.org
Thu Apr 11 11:25:47 CEST 2013
# HG changeset patch
# User Christian Lins <christian.lins at intevation.de>
# Date 1365672341 -7200
# Node ID 53a2ceeae9a3d573fb96dc674c256becff30b46b
# Parent c5854dc8d6a1fdfca551708d76b9574f728ed728
Create floodmap colorrange dynamically from artifact parameters. Theme setting for colorrange classes is currently not functioning (wasn't before either).
diff -r c5854dc8d6a1 -r 53a2ceeae9a3 flys-artifacts/src/main/java/de/intevation/flys/exports/MapGenerator.java
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/MapGenerator.java Thu Apr 11 10:55:41 2013 +0200
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/MapGenerator.java Thu Apr 11 11:25:41 2013 +0200
@@ -2,6 +2,7 @@
import com.vividsolutions.jts.geom.Envelope;
+import de.intevation.artifactdatabase.data.StateData;
import de.intevation.artifactdatabase.state.ArtifactAndFacet;
import de.intevation.artifactdatabase.state.Facet;
import de.intevation.artifactdatabase.state.Settings;
@@ -15,6 +16,7 @@
import de.intevation.flys.artifacts.model.map.WMSDBLayerFacet;
import de.intevation.flys.artifacts.model.map.WMSLayerFacet;
import de.intevation.flys.artifacts.model.map.WSPLGENLayerFacet;
+import de.intevation.flys.artifacts.states.WaterlevelGroundDifferences;
import de.intevation.flys.collections.FLYSArtifactCollection;
import de.intevation.flys.utils.ArtifactMapfileGenerator;
import de.intevation.flys.utils.GeometryUtils;
@@ -134,11 +136,24 @@
) {
try {
if(wms instanceof WSPLGENLayerFacet) {
+ // Retrieve waterlevel ground differences from artifact
+ StateData dFrom = flys.getData(WaterlevelGroundDifferences.LOWER_FIELD);
+ StateData dTo = flys.getData(WaterlevelGroundDifferences.UPPER_FIELD);
+ StateData dStep = flys.getData(WaterlevelGroundDifferences.DIFF_FIELD);
+
+ String fromStr = dFrom != null ? (String) dFrom.getValue() : null;
+ String toStr = dTo != null ? (String) dTo.getValue() : null;
+ String stepStr = dStep != null ? (String) dStep.getValue() : null;
+
+ float from = Float.parseFloat(fromStr);
+ float to = Float.parseFloat(toStr);
+ float step = Float.parseFloat(stepStr);
+
ArtifactMapfileGenerator mfg = new ArtifactMapfileGenerator();
mfg.createUeskLayer(
flys,
(WSPLGENLayerFacet) wms,
- ThemeUtil.createDynamicMapserverStyle(attr),
+ ThemeUtil.createDynamicMapserverStyle(attr, from, to, step),
context);
}
else {
diff -r c5854dc8d6a1 -r 53a2ceeae9a3 flys-artifacts/src/main/java/de/intevation/flys/utils/ThemeUtil.java
--- a/flys-artifacts/src/main/java/de/intevation/flys/utils/ThemeUtil.java Thu Apr 11 10:55:41 2013 +0200
+++ b/flys-artifacts/src/main/java/de/intevation/flys/utils/ThemeUtil.java Thu Apr 11 11:25:41 2013 +0200
@@ -660,22 +660,35 @@
* @param theme
* @return String representation of the MapserverStyle
*/
- public static String createDynamicMapserverStyle(Document theme) {
+ public static String createDynamicMapserverStyle(Document theme,
+ float from, float to, float step)
+ {
MapserverStyle ms = new MapserverStyle();
String strStartColor = XMLUtils.xpathString(theme, XPATH_WSPLGEN_STARTCOLOR, null);
Color startColor = strStartColor != null ? parseColor(strStartColor) : new Color(178, 201, 215);
String strEndColor = XMLUtils.xpathString(theme, XPATH_WSPLGEN_ENDCOLOR, null);
Color endColor = strEndColor != null? parseColor(strEndColor) : new Color(2, 27, 42);
+/*
String strNumClasses = XMLUtils.xpathString(theme, XPATH_WSPLGEN_NUMCLASSES, null);
- int numClasses = strNumClasses != null ? Integer.parseInt(strNumClasses) : 5;
+ int numClasses;
+ if (strNumClasses != null) {
+ numClasses = Integer.parseInt(strNumClasses);
+ }
+ else {
+ numClasses = 5;
+ logger.warn("createDynamicMapserverStyle(): strNumClasses is null");
+ }
if (numClasses < 5) {
numClasses = 5;
}
else if (numClasses > 20) {
numClasses = 20;
- }
+ }*/
+
+
+ int numClasses = (int)((to - from) / step);
float rd = (endColor.getRed() - startColor.getRed()) / (float)numClasses;
float gd = (endColor.getGreen() - startColor.getGreen()) / (float)numClasses;
@@ -689,7 +702,7 @@
newColor.append(' ');
newColor.append(startColor.getBlue() + Math.round(n * bd));
- String expr = createWSPLGENExpression(n + 1, numClasses);
+ String expr = createWSPLGENExpression(from + n * step, step, n + 1, numClasses);
Clazz c = new Clazz(expr);
Style s = new Style();
@@ -706,13 +719,12 @@
}
- protected static String createWSPLGENExpression(int idx, int maxIdx) {
+ protected static String createWSPLGENExpression(float val, float step, int idx, int maxIdx) {
if (idx < maxIdx) {
- int lower = idx - 1;
- return "[DIFF] >= " + lower + " AND [DIFF] < " + idx;
+ return "[DIFF] >= " + val + " AND [DIFF] < " + (val + step);
}
else {
- return "[DIFF] >= " + (maxIdx - 1);
+ return "[DIFF] >= " + val;
}
}
More information about the Dive4elements-commits
mailing list