Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java @ 657:af3f56758f59
merged gnv-artifacts/0.5
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 28 Sep 2012 12:13:53 +0200 |
parents | e964a3d8f7bc |
children | 9a828e5a2390 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java Fri Sep 28 12:13:53 2012 +0200 @@ -0,0 +1,86 @@ +/** + * + */ +package de.intevation.gnv.statistics; + +import java.sql.SQLException; +import java.util.Collection; + +import org.apache.log4j.Logger; + +import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.io.ParseException; +import com.vividsolutions.jts.io.WKTReader; + +import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.state.describedata.KeyValueDescibeData; +import de.intevation.gnv.utils.DistanceCalculator; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class HorizontalProfileStatistics extends TimeseriesStatistics { + + private static Logger log = Logger.getLogger(HorizontalProfileStatistics.class); + + private WKTReader wktReader = new WKTReader(); + + private DistanceCalculator dc = new DistanceCalculator(); + + private double distance = 0; + + /** + * Constructor + */ + public HorizontalProfileStatistics() { + super(); + } + + /** + * @see de.intevation.gnv.statistics.TimeseriesStatistics#calculateXOrdinateValue(de.intevation.gnv.geobackend.base.Result, de.intevation.gnv.geobackend.base.Result) + */ + @Override + protected double calculateXOrdinateValue(Result previousRow,Result row) + throws SQLException { + try { + Point start = (Point)this.wktReader.read(previousRow.getString("SHAPE")); + Point current = (Point)this.wktReader.read(row.getString("SHAPE")); + double delta = this.dc.calculateDistance(start, current); + + if (!Double.isNaN(delta)){ + this.distance = this.distance + delta; + } + } catch (ParseException e) { + log.error(e,e); + } + return this.distance; + } + + /** + * @see de.intevation.gnv.statistics.TimeseriesStatistics#generateStatisticsName(java.lang.String, java.lang.String, java.lang.String, java.util.Collection, java.util.Collection, java.util.Collection) + */ + @Override + protected String generateStatisticsName( + String break1, + String break2, + String break3, + Collection<KeyValueDescibeData> parameters, + Collection<KeyValueDescibeData> measurements, + Collection<KeyValueDescibeData> dates) { + return (this.findValueTitle(parameters, break1)+ " "+ + this.findValueTitle(measurements,break2)).trim()+" "+ + this.findValueTitle(dates,break3); + } + + /** + * @see de.intevation.gnv.statistics.TimeseriesStatistics#clearStatistics() + */ + @Override + protected void clearStatistics() { + log.debug("HorizontalProfileStatistics.clearStatistics"); + super.clearStatistics(); + this.distance = 0; + } + +}