ingo@1115: /* ingo@1115: * Copyright (c) 2010 by Intevation GmbH ingo@1115: * ingo@1115: * This program is free software under the LGPL (>=v2.1) ingo@1115: * Read the file LGPL.txt coming with the software for details ingo@1115: * or visit http://www.gnu.org/licenses/ if it does not exist. ingo@1115: */ ingo@1115: ingo@1078: package de.intevation.gnv.statistics; ingo@1078: ingo@1078: import com.vividsolutions.jts.geom.Point; ingo@1078: import com.vividsolutions.jts.io.ParseException; ingo@1078: import com.vividsolutions.jts.io.WKTReader; ingo@1078: ingo@1078: import de.intevation.gnv.geobackend.base.Result; ingo@1078: import de.intevation.gnv.geobackend.base.ResultDescriptor; ingo@1078: ingo@1078: import de.intevation.gnv.utils.DistanceCalculator; ingo@1078: ingo@1078: import java.sql.SQLException; ingo@1078: ingo@1078: import org.apache.log4j.Logger; ingo@1078: ingo@1078: /** ingo@1078: * @author Ingo Weinzierl ingo@1078: */ ingo@1078: public class HorizontalProfileVectorStatistics ingo@1078: extends VectorStatistics ingo@1078: { ingo@1078: ingo@1078: private static Logger logger = ingo@1078: Logger.getLogger(HorizontalProfileVectorStatistics.class); ingo@1078: ingo@1078: private WKTReader wktReader = new WKTReader(); ingo@1078: ingo@1078: private double distance; ingo@1078: ingo@1078: ingo@1078: public HorizontalProfileVectorStatistics() { ingo@1078: distance = 0; ingo@1078: } ingo@1078: ingo@1078: ingo@1078: protected void clear() { ingo@1078: distance = 0; ingo@1078: } ingo@1078: ingo@1078: ingo@1078: protected int getValueIdx(ResultDescriptor rd) { ingo@1078: return rd.getColumnIndex("YORDINATE"); ingo@1078: } ingo@1078: ingo@1078: ingo@1078: protected double calculateXOrdinateValue(Result prev, Result row) ingo@1078: throws SQLException ingo@1078: { ingo@1078: try { ingo@1078: Point start = (Point) wktReader.read(prev.getString("SHAPE")); ingo@1078: Point current = (Point) wktReader.read(row.getString("SHAPE")); ingo@1078: ingo@1078: double delta = DistanceCalculator.calculateDistance(start, current); ingo@1078: ingo@1078: distance = !Double.isNaN(delta) ? distance + delta : distance; ingo@1078: } ingo@1078: catch (ParseException e) { ingo@1078: logger.error(e,e); ingo@1078: } ingo@1078: return distance; ingo@1078: } ingo@1078: } ingo@1078: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :