diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/RiverAxisState.java @ 1052:eeebf8514c7f

The boundary (extent) for the river axis is determined based on its geometry - this extent is written into the wms facet. flys-artifacts/trunk@2514 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 19 Aug 2011 15:52:03 +0000
parents ae198bef4ba0
children c37084f31c84
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/RiverAxisState.java	Fri Aug 19 14:13:51 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/RiverAxisState.java	Fri Aug 19 15:52:03 2011 +0000
@@ -3,18 +3,25 @@
 import java.util.List;
 import java.util.Map;
 
+import com.vividsolutions.jts.geom.Geometry;
+
 import org.apache.log4j.Logger;
 
 import de.intevation.artifacts.CallContext;
 import de.intevation.artifacts.CallMeta;
 
+import de.intevation.artifacts.common.utils.Config;
+
 import de.intevation.artifactdatabase.state.Facet;
 
+import de.intevation.flys.model.RiverAxis;
+
 import de.intevation.flys.artifacts.FLYSArtifact;
 import de.intevation.flys.artifacts.context.FLYSContext;
 import de.intevation.flys.artifacts.model.WMSLayerFacet;
 import de.intevation.flys.artifacts.resources.Resources;
 import de.intevation.flys.artifacts.states.DefaultState.ComputeType;
+import de.intevation.flys.utils.GeometryUtils;
 
 
 public class RiverAxisState extends OutputState {
@@ -23,6 +30,9 @@
 
     public static final String WMS_LAYER_NAME = "riveraxis";
 
+    public static final String XPATH_RIVER_PROJECTION =
+        "/artifact-database/floodmap/river-wms[@river='%RIVER%']/@srid";
+
 
     private static final Logger logger = Logger.getLogger(RiverAxisState.class);
 
@@ -69,8 +79,21 @@
 
         facet.addLayer(WMS_LAYER_NAME);
 
-        // TODO determine extent based on the given geometry
-        facet.setExtent("6.5 49.1 7.0 49.7");
+        RiverAxis axis = RiverAxis.getRiverAxis(river);
+        if (axis != null) {
+            // TODO Take the correct EPSG into account. Maybe, we need to
+            // reproject the geometry.
+            Geometry geom   = axis.getGeom().getBoundary();
+            String   bounds = GeometryUtils.jtsBoundsToOLBounds(geom);
+
+            logger.debug("River '" + river + "' bounds: " + bounds);
+
+            facet.setExtent(bounds);
+        }
+
+        String xpath = XPATH_RIVER_PROJECTION.replace("%RIVER%", river);
+        String srid  = Config.getStringXPath(xpath);
+        facet.setSrid(srid);
 
         facets.add(facet);
 

http://dive4elements.wald.intevation.org