tim@455: /** tim@455: * tim@455: */ tim@455: package de.intevation.gnv.math; tim@455: tim@455: import java.util.Collection; tim@455: tim@455: import org.apache.log4j.Logger; tim@455: tim@455: import com.vividsolutions.jts.geom.Coordinate; tim@455: tim@455: import de.intevation.gnv.geobackend.base.Result; tim@455: import de.intevation.gnv.geobackend.base.query.QueryExecutor; tim@455: import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory; tim@455: import de.intevation.gnv.geobackend.base.query.exception.QueryException; tim@455: tim@455: tim@455: /** tim@455: * @author Tim Englich tim@455: * tim@455: */ tim@455: public class QueriedXYDepth implements XYDepth { tim@455: tim@455: /** tim@455: * the logger, used to log exceptions and additonaly information tim@455: */ tim@455: private static Logger log = Logger.getLogger(QueriedXYDepth.class); tim@455: tim@455: private String queryID = "rasterQuery"; tim@455: tim@455: private QueryExecutor queryExecutor = null; tim@455: tim@455: /** tim@455: * Constructor tim@455: */ tim@455: public QueriedXYDepth() { tim@455: this.queryExecutor = QueryExecutorFactory.getInstance().getQueryExecutor(); tim@455: } tim@455: tim@455: /** tim@455: * @see de.intevation.gnv.math.XYDepth#depth(com.vividsolutions.jts.geom.Coordinate) tim@455: */ tim@455: public double depth(Coordinate coordinate) { tim@455: log.debug("QueriedXYDepth.depth for " + coordinate.x+" "+ coordinate.y); tim@455: double resultValue = 0; tim@455: Collection result = null; tim@455: try { tim@455: String[] filterValues = new String[]{"Point ("+coordinate.x+" "+coordinate.y+")"}; tim@455: result = this.queryExecutor.executeQuery(this.queryID,filterValues); tim@455: } catch (QueryException e) { tim@455: log.error(e,e); tim@455: } tim@455: tim@455: if (result != null){ tim@455: if (!result.isEmpty()){ tim@455: Result row = result.iterator().next(); tim@455: resultValue = row.getDouble(0); tim@455: }else{ tim@455: resultValue = Double.NaN; tim@455: } tim@455: }else{ tim@455: resultValue = Double.NaN; tim@455: } tim@455: return resultValue; tim@455: } tim@455: tim@455: }