Mercurial > dive4elements > river
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);