comparison 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
comparison
equal deleted inserted replaced
1051:9a77a9adbb36 1052:eeebf8514c7f
1 package de.intevation.flys.artifacts.states; 1 package de.intevation.flys.artifacts.states;
2 2
3 import java.util.List; 3 import java.util.List;
4 import java.util.Map; 4 import java.util.Map;
5
6 import com.vividsolutions.jts.geom.Geometry;
5 7
6 import org.apache.log4j.Logger; 8 import org.apache.log4j.Logger;
7 9
8 import de.intevation.artifacts.CallContext; 10 import de.intevation.artifacts.CallContext;
9 import de.intevation.artifacts.CallMeta; 11 import de.intevation.artifacts.CallMeta;
10 12
13 import de.intevation.artifacts.common.utils.Config;
14
11 import de.intevation.artifactdatabase.state.Facet; 15 import de.intevation.artifactdatabase.state.Facet;
16
17 import de.intevation.flys.model.RiverAxis;
12 18
13 import de.intevation.flys.artifacts.FLYSArtifact; 19 import de.intevation.flys.artifacts.FLYSArtifact;
14 import de.intevation.flys.artifacts.context.FLYSContext; 20 import de.intevation.flys.artifacts.context.FLYSContext;
15 import de.intevation.flys.artifacts.model.WMSLayerFacet; 21 import de.intevation.flys.artifacts.model.WMSLayerFacet;
16 import de.intevation.flys.artifacts.resources.Resources; 22 import de.intevation.flys.artifacts.resources.Resources;
17 import de.intevation.flys.artifacts.states.DefaultState.ComputeType; 23 import de.intevation.flys.artifacts.states.DefaultState.ComputeType;
24 import de.intevation.flys.utils.GeometryUtils;
18 25
19 26
20 public class RiverAxisState extends OutputState { 27 public class RiverAxisState extends OutputState {
21 28
22 public static final String I18N_DESCRIPTION = "floodmap.riveraxis"; 29 public static final String I18N_DESCRIPTION = "floodmap.riveraxis";
23 30
24 public static final String WMS_LAYER_NAME = "riveraxis"; 31 public static final String WMS_LAYER_NAME = "riveraxis";
32
33 public static final String XPATH_RIVER_PROJECTION =
34 "/artifact-database/floodmap/river-wms[@river='%RIVER%']/@srid";
25 35
26 36
27 private static final Logger logger = Logger.getLogger(RiverAxisState.class); 37 private static final Logger logger = Logger.getLogger(RiverAxisState.class);
28 38
29 39
67 getID(), hash, 77 getID(), hash,
68 url); 78 url);
69 79
70 facet.addLayer(WMS_LAYER_NAME); 80 facet.addLayer(WMS_LAYER_NAME);
71 81
72 // TODO determine extent based on the given geometry 82 RiverAxis axis = RiverAxis.getRiverAxis(river);
73 facet.setExtent("6.5 49.1 7.0 49.7"); 83 if (axis != null) {
84 // TODO Take the correct EPSG into account. Maybe, we need to
85 // reproject the geometry.
86 Geometry geom = axis.getGeom().getBoundary();
87 String bounds = GeometryUtils.jtsBoundsToOLBounds(geom);
88
89 logger.debug("River '" + river + "' bounds: " + bounds);
90
91 facet.setExtent(bounds);
92 }
93
94 String xpath = XPATH_RIVER_PROJECTION.replace("%RIVER%", river);
95 String srid = Config.getStringXPath(xpath);
96 facet.setSrid(srid);
74 97
75 facets.add(facet); 98 facets.add(facet);
76 99
77 return null; 100 return null;
78 } 101 }

http://dive4elements.wald.intevation.org